From 159808cd32a003aac90201b709e2bfad64d592ac Mon Sep 17 00:00:00 2001 From: Jakob Jorgensen Date: Tue, 6 Feb 2018 09:49:33 +0000 Subject: [PATCH] Added all files. --- Amf.m | 20 + Contents.m | 64 + Pirate.tif | Bin 0 -> 266896 bytes c/tools.c | 488 +++ c/tools.h | 88 + c/tv_core.c | 617 ++++ c/tv_core.h | 10 + c/tvreg_gpbb_c.c | 181 ++ c/tvreg_upn_c.c | 204 ++ externlib/libut.lib | Bin 0 -> 474884 bytes install.m | 75 + lebdir/getHalf.m | 32 + lebdir/getLebedevDirections.m | 15 + lebdir/getLebedevSphere.m | 5359 +++++++++++++++++++++++++++++++++ readme.txt | 93 + suptitle.m | 116 + tomobox/buildSystemMatrix.m | 170 ++ tomobox/getNoise.m | 19 + tomobox/phantom3d.m | 224 ++ tomobox/plotLayers.m | 39 + tomobox/tomoboxDemo1.m | 77 + tomobox/traceRays.m | 146 + tvreg_demo1.m | 141 + tvreg_demo2.m | 148 + tvreg_demo3.m | 146 + tvreg_gpbb.m | 224 ++ tvreg_upn.m | 286 ++ 27 files changed, 8982 insertions(+) create mode 100644 Amf.m create mode 100644 Contents.m create mode 100644 Pirate.tif create mode 100644 c/tools.c create mode 100644 c/tools.h create mode 100644 c/tv_core.c create mode 100644 c/tv_core.h create mode 100644 c/tvreg_gpbb_c.c create mode 100644 c/tvreg_upn_c.c create mode 100644 externlib/libut.lib create mode 100644 install.m create mode 100644 lebdir/getHalf.m create mode 100644 lebdir/getLebedevDirections.m create mode 100644 lebdir/getLebedevSphere.m create mode 100644 readme.txt create mode 100644 suptitle.m create mode 100644 tomobox/buildSystemMatrix.m create mode 100644 tomobox/getNoise.m create mode 100644 tomobox/phantom3d.m create mode 100644 tomobox/plotLayers.m create mode 100644 tomobox/tomoboxDemo1.m create mode 100644 tomobox/traceRays.m create mode 100644 tvreg_demo1.m create mode 100644 tvreg_demo2.m create mode 100644 tvreg_demo3.m create mode 100644 tvreg_gpbb.m create mode 100644 tvreg_upn.m diff --git a/Amf.m b/Amf.m new file mode 100644 index 0000000..ed1d68d --- /dev/null +++ b/Amf.m @@ -0,0 +1,20 @@ +function y = Amf(A, x, direction) +% +% Evaluates the following based on direction +% +% direction = 0 : return size(A) +% direction = 1 : returns A*x +% direction = 2 : returns A'*x +% + +if direction == 0 + y = size(A); +elseif direction == 1 + y = A*x; +elseif direction == 2 + y = A'*x; +else + warning('Amf: No such direction'); +end + + \ No newline at end of file diff --git a/Contents.m b/Contents.m new file mode 100644 index 0000000..07a95ca --- /dev/null +++ b/Contents.m @@ -0,0 +1,64 @@ +% TVReg. +% Version 1.1 2015-04-05. +% Version 0.8 2009-08-31. +% Copyright (c) 2010 by T.L. Jensen, J.H. Jorgensen, +% P.C. Hansen and S.H. Jensen +% +% Requires Matlab version 7.5 or later versions. +% +% These functions accompany the paper +% Practical Implementation of Optimal First-Order Method +% for Total Variation Regularization in Tomography +% +% Demonstration. +% tvreg_demo1 - Demonstration for a tomography problem +% tvreg_demo2 - Demonstrates for a deblurring problem +% tvreg_demo3 - Demonstration for a tomography problem using +% a call back function +% +% Pirate.tif - Test image +% +% TV reconstruction functions. +% tvreg_gpbb - Uses a gradient projection algorithm with +% Borzilai-Borwein strategy +% tvreg_upn - Based on an optimal first-order method as +% as described by Yurii Nesterov with modification +% for unknown parameters. +% +% +% Files from tomobox by J.H. Jorgensen +% tomobox/buildSystemMatrix - Setup system matrix for 3D parallel beam +% tomography +% tomobox/getNoise - Create white noise with specified relative +% noise level +% tomobox/phantom3d - Three-dimensional analogue of MATLAB +% Shepp-Logan phantom +% tomobox/plotLayers - Show the layers of 3D array in subplots +% tomobpx/tomoboxDemo1 - Demo script for tomobox +% tomobox/traceRays - Determine voxels and path lengts for +% parallel rays (auxiliary function for +% buildSystemMatrix) +% +% Files for choosing projection directions +% lebdir/getLebedevDirections - Get unit vectors well spread +% out over sphere +% lebdir/getHalf - Discard duplicate vectors +% differing only by the sign +% (auxiliary function for +% getLebedevDirections) +% lebdir/getLebedevSphere - function to compute normalized +% points and weights for Lebedev +% quadratures on the surface of +% the unit sphere at double +% precision. (auxiliary function +% for getLebedevDirections) +% +% Auxiliary files. +% install - Installation script for all platforms +% +% Directories. +% c - The C functions for TV reconstruction +% externlib - Contains the library file libut.lib +% lebdir - Contains files for computing the Lebedec directions used in +% the tomography demo +% tomobox - Contains the tomography simulation files diff --git a/Pirate.tif b/Pirate.tif new file mode 100644 index 0000000000000000000000000000000000000000..2a98fce85ac3af8213a22345f4d52fe1ab828572 GIT binary patch literal 266896 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%0DLa?DGCY5B8=XXID*buWLiWHXvf|_m>qFjdsTQb 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 z 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 literal 0 HcmV?d00001 diff --git a/c/tools.c b/c/tools.c new file mode 100644 index 0000000..b214922 --- /dev/null +++ b/c/tools.c @@ -0,0 +1,488 @@ +#include +#include +#include +#include +#include +#include "tools.h" + +/* Used at trp as the relatice accuracy needed*/ +#define NTTOL_REL 1e-4 + +#ifdef BLAS + +extern double ddot_(int *n, double *x, int *incx, double *y, int *incy); +extern double dnrm2_(int *n, double *x, int *incx); +extern void daxpy_(int *n, double *alpha, double *x, int *incx, double *y, int *incy); +extern void dcopy_(int *p_n,double *p_x,int *incx,double *p_y,int *incy); + +#else + +/* Only implements the simplest version of ddot which is used in this code + here, with incrx and incry = 1 hardcoded */ +double ddot_(int *p_n, double *p_x, int *incx, double *p_y, int *incy) +{ + register int i, n; + register double *x, *y; + register double ddot = 0; + x = p_x; + y = p_y; + n = *p_n; + for (i = 0; i < n; ++i) + ddot += (*x++)*(*y++); + + return ddot; +} + +double dnrm2_(int *p_n, double *p_x, int *incx) +{ + register int i,n; + register double *x; + register double nrm2 = 0; + + + x = p_x; + n = *p_n; + + for (i = 0; i < n; ++i){ + nrm2 += (*x)*(*x); + x++; + } + + return sqrt(nrm2); +} + +/* Only implements the simplest version of daxpy which is used in this code + here, with incrx and incry = 1 hardcoded. *y points at the results (overwrite) */ +void daxpy_(int *p_n, double *p_alpha, double *p_x, int *incx, double *p_y, int *incy) +{ + register int i, n; + register double *x, *y,alpha; + x = p_x; + y = p_y; + n = *p_n; + alpha = *p_alpha; + + for (i = 0; i < n; ++i){ + *y = alpha*(*x) + (*y); + y++;x++; + } +} + +void dcopy_(int *p_n,double *p_x,int *incx,double *p_y,int *incy){ + register int i, n; + register double *x, *y; + x = p_x; + y = p_y; + n = *p_n; + + for (i = 0; i < n; ++i){ + *y = *x; + y++;x++; + } +} +#endif + + + +double minf(double *x,int N){ + double c; + int i; + + c = x[0]; + + for(i=1;ic) + c = x[i]; + + return c; +} + +/* Functions used for the inverse problems using Nesterov or BB method + Project onto the feasible (convex) set. + c==1: Unconstrained. + c==2: Lower and upper bounds (elementwise) on x. Inplace. */ +void P(double *y,int ctype,double *d,double *c,int mnl){ + if(ctype==2){ /* c <= x <= d (elementwise) */ + register int i=0; + for(i=0;id[i]) + y[i]=d[i]; + } + } +} + +/* Function used to calculate operations involving D and D^T*/ +double DTD(double *x,double *Nablafx, double *uijl, double tau, Dtype D){ + + register int i,u,v,w,i1,i2,i3,i4,mn,mnl,s1,s2,s3,s4; + double tv_tau_x=0,c1,c2,taud2=tau/2,tau2=1/(tau*2); + + /* Clear the current gradient */ + for (i=0; ic1){ + c2 =tau; + tv_tau_x += c1*c1*tau2; + } + else{ + c2 = c1; + tv_tau_x += c1-taud2; + } + + uijl[0] = uijl[0]/c2; + uijl[1] = uijl[1]/c2; + uijl[2] = uijl[2]/c2; + + Nablafx[i1] += uijl[0]; + Nablafx[i4] -= uijl[0]+uijl[1]+uijl[2]; + Nablafx[i2] += uijl[1]; + Nablafx[i3] += uijl[2]; + + } + } + } + } + else{printf("Incorrect dim variable, only dim=2 or dim=3 supported.\n");} + + return tv_tau_x; +} + + +/* Implements multiplication with A and AT + + If A is sparse: + using the definition of sparse structures as in Matlab. The Atype is a struct holding the values Av, and the corresponding rows Ar. The array Ac hold + the number of non-zero elements as the difference between two + indexes in Ac + + If A is a PSF: + implements a two dimentional PSF with reflective boundary conditions + + If A is a function: + call back +*/ + +void Amul(Atype A, double *x, double *y){ + register int j,i,jc,ic,nnzc,ki,kj,ii,jj,m,n,mm,nn; + int one=1; + double done=1.0; + double sum; + mxArray *lhs; + mxArray *rhs[3]; + + + if(A.sparseOrPSFOrMF==0){ /* defines a sparse matrix*/ + j = 0; + i = 0; + for(jc=1;jc<=A.Anc;jc++){ + nnzc = A.Ac[jc]-A.Ac[jc-1]; + for(ic=0;ic=0;mm--){ + m++; + + /*Reflective boundary conditions*/ + ii = i +(m-A.center[0]+1); + if(ii<0){ii=-ii;} + if(ii>=A.xu){ii=A.xu-(ii-A.xu)-1;} + + n=-1; + for(nn=A.PSFnc-1;nn>=0;nn--){ + n++; + + jj = j +(n-A.center[1]+1); + + /*Reflective boundary conditions*/ + if(jj<0){jj=-jj;} + if(jj>=A.xv){jj=A.xv-(jj-A.xv)-1;} + + sum +=x[ii+jj*A.xu]*A.PSF[mm+nn*A.PSFnr]; + + + /* zero-boundary condition*/ + /*if(ii>=0 && jj>=0 && ii=0;mm--){ + m++; + + /*Reflective boundary conditions*/ + ii = i +(m-A.center[0]+1); + if(ii<0){ii=-ii;} + if(ii>=A.xu){ii=A.xu-(ii-A.xu)-1;} + + n=-1; + for(nn=A.PSFnc-1;nn>=0;nn--){ + n++; + + + jj = j +(n-A.center[1]+1); + + /*Reflective boundary conditions*/ + if(jj<0){jj=-jj;} + if(jj>=A.xv){jj=A.xv-(jj-A.xv)-1;} + + y[ii+jj*A.xu] +=x[i+j*A.xu]*A.PSF[mm+nn*A.PSFnr]; + + } + + } + } + } + } + else{ /* matrix free*/ + + rhs[0] = A.mf; + rhs[1] = mxCreateDoubleMatrix(A.Anr, 1, mxREAL); + memcpy(mxGetPr(rhs[1]), x, A.Anr*sizeof(double)); + rhs[2] = mxCreateDoubleScalar(2); + + mexCallMATLAB(1, &lhs, 3, rhs, "feval"); + + if( mxGetM(lhs) != A.Anc && mxGetN(lhs) != 1 ) + printf("mex:Expected an %d x %d but got a %d x %d\n", + A.Anc, 1, mxGetM(lhs), mxGetN(lhs)); + else + daxpy_(&A.Anc, &done, mxGetPr(lhs), &one, y, &one); + + + /* To make it modular: relese the mx array. */ + mxDestroyArray(lhs); + mxDestroyArray(rhs[1]); + } + + +} + +/*Function for linked lists */ + + +listelement *AddItem(listelement* listpointer, int data){ + + listelement * lp = listpointer; + + if (listpointer != NULL) { + while (listpointer -> link != NULL) + listpointer = (listelement *) listpointer -> link; + + listpointer -> link = (struct listelement *) malloc (sizeof (listelement)); + listpointer = (listelement *) listpointer -> link; + listpointer -> link = NULL; + listpointer -> dataitem = data; + return lp; + } + else { + listpointer = (listelement *) malloc (sizeof (listelement)); + listpointer -> link = NULL; + listpointer -> dataitem = data; + return listpointer; + } +} + +listelement *RemoveItem(listelement* listpointer) { + + listelement * tempp; + tempp = (listelement *) listpointer -> link; + free (listpointer); + return tempp; +} + + +void ClearQueue(listelement* listpointer){ + + while (listpointer != NULL) { + listpointer = RemoveItem(listpointer); + } +} + +void PrintQueue (listelement* listpointer) { + + if (listpointer == NULL) + printf ("queue is empty!\n"); + else + while (listpointer != NULL) { + printf ("%d\t", listpointer -> dataitem); + listpointer = (listelement *) listpointer -> link; + } + printf ("\n"); +} + + +int QueueLength(listelement* listpointer){ + + int l=0; + + if (listpointer == NULL) + return 0; + else{ + while (listpointer != NULL) { + l++; + listpointer = (listelement *) listpointer -> link; + } + return l; + + } + + /* if (listpointer == NULL) + printf ("queue is empty!\n"); + else + while (listpointer != NULL) { + printf ("%d\t", listpointer -> dataitem); + listpointer = (listelement *) listpointer -> link; + } + printf ("\n"); + + return 0;*/ +} + +void WriteQueueData(listelement* listpointer, double* rp, int l){ + + int i=-1; + + while (listpointer != NULL) { + if(i != -1){ /*dont write the first element, since its a dummy */ + rp[i] = (double) listpointer->dataitem; + } + listpointer = (listelement *) listpointer->link; + i++; + } +} diff --git a/c/tools.h b/c/tools.h new file mode 100644 index 0000000..1c4c47b --- /dev/null +++ b/c/tools.h @@ -0,0 +1,88 @@ +#ifndef __TOOLS__ +#define __TOOLS__ + +#include + +#if (defined(_WIN32) || defined(__WIN32__) ) +#define DRAW mexEvalString("drawnow;"); +#else +#define DRAW ; +#endif + +#define MAX(A,B) ((A)>(B)?(A):(B)) +#define MIN(A,B) ((A)<(B)?(A):(B)) + + +typedef struct{ + int sparseOrPSFOrMF; + /* Defines whether its a sparse, PSF, or matrix function, + sparse=0, PSF=1, MF=2 */ + + /* Definitions for sparse */ + double *Av; + mwIndex *Ar; + mwIndex *Ac; + + /* Definitions for PSF */ + double *PSF; + int PSFnr; + int PSFnc; + double *center; + int xu,xv; + + /* Definitions for function handle for matrix free procedure */ + mxArray *mf; + + /* Definitions for all */ + int Anc; + int Anr; + + +} Atype; + +typedef struct{ + int dim; + int m,n,l; + int prodDims; +} Dtype; + + +typedef struct{ + int dataitem; + struct listelement *link; +} listelement; + + +double minf(double *x,int N); + +double maxf(double *x,int n,int N); + +double ddot_(int *n, double *x, int *incx, double *y, int *incy); + +double dnrm2_(int *n, double *x, int *incx); + +void daxpy_(int *n, double *alpha, double *x, int *incx, double *y, int *incy); + +void dcopy_(int *p_n,double *p_x,int *incx,double *p_y,int *incy); + +void P(double *y,int c,double *l,double *u,int N23); + +double DTD(double *x,double *Nablafx, double *uijl, double tau, Dtype D); + +void Amul(Atype A, double *x, double *y); + +void ATmul(Atype A, double *x, double *y); + +listelement *AddItem(listelement *listpointer, int data); + +void ClearQueue(listelement *listpointer); + +void PrintQueue(listelement * listpointer); + +int QueueLength(listelement *listpointer); + +void WriteQueueData(listelement *listpointer, double *rp, int l); + +listelement *RemoveItem(listelement *listpointer); + +#endif diff --git a/c/tv_core.c b/c/tv_core.c new file mode 100644 index 0000000..1d468fa --- /dev/null +++ b/c/tv_core.c @@ -0,0 +1,617 @@ +#include +#include +#include +#include "tools.h" + +/* Settings which makes the user do a CTRL-C break out of the loop */ +#if defined(LIBUT) && (defined(_WIN32) || defined(__WIN32__) ) + +#define STOPMARK utIsInterruptPending() +#define INITBREAK ; +bool utIsInterruptPending(void); + +#else + +#include +#define INITBREAK sigint_cont = 1; (void) signal(SIGINT , ex_sigint); +#define STOPMARK sigint_cont==0 +int sigint_cont = 1; +void ex_sigint(int sig) { + sigint_cont = 0; +} +#endif + +void tvreg_gpbb_core(double *xk,double *fxk,double *hxk,double *gxk,double *fxkl,double *kend,Atype A,double *b,double alpha,double tau,double epsb_rel,int k_max,Dtype D,int ctype,double *d,double *c, int ghxl, int xl,double *hxkl,double *gxkl,double *xlist,int K, double beta, double sigma,int verbose,double* numGrad,double* numBack,double* numFunc){ + + double *xkp1,*xkm1,*Nablafxkp1,*Nablafxk,*Nablafxkm1,*dNablaf,*dx,*uijl,*tv,*tv2; + + double fxkp1,hxkp1,gxkp1,fr,nGt,t,den,B,betat,alphat,Nablafc; + int i, j, k=0,prodDims,stop=0,one=1,counter,start; + + INITBREAK + + prodDims=D.prodDims; + + Nablafxk = malloc(prodDims*sizeof(double)); + Nablafxkm1 = malloc(prodDims*sizeof(double)); + Nablafxkp1 = malloc(prodDims*sizeof(double)); + + dNablaf = malloc(prodDims*sizeof(double)); + + xkp1 = malloc(prodDims*sizeof(double)); + xkm1 = malloc(prodDims*sizeof(double)); + dx = malloc(prodDims*sizeof(double)); + + + /*temp vectors */ + tv = malloc(prodDims*sizeof(double)); + tv2 = malloc(A.Anr*sizeof(double)); + uijl = malloc(D.dim*sizeof(double)); + + + /* INITIALIZE */ + /* Project solution onto feasible space */ + P(xk,ctype,d,c,prodDims); + numGrad[0]=0;numBack[0]=0;numFunc[0]=0; + + + /* LOOP */ + stop = 0; /*Flag for when to break the for-loop*/ + + for(k=0; k<=k_max; k++){ + + if(k==0){ + /* Calculate the gradient in xk */ + hxk[0] = alpha*DTD(xk,Nablafxk,uijl,tau,D); + + for(i=0;i0){ + for(i=0;i0){ + den = ddot_(&prodDims,dNablaf,&one,dx,&one); + if(den < 1e-25){ + den = 1e-25; + printf("Small denuminator"); + } + alphat = dnrm2_(&prodDims,dx,&one); + alphat = alphat*alphat/den; + } + else{ + alphat = 1; + } + + /* Take the projected step from xk to xkp1 */ + t = - alphat; + dcopy_(&prodDims,xk,&one,xkp1,&one); + daxpy_(&prodDims,&t,Nablafxk,&one,xkp1,&one); + + P(xkp1,ctype,d,c,prodDims); + + for(i=0;i fr -sigma*Nablafc) && counter < 14){ + numBack[0]+=1; + counter++; + betat = betat*betat; + + /* Take the projected step from xk to xkp1 */ + t = - alphat*betat; + dcopy_(&prodDims,xk,&one,xkp1,&one); + daxpy_(&prodDims,&t,Nablafxk,&one,xkp1,&one); + + P(xkp1,ctype,d,c,prodDims); + + for(i=0;i fyk + ddot_(&prodDims,Nablafyk,&one,tv,&one) + (bL/2)*pow(dnrm2_(&prodDims,tv,&one),2) ){ + numBack[0]+=1; + bL = s_L*bL; + + /* Take the projected step from yk to xkp1 */ + t = - 1/bL; + dcopy_(&prodDims,yk,&one,xkp1,&one); + daxpy_(&prodDims,&t,Nablafyk,&one,xkp1,&one); + P(xkp1,ctype,d,c,prodDims); + + /* Backtracking on Lipschitz parameter. */ + for(i=0;i fyk + ddot_(&prodDims,Nablafyk,&one,tv,&one) + (bL/2)*pow(dnrm2_(&prodDims,tv,&one),2) ){ + numBack[0]+=1; + bL = s_L*bL; + + /* Take the projected step from yk to xkp1 */ + t = - 1/bL; + dcopy_(&prodDims,yk,&one,xkp1,&one); + daxpy_(&prodDims,&t,Nablafyk,&one,xkp1,&one); + P(xkp1,ctype,d,c,prodDims); + + /* Backtracking on Lipschitz parameter. */ + for(i=0;i0){ + if(nGt*nGt> cumprod*(4*bL/bmu-bL/Lm1+4*gamma0*bL/pow(bmu,2))*nGtm1*nGtm1){ + /*printf("not fast enough %d\n",kk);*/ + /*printf("%f %f %f %f\n",nGt,nGtm1*nGtm1,cumprod,(4*bL/bmu-bL/Lm1+4*gamma0*bL/pow(bmu,2)));*/ + + /*list of restart positions */ + p_rp = AddItem(p_rp,kk); + + bmu=bmu*s_mu; + numRest[0]+=1; + goto restart; + } + } + } + /*printf("%f\n",q);DRAW;*/ + + thetakp1 = (-(pow(thetak,2)-q)+sqrt(pow( pow(thetak,2)-q,2)+4*pow(thetak,2)))/2.0; + betak = (thetak*(1-thetak))/(pow(thetak,2)+thetakp1); + + if(k==0){ + gamma0 = thetakp1*(thetakp1*bL-bmu)/(1-thetakp1); + /*printf("gamma0 %f\n",gamma0);*/ + } + + if(qs==2) + dcopy_(&prodDims,xkp1,&one,yk,&one); + else{ + /* accelerated term*/ + /* yk = xkp1 + betak*(xkp1-xk) */ + for(i=0;i +#include "tools.h" +#include "tv_core.h" + + +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) +{ + register double *b,*d,*c,*x,*dims,alpha,tau,gamma_rel,*hxkl,*gxkl,*xlist; + register double *xk,*fxk,*hxk,*gxk,*fxkl,*k,beta,sigma,*numGrad,*numBack,*numFunc; + mxArray *dims_lhs; + mxArray *dims_rhs[3]; + double *dimsp; + + mxArray *M,*S,*Mdims; + int i,j,k_max,N,dim,prodDims,one=1,ctype,ghxl,xl,K,verbose; + Atype A; + Dtype D; + + if(nrhs != 17){ + mexErrMsgTxt("Should contain 17 input parameters\n");} + else{ + if(mxIsStruct(prhs[0])){ + A.sparseOrPSFOrMF = 1; + M = mxGetField(prhs[0], 0, "center"); + A.center = mxGetPr(M); + + M = mxGetField(prhs[0], 0, "PSF"); + A.PSF = mxGetPr(M); + A.PSFnr = mxGetM(M); + A.PSFnc = mxGetN(M); + } + else if(mxIsClass(prhs[0] , "function_handle")){ + A.sparseOrPSFOrMF = 2; + dims_rhs[0] = (mxArray*)prhs[0]; + dims_rhs[1] = mxCreateDoubleScalar(0.0); + dims_rhs[2] = mxCreateDoubleScalar(0.0); + + mexCallMATLAB(1, &dims_lhs, 3, dims_rhs, "feval"); + dimsp = mxGetPr(dims_lhs); + + /* save for later */ + A.mf = (mxArray*) prhs[0]; + A.Anr = (int)dimsp[0]; + A.Anc = (int)dimsp[1]; + } + else{ + A.sparseOrPSFOrMF = 0; + M = (mxArray*)prhs[0]; /* Pointer to matrix structure*/ + A.Av = mxGetPr(M); /* set the nessecary values in a struct*/ + A.Ar = mxGetIr(M); + A.Ac = mxGetJc(M); + A.Anc = mxGetN(M); + A.Anr = mxGetM(M); + } + + + M = (mxArray*)prhs[1]; + b = mxGetPr(M); + + if(mxIsStruct(prhs[0])){ + A.Anr = mxGetM(M)*mxGetN(M); + } + + S = (mxArray*)prhs[2]; + alpha = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[3]; + tau = (double)(mxGetScalar(S)); + + Mdims = (mxArray*)prhs[4]; + dims = mxGetPr(Mdims); + + S = (mxArray*)prhs[5]; + gamma_rel = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[6]; + k_max = (int)(mxGetScalar(S)); + + M = (mxArray*)prhs[7]; + x = mxGetPr(M); + + if(mxIsStruct(prhs[0])){ + A.Anc = mxGetM(M)*mxGetN(M); + } + + S = (mxArray*)prhs[8]; + ctype = (int)(mxGetScalar(S)); + + M = (mxArray*)prhs[9]; + d = mxGetPr(M); + + M = (mxArray*)prhs[10]; + c = mxGetPr(M); + + S = (mxArray*)prhs[11]; + ghxl = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[12]; + xl = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[13]; + K = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[14]; + beta = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[15]; + sigma = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[16]; + verbose = (double)(mxGetScalar(S)); + + /*obtain the dimensions */ + + dim = MAX( mxGetM(Mdims), mxGetN(Mdims) ); + prodDims=1; + for(i=0;i +#include "tools.h" +#include "tv_core.h" + + +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) +{ + register double *b,*d,*c,*x,*dims,alpha,tau,bL,bmu,epsb_rel,*hxkp1l,*gxkp1l,*xlist; + register double *xkp1,*fxkp1,*hxkp1,*gxkp1,*fxkp1l,*k,*numGrad,*numBack,*numFunc,*numRest,*Lklist,*muklist,*rklist; + mxArray *M,*S,*Mdims; + int i,j,k_max,dim,prodDims,one=1,ctype,ghxl,xl,qs,verbose,rql,temp; + Atype A; + Dtype D; + listelement *p_rp; + mxArray *dims_lhs; + mxArray *dims_rhs[3]; + double *dimsp; + + p_rp = NULL; + p_rp = AddItem(p_rp, 0); /*Need to initialize to avoid pointer problems when passing to the core function*/ + + if(nrhs != 17){ + mexErrMsgTxt("Should contain 17 input parameters\n");} + else{ + + if(mxIsStruct(prhs[0])){ + A.sparseOrPSFOrMF = 1; + M = mxGetField(prhs[0], 0, "center"); + A.center = mxGetPr(M); + + M = mxGetField(prhs[0], 0, "PSF"); + A.PSF = mxGetPr(M); + A.PSFnr = mxGetM(M); + A.PSFnc = mxGetN(M); + } + else if(mxIsClass(prhs[0] , "function_handle")){ + A.sparseOrPSFOrMF = 2; + dims_rhs[0] = (mxArray*)prhs[0]; + dims_rhs[1] = mxCreateDoubleScalar(0.0); + dims_rhs[2] = mxCreateDoubleScalar(0.0); + + mexCallMATLAB(1, &dims_lhs, 3, dims_rhs, "feval"); + dimsp = mxGetPr(dims_lhs); + + /* save for later */ + A.mf = (mxArray*) prhs[0]; + A.Anr = (int)dimsp[0]; + A.Anc = (int)dimsp[1]; + } + else{ + A.sparseOrPSFOrMF = 0; + M = (mxArray*)prhs[0]; /* Pointer to matrix structure*/ + A.Av = mxGetPr(M); /* set the nessecary values in a struct*/ + A.Ar = mxGetIr(M); + A.Ac = mxGetJc(M); + A.Anc = mxGetN(M); + A.Anr = mxGetM(M); + } + + M = (mxArray*)prhs[1]; + b = mxGetPr(M); + + if(mxIsStruct(prhs[0])){ + A.Anr = mxGetM(M)*mxGetN(M); + } + + S = (mxArray*)prhs[2]; + alpha = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[3]; + tau = (double)(mxGetScalar(S)); + + Mdims = (mxArray*)prhs[4]; + dims = mxGetPr(Mdims); + + S = (mxArray*)prhs[5]; + bL = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[6]; + bmu = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[7]; + epsb_rel = (double)(mxGetScalar(S)); + + S = (mxArray*)prhs[8]; + k_max = (int)(mxGetScalar(S)); + + M = (mxArray*)prhs[9]; + x = mxGetPr(M); + + if(mxIsStruct(prhs[0])){ + A.Anc = mxGetM(M)*mxGetN(M); + } + + S = (mxArray*)prhs[10]; + ctype = (int)(mxGetScalar(S)); + + M = (mxArray*)prhs[11]; + d = mxGetPr(M); + + M = (mxArray*)prhs[12]; + c = mxGetPr(M); + + S = (mxArray*)prhs[13]; + ghxl = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[14]; + xl = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[15]; + qs = (int)(mxGetScalar(S)); + + S = (mxArray*)prhs[16]; + verbose = (int)(mxGetScalar(S)); + + /*obtain the dimensions */ + + dim = MAX( mxGetM(Mdims), mxGetN(Mdims) ); + prodDims=1; + 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 z zuc(J}^L<~arV+93ySHs95JZhx7O84jx$;O}stW0n_f<&Va4co^j~)c7#jN2JCUZt%zMJp)$TDs8eS&_$x8@r`zY=;ieTETS z4vo$%i&Q|87X(YUM`6CHB$CHDwobfY{S=#WjOq+q7O8tA=7N~}=8`$Ahja6NUnk7f z%L6IqRCS=UNX5g-r%zFqX07d8O6Jr#eFoGWKFR`%JF7^6!cMhiXOSvL;x5S7eQU)X zPANyrUBeVxoD)BbR5sEa8^qnW72Fl)7#L7@_&HV&-P~2^rtBJuA$y5$H<@FR zOBy=IhUT-3FqPCkIAkW=J;&o1IB-%*kWdTu{s;P1#HU=ZWuM)RV` zD+X_QyrMBXODaYe@G2U3J%w2#gcVBpxW?D=T~dZ&LZ`UerDV?^p+E(?_(SE48wIhe>^=o zdFA%SWH)ho>J2Z#UvJ;pZtJb?-#!=Lo8dor>x_DzfIoZ${Qt5)`aOaD_&=OiKFt4~ z#ML+c58r#d;XP7D9nj{Z&1{N{##*&I3ko*UmWMveau-~0%U mss1rX{3vw2`4O5+tM~LfYP4_hymM=(#;AS>|AjXxoBTg8p@cI4 literal 0 HcmV?d00001 diff --git a/install.m b/install.m new file mode 100644 index 0000000..78e7e06 --- /dev/null +++ b/install.m @@ -0,0 +1,75 @@ +%INSTALL Script used to install TVReg on the Windows/MAC/Linux platform. +% +% Compiles the mex files for the TVReg package. +% +% For Linux, tested with the gcc compiler. +% +% See readme.txt for further instructions. + + +args = ''; +com = computer; + +if strcmp(com(1:5), 'PCWIN') + % If you want to be able to break the execution of the programs, try to + % set CTRLCBREAK = 1, which uses a non-documented MATLAB API. + % If you do not have libut.lib in your Matlab dir, try CTRLCBREAK = 2. + % Default. + % + CTRLCBREAK=0; + + if CTRLCBREAK==0 + args = [args '']; + elseif CTRLCBREAK==1 + args = [args '-DLIBUT -L"' matlabroot + '\extern\lib\win32\lcc" -llibut']; + elseif CTRLCBREAK==2 + args = [args '-DLIBUT -Lexternlib -llibut']; + else + error('Not a valid option for CTRLCBREAK') + end +else % insert any unix compile args here + args = args; +end + +if strcmp(com(end-1:end), '64') + args = [args ' -largeArrayDims']; +else + args = [args ' -compatibleArrayDims']; +end + + +any_error = false; + +try + cs = sprintf('mex %s c/tvreg_upn_c.c c/tools.c c/tv_core.c ', args); + eval(cs) +catch ME + any_error= true; + rethrow(ME); + + disp('-------------------------------------------------------------------') + disp('You will not be able to use tvreg_upn because the compilation failed.') + disp('You may not have a working compiler installed or mex configured correctly.') + disp('Please check readme.txt for directions.') +end + + +try + cs = sprintf('mex %s c/tvreg_gpbb_c.c c/tools.c c/tv_core.c ', args); + eval(cs) +catch ME + any_error= true; + rethrow(ME); + + disp('-------------------------------------------------------------------') + disp('You will not be able to use tvreg_gpbb because the compilation failed.') + disp('You may not have a working compiler installed or mex configured correctly.') + disp('Please check readme.txt for directions.') +end + +if any_error == false + disp('Install completed successfully.') +else + disp('Installation did not complete successfully.') +end diff --git a/lebdir/getHalf.m b/lebdir/getHalf.m new file mode 100644 index 0000000..0134237 --- /dev/null +++ b/lebdir/getHalf.m @@ -0,0 +1,32 @@ +function P = getHalf(P) +%GETHALF Discard duplicate vectors differing only by the sign +% +% P = getHalf(P) takes 2*N times 3 array with unit vectors in rows and +% returns N times 3 array, where half the vectors have been removed. The +% removed vectors are equivalent to the remaining vectors except for their +% sign, which is opposite. +% +% getHalf is an auxiliary function for getLebedevDirections. + +PPT = P*P'; +[I,J] = find( abs(PPT+1) < 1e-10 ); +IJ = [I,J]; +sIJ = sortrows(IJ,1); +P2 = length(P)/2; + +list = zeros(P2,2); +visited = []; +listcount = 1; + +for k= 1:2*P2 + % check if visited + if any(visited==sIJ(k,1)) + % do nothing + else + list(listcount,:) = sIJ(k,:); + listcount = listcount+1; + visited = [visited,sIJ(k,:)]; + end +end + +P = P(list(:,1),:); diff --git a/lebdir/getLebedevDirections.m b/lebdir/getLebedevDirections.m new file mode 100644 index 0000000..aaf4ffa --- /dev/null +++ b/lebdir/getLebedevDirections.m @@ -0,0 +1,15 @@ +function P = getLebedevDirections(N) +% GETLEBEDEVDIRECTIONS Get unit vectors well spread out over sphere +% +% P = getLebedevDirections(N) returns N times 3 array with a unit vector in +% each row. Unit vectors are Lebedev quadrature points from the function +% getLebedevSphere, where duplicate vectors up to the sign have been +% removed. +% +% Valid number of directions are: 3, 7, 13, 19, 25, 37, 43, 55, 73, 85, 97, +% 115, 133, 151, 175, 217, 295, 385, 487, 601, 727, 865, 1015, 1177, 1351, +% 1537, 1735, 1945, 2167, 2401, 2647, 2905 + +leb = getLebedevSphere(2*N); +P = [leb.x,leb.y,leb.z]; +P = getHalf(P); \ No newline at end of file diff --git a/lebdir/getLebedevSphere.m b/lebdir/getLebedevSphere.m new file mode 100644 index 0000000..d6e793c --- /dev/null +++ b/lebdir/getLebedevSphere.m @@ -0,0 +1,5359 @@ +function [leb_tmp] = getLebedevSphere(degree) + +% getLebedevSphere +% @author Rob Parrish, The Sherrill Group, CCMST Georgia Tech +% @email robparrish@gmail.com +% @date 03/24/2010 +% +% @description - function to compute normalized points and weights +% for Lebedev quadratures on the surface of the unit sphere at double precision. +% **********Relative error is generally expected to be ~2.0E-14 [1]******** +% Lebedev quadratures are superbly accurate and efficient quadrature rules for +% approximating integrals of the form $v = \iint_{4\pi} f(\Omega) \ \ud +% \Omega$, where $\Omega is the solid angle on the surface of the unit +% sphere. Lebedev quadratures integrate all spherical harmonics up to $l = +% order$, where $degree \approx order(order+1)/3$. These grids may be easily +% combined with radial quadratures to provide robust cubature formulae. For +% example, see 'A. Becke, 1988c, J. Chem. Phys., 88(4), pp. 2547' (The first +% paper on tractable molecular Density Functional Theory methods, of which +% Lebedev grids and numerical cubature are an intrinsic part). +% +% @param degree - positive integer specifying number of points in the +% requested quadrature. Allowed values are (degree -> order): +% degree: { 6, 14, 26, 38, 50, 74, 86, 110, 146, 170, 194, 230, 266, 302, +% 350, 434, 590, 770, 974, 1202, 1454, 1730, 2030, 2354, 2702, 3074, +% 3470, 3890, 4334, 4802, 5294, 5810 }; +% order: {3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,35,41,47,53,59,65,71,77, +% 83,89,95,101,107,113,119,125,131}; +% +% +% @return leb_tmp - struct containing fields: +% x - x values of quadrature, constrained to unit sphere +% y - y values of quadrature, constrained to unit sphere +% z - z values of quadrature, constrained to unit sphere +% w - quadrature weights, normalized to $4\pi$. +% +% @example: $\int_S x^2+y^2-z^2 \ud \Omega = 4.188790204786399$ +% f = @(x,y,z) x.^2+y.^2-z.^2; +% leb = getLebedevSphere(590); +% v = f(leb.x,leb.y,leb.z); +% int = sum(v.*leb.w); +% +% @citation - Translated from a Fortran code kindly provided by Christoph van +% Wuellen (Ruhr-Universitaet, Bochum, Germany), which in turn came from the +% original C routines coded by Dmitri Laikov (Moscow State University, +% Moscow, Russia). The MATLAB implementation of this code is designed for +% benchmarking of new DFT integration techniques to be implemented in the +% open source Psi4 ab initio quantum chemistry program. +% +% As per Professor Wuellen's request, any papers published using this code +% or its derivatives are requested to include the following citation: +% +% [1] V.I. Lebedev, and D.N. Laikov +% "A quadrature formula for the sphere of the 131st +% algebraic order of accuracy" +% Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. + +leb_tmp.x = zeros(degree,1); +leb_tmp.y = zeros(degree,1); +leb_tmp.z = zeros(degree,1); +leb_tmp.w = zeros(degree,1); + +start = 1; +a = 0.0; +b = 0.0; +c = 0.0; +v = 0.0; + +switch (degree) + + case 6 + + v=0.1666666666666667E+0; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + + + case 14 + + v=0.6666666666666667E-1; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.7500000000000000E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + + + case 26 + + v=0.4761904761904762E-1; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3809523809523810E-1; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.3214285714285714E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + + + case 38 + + v=0.9523809523809524E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3214285714285714E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.4597008433809831E+0; + v=0.2857142857142857E-1; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + + + case 50 + + v=0.1269841269841270E-1; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2257495590828924E-1; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.2109375000000000E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.3015113445777636E+0; + v=0.2017333553791887E-1; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + + + case 74 + + v=0.5130671797338464E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1660406956574204E-1; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=-0.2958603896103896E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.4803844614152614E+0; + v=0.2657620708215946E-1; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3207726489807764E+0; + v=0.1652217099371571E-1; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + + + case 86 + + v=0.1154401154401154E-1; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1194390908585628E-1; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.3696028464541502E+0; + v=0.1111055571060340E-1; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6943540066026664E+0; + v=0.1187650129453714E-1; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3742430390903412E+0; + v=0.1181230374690448E-1; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + + + case 110 + + v=0.3828270494937162E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.9793737512487512E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1851156353447362E+0; + v=0.8211737283191111E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6904210483822922E+0; + v=0.9942814891178103E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3956894730559419E+0; + v=0.9595471336070963E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4783690288121502E+0; + v=0.9694996361663028E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + + + case 146 + + v=0.5996313688621381E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.7372999718620756E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.7210515360144488E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.6764410400114264E+0; + v=0.7116355493117555E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4174961227965453E+0; + v=0.6753829486314477E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1574676672039082E+0; + v=0.7574394159054034E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1403553811713183E+0; + b=0.4493328323269557E+0; + v=0.6991087353303262E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 170 + + v=0.5544842902037365E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.6071332770670752E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.6383674773515093E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2551252621114134E+0; + v=0.5183387587747790E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6743601460362766E+0; + v=0.6317929009813725E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4318910696719410E+0; + v=0.6201670006589077E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2613931360335988E+0; + v=0.5477143385137348E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4990453161796037E+0; + b=0.1446630744325115E+0; + v=0.5968383987681156E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 194 + + v=0.1782340447244611E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.5716905949977102E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.5573383178848738E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.6712973442695226E+0; + v=0.5608704082587997E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2892465627575439E+0; + v=0.5158237711805383E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4446933178717437E+0; + v=0.5518771467273614E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1299335447650067E+0; + v=0.4106777028169394E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3457702197611283E+0; + v=0.5051846064614808E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1590417105383530E+0; + b=0.8360360154824589E+0; + v=0.5530248916233094E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 230 + + v=-0.5522639919727325E-1; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.4450274607445226E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.4492044687397611E+0; + v=0.4496841067921404E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2520419490210201E+0; + v=0.5049153450478750E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6981906658447242E+0; + v=0.3976408018051883E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6587405243460960E+0; + v=0.4401400650381014E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4038544050097660E-1; + v=0.1724544350544401E-1; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5823842309715585E+0; + v=0.4231083095357343E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3545877390518688E+0; + v=0.5198069864064399E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2272181808998187E+0; + b=0.4864661535886647E+0; + v=0.4695720972568883E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 266 + + v=-0.1313769127326952E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=-0.2522728704859336E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.4186853881700583E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.7039373391585475E+0; + v=0.5315167977810885E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1012526248572414E+0; + v=0.4047142377086219E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4647448726420539E+0; + v=0.4112482394406990E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3277420654971629E+0; + v=0.3595584899758782E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6620338663699974E+0; + v=0.4256131351428158E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8506508083520399E+0; + v=0.4229582700647240E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3233484542692899E+0; + b=0.1153112011009701E+0; + v=0.4080914225780505E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2314790158712601E+0; + b=0.5244939240922365E+0; + v=0.4071467593830964E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 302 + + v=0.8545911725128148E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3599119285025571E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.3515640345570105E+0; + v=0.3449788424305883E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6566329410219612E+0; + v=0.3604822601419882E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4729054132581005E+0; + v=0.3576729661743367E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9618308522614784E-1; + v=0.2352101413689164E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2219645236294178E+0; + v=0.3108953122413675E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7011766416089545E+0; + v=0.3650045807677255E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2644152887060663E+0; + v=0.2982344963171804E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5718955891878961E+0; + v=0.3600820932216460E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2510034751770465E+0; + b=0.8000727494073952E+0; + v=0.3571540554273387E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1233548532583327E+0; + b=0.4127724083168531E+0; + v=0.3392312205006170E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 350 + + v=0.3006796749453936E-2; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3050627745650771E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.7068965463912316E+0; + v=0.1621104600288991E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4794682625712025E+0; + v=0.3005701484901752E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1927533154878019E+0; + v=0.2990992529653774E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6930357961327123E+0; + v=0.2982170644107595E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3608302115520091E+0; + v=0.2721564237310992E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6498486161496169E+0; + v=0.3033513795811141E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1932945013230339E+0; + v=0.3007949555218533E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3800494919899303E+0; + v=0.2881964603055307E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2899558825499574E+0; + b=0.7934537856582316E+0; + v=0.2958357626535696E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9684121455103957E-1; + b=0.8280801506686862E+0; + v=0.3036020026407088E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1833434647041659E+0; + b=0.9074658265305127E+0; + v=0.2832187403926303E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 434 + + v=0.5265897968224436E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2548219972002607E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.2512317418927307E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.6909346307509111E+0; + v=0.2530403801186355E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1774836054609158E+0; + v=0.2014279020918528E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4914342637784746E+0; + v=0.2501725168402936E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6456664707424256E+0; + v=0.2513267174597564E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2861289010307638E+0; + v=0.2302694782227416E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7568084367178018E-1; + v=0.1462495621594614E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3927259763368002E+0; + v=0.2445373437312980E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8818132877794288E+0; + v=0.2417442375638981E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9776428111182649E+0; + v=0.1910951282179532E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2054823696403044E+0; + b=0.8689460322872412E+0; + v=0.2416930044324775E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5905157048925271E+0; + b=0.7999278543857286E+0; + v=0.2512236854563495E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5550152361076807E+0; + b=0.7717462626915901E+0; + v=0.2496644054553086E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9371809858553722E+0; + b=0.3344363145343455E+0; + v=0.2236607760437849E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 590 + + v=0.3095121295306187E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1852379698597489E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.7040954938227469E+0; + v=0.1871790639277744E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6807744066455243E+0; + v=0.1858812585438317E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6372546939258752E+0; + v=0.1852028828296213E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5044419707800358E+0; + v=0.1846715956151242E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4215761784010967E+0; + v=0.1818471778162769E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3317920736472123E+0; + v=0.1749564657281154E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2384736701421887E+0; + v=0.1617210647254411E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1459036449157763E+0; + v=0.1384737234851692E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6095034115507196E-1; + v=0.9764331165051050E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6116843442009876E+0; + v=0.1857161196774078E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3964755348199858E+0; + v=0.1705153996395864E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1724782009907724E+0; + v=0.1300321685886048E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5610263808622060E+0; + b=0.3518280927733519E+0; + v=0.1842866472905286E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4742392842551980E+0; + b=0.2634716655937950E+0; + v=0.1802658934377451E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5984126497885380E+0; + b=0.1816640840360209E+0; + v=0.1849830560443660E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3791035407695563E+0; + b=0.1720795225656878E+0; + v=0.1713904507106709E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2778673190586244E+0; + b=0.8213021581932511E-1; + v=0.1555213603396808E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5033564271075117E+0; + b=0.8999205842074875E-1; + v=0.1802239128008525E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 770 + + v=0.2192942088181184E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1436433617319080E-2; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.1421940344335877E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.5087204410502360E-1; + v=0.6798123511050502E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1228198790178831E+0; + v=0.9913184235294912E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2026890814408786E+0; + v=0.1180207833238949E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2847745156464294E+0; + v=0.1296599602080921E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3656719078978026E+0; + v=0.1365871427428316E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4428264886713469E+0; + v=0.1402988604775325E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5140619627249735E+0; + v=0.1418645563595609E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6306401219166803E+0; + v=0.1421376741851662E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6716883332022612E+0; + v=0.1423996475490962E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6979792685336881E+0; + v=0.1431554042178567E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1446865674195309E+0; + v=0.9254401499865368E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3390263475411216E+0; + v=0.1250239995053509E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5335804651263506E+0; + v=0.1394365843329230E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6944024393349413E-1; + b=0.2355187894242326E+0; + v=0.1127089094671749E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2269004109529460E+0; + b=0.4102182474045730E+0; + v=0.1345753760910670E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8025574607775339E-1; + b=0.6214302417481605E+0; + v=0.1424957283316783E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1467999527896572E+0; + b=0.3245284345717394E+0; + v=0.1261523341237750E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1571507769824727E+0; + b=0.5224482189696630E+0; + v=0.1392547106052696E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2365702993157246E+0; + b=0.6017546634089558E+0; + v=0.1418761677877656E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7714815866765732E-1; + b=0.4346575516141163E+0; + v=0.1338366684479554E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3062936666210730E+0; + b=0.4908826589037616E+0; + v=0.1393700862676131E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3822477379524787E+0; + b=0.5648768149099500E+0; + v=0.1415914757466932E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 974 + + v=0.1438294190527431E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1125772288287004E-2; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.4292963545341347E-1; + v=0.4948029341949241E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1051426854086404E+0; + v=0.7357990109125470E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1750024867623087E+0; + v=0.8889132771304384E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2477653379650257E+0; + v=0.9888347838921435E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3206567123955957E+0; + v=0.1053299681709471E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3916520749849983E+0; + v=0.1092778807014578E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4590825874187624E+0; + v=0.1114389394063227E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5214563888415861E+0; + v=0.1123724788051555E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6253170244654199E+0; + v=0.1125239325243814E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6637926744523170E+0; + v=0.1126153271815905E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6910410398498301E+0; + v=0.1130286931123841E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7052907007457760E+0; + v=0.1134986534363955E-2; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1236686762657990E+0; + v=0.6823367927109931E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2940777114468387E+0; + v=0.9454158160447096E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4697753849207649E+0; + v=0.1074429975385679E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6334563241139567E+0; + v=0.1129300086569132E-2; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5974048614181342E-1; + b=0.2029128752777523E+0; + v=0.8436884500901954E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1375760408473636E+0; + b=0.4602621942484054E+0; + v=0.1075255720448885E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3391016526336286E+0; + b=0.5030673999662036E+0; + v=0.1108577236864462E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1271675191439820E+0; + b=0.2817606422442134E+0; + v=0.9566475323783357E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2693120740413512E+0; + b=0.4331561291720157E+0; + v=0.1080663250717391E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1419786452601918E+0; + b=0.6256167358580814E+0; + v=0.1126797131196295E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6709284600738255E-1; + b=0.3798395216859157E+0; + v=0.1022568715358061E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7057738183256172E-1; + b=0.5517505421423520E+0; + v=0.1108960267713108E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2783888477882155E+0; + b=0.6029619156159187E+0; + v=0.1122790653435766E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1979578938917407E+0; + b=0.3589606329589096E+0; + v=0.1032401847117460E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2087307061103274E+0; + b=0.5348666438135476E+0; + v=0.1107249382283854E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4055122137872836E+0; + b=0.5674997546074373E+0; + v=0.1121780048519972E-2; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 1202 + + v=0.1105189233267572E-3; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.9205232738090741E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.9133159786443561E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.3712636449657089E-1; + v=0.3690421898017899E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9140060412262223E-1; + v=0.5603990928680660E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1531077852469906E+0; + v=0.6865297629282609E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2180928891660612E+0; + v=0.7720338551145630E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2839874532200175E+0; + v=0.8301545958894795E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3491177600963764E+0; + v=0.8686692550179628E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4121431461444309E+0; + v=0.8927076285846890E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4718993627149127E+0; + v=0.9060820238568219E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5273145452842337E+0; + v=0.9119777254940867E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6209475332444019E+0; + v=0.9128720138604181E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6569722711857291E+0; + v=0.9130714935691735E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6841788309070143E+0; + v=0.9152873784554116E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7012604330123631E+0; + v=0.9187436274321654E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1072382215478166E+0; + v=0.5176977312965694E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2582068959496968E+0; + v=0.7331143682101417E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4172752955306717E+0; + v=0.8463232836379928E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5700366911792503E+0; + v=0.9031122694253992E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9827986018263947E+0; + b=0.1771774022615325E+0; + v=0.6485778453163257E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9624249230326228E+0; + b=0.2475716463426288E+0; + v=0.7435030910982369E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9402007994128811E+0; + b=0.3354616289066489E+0; + v=0.7998527891839054E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9320822040143202E+0; + b=0.3173615246611977E+0; + v=0.8101731497468018E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9043674199393299E+0; + b=0.4090268427085357E+0; + v=0.8483389574594331E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8912407560074747E+0; + b=0.3854291150669224E+0; + v=0.8556299257311812E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8676435628462708E+0; + b=0.4932221184851285E+0; + v=0.8803208679738260E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8581979986041619E+0; + b=0.4785320675922435E+0; + v=0.8811048182425720E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8396753624049856E+0; + b=0.4507422593157064E+0; + v=0.8850282341265444E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8165288564022188E+0; + b=0.5632123020762100E+0; + v=0.9021342299040653E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8015469370783529E+0; + b=0.5434303569693900E+0; + v=0.9010091677105086E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7773563069070351E+0; + b=0.5123518486419871E+0; + v=0.9022692938426915E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7661621213900394E+0; + b=0.6394279634749102E+0; + v=0.9158016174693465E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7553584143533510E+0; + b=0.6269805509024392E+0; + v=0.9131578003189435E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7344305757559503E+0; + b=0.6031161693096310E+0; + v=0.9107813579482705E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.7043837184021765E+0; + b=0.5693702498468441E+0; + v=0.9105760258970126E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 1454 + + v=0.7777160743261247E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.7557646413004701E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.3229290663413854E-1; + v=0.2841633806090617E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8036733271462222E-1; + v=0.4374419127053555E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1354289960531653E+0; + v=0.5417174740872172E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1938963861114426E+0; + v=0.6148000891358593E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2537343715011275E+0; + v=0.6664394485800705E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3135251434752570E+0; + v=0.7025039356923220E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3721558339375338E+0; + v=0.7268511789249627E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4286809575195696E+0; + v=0.7422637534208629E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4822510128282994E+0; + v=0.7509545035841214E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5320679333566263E+0; + v=0.7548535057718401E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6172998195394274E+0; + v=0.7554088969774001E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6510679849127481E+0; + v=0.7553147174442808E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6777315251687360E+0; + v=0.7564767653292297E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6963109410648741E+0; + v=0.7587991808518730E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7058935009831749E+0; + v=0.7608261832033027E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9955546194091857E+0; + v=0.4021680447874916E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9734115901794209E+0; + v=0.5804871793945964E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9275693732388626E+0; + v=0.6792151955945159E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.8568022422795103E+0; + v=0.7336741211286294E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.7623495553719372E+0; + v=0.7581866300989608E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5707522908892223E+0; + b=0.4387028039889501E+0; + v=0.7538257859800743E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5196463388403083E+0; + b=0.3858908414762617E+0; + v=0.7483517247053123E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4646337531215351E+0; + b=0.3301937372343854E+0; + v=0.7371763661112059E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4063901697557691E+0; + b=0.2725423573563777E+0; + v=0.7183448895756934E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3456329466643087E+0; + b=0.2139510237495250E+0; + v=0.6895815529822191E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2831395121050332E+0; + b=0.1555922309786647E+0; + v=0.6480105801792886E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2197682022925330E+0; + b=0.9892878979686097E-1; + v=0.5897558896594636E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1564696098650355E+0; + b=0.4598642910675510E-1; + v=0.5095708849247346E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6027356673721295E+0; + b=0.3376625140173426E+0; + v=0.7536906428909755E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5496032320255096E+0; + b=0.2822301309727988E+0; + v=0.7472505965575118E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4921707755234567E+0; + b=0.2248632342592540E+0; + v=0.7343017132279698E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4309422998598483E+0; + b=0.1666224723456479E+0; + v=0.7130871582177445E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3664108182313672E+0; + b=0.1086964901822169E+0; + v=0.6817022032112776E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2990189057758436E+0; + b=0.5251989784120085E-1; + v=0.6380941145604121E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6268724013144998E+0; + b=0.2297523657550023E+0; + v=0.7550381377920310E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5707324144834607E+0; + b=0.1723080607093800E+0; + v=0.7478646640144802E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5096360901960365E+0; + b=0.1140238465390513E+0; + v=0.7335918720601220E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4438729938312456E+0; + b=0.5611522095882537E-1; + v=0.7110120527658118E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6419978471082389E+0; + b=0.1164174423140873E+0; + v=0.7571363978689501E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5817218061802611E+0; + b=0.5797589531445219E-1; + v=0.7489908329079234E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 1730 + + v=0.6309049437420976E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.6398287705571748E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.6357185073530720E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2860923126194662E-1; + v=0.2221207162188168E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7142556767711522E-1; + v=0.3475784022286848E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1209199540995559E+0; + v=0.4350742443589804E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1738673106594379E+0; + v=0.4978569136522127E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2284645438467734E+0; + v=0.5435036221998053E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2834807671701512E+0; + v=0.5765913388219542E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3379680145467339E+0; + v=0.6001200359226003E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3911355454819537E+0; + v=0.6162178172717512E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4422860353001403E+0; + v=0.6265218152438485E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4907781568726057E+0; + v=0.6323987160974212E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5360006153211468E+0; + v=0.6350767851540569E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6142105973596603E+0; + v=0.6354362775297107E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6459300387977504E+0; + v=0.6352302462706235E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6718056125089225E+0; + v=0.6358117881417972E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6910888533186254E+0; + v=0.6373101590310117E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7030467416823252E+0; + v=0.6390428961368665E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8354951166354646E-1; + v=0.3186913449946576E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2050143009099486E+0; + v=0.4678028558591711E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3370208290706637E+0; + v=0.5538829697598626E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4689051484233963E+0; + v=0.6044475907190476E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5939400424557334E+0; + v=0.6313575103509012E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1394983311832261E+0; + b=0.4097581162050343E-1; + v=0.4078626431855630E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1967999180485014E+0; + b=0.8851987391293348E-1; + v=0.4759933057812725E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2546183732548967E+0; + b=0.1397680182969819E+0; + v=0.5268151186413440E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3121281074713875E+0; + b=0.1929452542226526E+0; + v=0.5643048560507316E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3685981078502492E+0; + b=0.2467898337061562E+0; + v=0.5914501076613073E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4233760321547856E+0; + b=0.3003104124785409E+0; + v=0.6104561257874195E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4758671236059246E+0; + b=0.3526684328175033E+0; + v=0.6230252860707806E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5255178579796463E+0; + b=0.4031134861145713E+0; + v=0.6305618761760796E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5718025633734589E+0; + b=0.4509426448342351E+0; + v=0.6343092767597889E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2686927772723415E+0; + b=0.4711322502423248E-1; + v=0.5176268945737826E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3306006819904809E+0; + b=0.9784487303942695E-1; + v=0.5564840313313692E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3904906850594983E+0; + b=0.1505395810025273E+0; + v=0.5856426671038980E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4479957951904390E+0; + b=0.2039728156296050E+0; + v=0.6066386925777091E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5027076848919780E+0; + b=0.2571529941121107E+0; + v=0.6208824962234458E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5542087392260217E+0; + b=0.3092191375815670E+0; + v=0.6296314297822907E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6020850887375187E+0; + b=0.3593807506130276E+0; + v=0.6340423756791859E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4019851409179594E+0; + b=0.5063389934378671E-1; + v=0.5829627677107342E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4635614567449800E+0; + b=0.1032422269160612E+0; + v=0.6048693376081110E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5215860931591575E+0; + b=0.1566322094006254E+0; + v=0.6202362317732461E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5758202499099271E+0; + b=0.2098082827491099E+0; + v=0.6299005328403779E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6259893683876795E+0; + b=0.2618824114553391E+0; + v=0.6347722390609353E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5313795124811891E+0; + b=0.5263245019338556E-1; + v=0.6203778981238834E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5893317955931995E+0; + b=0.1061059730982005E+0; + v=0.6308414671239979E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6426246321215801E+0; + b=0.1594171564034221E+0; + v=0.6362706466959498E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6511904367376113E+0; + b=0.5354789536565540E-1; + v=0.6375414170333233E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 2030 + + v=0.4656031899197431E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.5421549195295507E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2540835336814348E-1; + v=0.1778522133346553E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6399322800504915E-1; + v=0.2811325405682796E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1088269469804125E+0; + v=0.3548896312631459E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1570670798818287E+0; + v=0.4090310897173364E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2071163932282514E+0; + v=0.4493286134169965E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2578914044450844E+0; + v=0.4793728447962723E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3085687558169623E+0; + v=0.5015415319164265E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3584719706267024E+0; + v=0.5175127372677937E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4070135594428709E+0; + v=0.5285522262081019E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4536618626222638E+0; + v=0.5356832703713962E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4979195686463577E+0; + v=0.5397914736175170E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5393075111126999E+0; + v=0.5416899441599930E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6115617676843916E+0; + v=0.5419308476889938E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6414308435160159E+0; + v=0.5416936902030596E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6664099412721607E+0; + v=0.5419544338703164E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6859161771214913E+0; + v=0.5428983656630975E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6993625593503890E+0; + v=0.5442286500098193E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7062393387719380E+0; + v=0.5452250345057301E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7479028168349763E-1; + v=0.2568002497728530E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1848951153969366E+0; + v=0.3827211700292145E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3059529066581305E+0; + v=0.4579491561917824E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4285556101021362E+0; + v=0.5042003969083574E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5468758653496526E+0; + v=0.5312708889976025E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6565821978343439E+0; + v=0.5438401790747117E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1253901572367117E+0; + b=0.3681917226439641E-1; + v=0.3316041873197344E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1775721510383941E+0; + b=0.7982487607213301E-1; + v=0.3899113567153771E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2305693358216114E+0; + b=0.1264640966592335E+0; + v=0.4343343327201309E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2836502845992063E+0; + b=0.1751585683418957E+0; + v=0.4679415262318919E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3361794746232590E+0; + b=0.2247995907632670E+0; + v=0.4930847981631031E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3875979172264824E+0; + b=0.2745299257422246E+0; + v=0.5115031867540091E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4374019316999074E+0; + b=0.3236373482441118E+0; + v=0.5245217148457367E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4851275843340022E+0; + b=0.3714967859436741E+0; + v=0.5332041499895321E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5303391803806868E+0; + b=0.4175353646321745E+0; + v=0.5384583126021542E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5726197380596287E+0; + b=0.4612084406355461E+0; + v=0.5411067210798852E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2431520732564863E+0; + b=0.4258040133043952E-1; + v=0.4259797391468714E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3002096800895869E+0; + b=0.8869424306722721E-1; + v=0.4604931368460021E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3558554457457432E+0; + b=0.1368811706510655E+0; + v=0.4871814878255202E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4097782537048887E+0; + b=0.1860739985015033E+0; + v=0.5072242910074885E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4616337666067458E+0; + b=0.2354235077395853E+0; + v=0.5217069845235350E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5110707008417874E+0; + b=0.2842074921347011E+0; + v=0.5315785966280310E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5577415286163795E+0; + b=0.3317784414984102E+0; + v=0.5376833708758905E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6013060431366950E+0; + b=0.3775299002040700E+0; + v=0.5408032092069521E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3661596767261781E+0; + b=0.4599367887164592E-1; + v=0.4842744917904866E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4237633153506581E+0; + b=0.9404893773654421E-1; + v=0.5048926076188130E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4786328454658452E+0; + b=0.1431377109091971E+0; + v=0.5202607980478373E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5305702076789774E+0; + b=0.1924186388843570E+0; + v=0.5309932388325743E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5793436224231788E+0; + b=0.2411590944775190E+0; + v=0.5377419770895208E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6247069017094747E+0; + b=0.2886871491583605E+0; + v=0.5411696331677717E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4874315552535204E+0; + b=0.4804978774953206E-1; + v=0.5197996293282420E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5427337322059053E+0; + b=0.9716857199366665E-1; + v=0.5311120836622945E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5943493747246700E+0; + b=0.1465205839795055E+0; + v=0.5384309319956951E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6421314033564943E+0; + b=0.1953579449803574E+0; + v=0.5421859504051886E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6020628374713980E+0; + b=0.4916375015738108E-1; + v=0.5390948355046314E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6529222529856881E+0; + b=0.9861621540127005E-1; + v=0.5433312705027845E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 2354 + + v=0.3922616270665292E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.4703831750854424E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.4678202801282136E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2290024646530589E-1; + v=0.1437832228979900E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5779086652271284E-1; + v=0.2303572493577644E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9863103576375984E-1; + v=0.2933110752447454E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1428155792982185E+0; + v=0.3402905998359838E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1888978116601463E+0; + v=0.3759138466870372E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2359091682970210E+0; + v=0.4030638447899798E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2831228833706171E+0; + v=0.4236591432242211E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3299495857966693E+0; + v=0.4390522656946746E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3758840802660796E+0; + v=0.4502523466626247E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4204751831009480E+0; + v=0.4580577727783541E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4633068518751051E+0; + v=0.4631391616615899E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5039849474507313E+0; + v=0.4660928953698676E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5421265793440747E+0; + v=0.4674751807936953E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6092660230557310E+0; + v=0.4676414903932920E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6374654204984869E+0; + v=0.4674086492347870E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6615136472609892E+0; + v=0.4674928539483207E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6809487285958127E+0; + v=0.4680748979686447E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6952980021665196E+0; + v=0.4690449806389040E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7041245497695400E+0; + v=0.4699877075860818E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6744033088306065E-1; + v=0.2099942281069176E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1678684485334166E+0; + v=0.3172269150712804E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2793559049539613E+0; + v=0.3832051358546523E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3935264218057639E+0; + v=0.4252193818146985E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5052629268232558E+0; + v=0.4513807963755000E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6107905315437531E+0; + v=0.4657797469114178E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1135081039843524E+0; + b=0.3331954884662588E-1; + v=0.2733362800522836E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1612866626099378E+0; + b=0.7247167465436538E-1; + v=0.3235485368463559E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2100786550168205E+0; + b=0.1151539110849745E+0; + v=0.3624908726013453E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2592282009459942E+0; + b=0.1599491097143677E+0; + v=0.3925540070712828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3081740561320203E+0; + b=0.2058699956028027E+0; + v=0.4156129781116235E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3564289781578164E+0; + b=0.2521624953502911E+0; + v=0.4330644984623263E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4035587288240703E+0; + b=0.2982090785797674E+0; + v=0.4459677725921312E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4491671196373903E+0; + b=0.3434762087235733E+0; + v=0.4551593004456795E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4928854782917489E+0; + b=0.3874831357203437E+0; + v=0.4613341462749918E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5343646791958988E+0; + b=0.4297814821746926E+0; + v=0.4651019618269806E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5732683216530990E+0; + b=0.4699402260943537E+0; + v=0.4670249536100625E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2214131583218986E+0; + b=0.3873602040643895E-1; + v=0.3549555576441708E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2741796504750071E+0; + b=0.8089496256902013E-1; + v=0.3856108245249010E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3259797439149485E+0; + b=0.1251732177620872E+0; + v=0.4098622845756882E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3765441148826891E+0; + b=0.1706260286403185E+0; + v=0.4286328604268950E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4255773574530558E+0; + b=0.2165115147300408E+0; + v=0.4427802198993945E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4727795117058430E+0; + b=0.2622089812225259E+0; + v=0.4530473511488561E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5178546895819012E+0; + b=0.3071721431296201E+0; + v=0.4600805475703138E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5605141192097460E+0; + b=0.3508998998801138E+0; + v=0.4644599059958017E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6004763319352512E+0; + b=0.3929160876166931E+0; + v=0.4667274455712508E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3352842634946949E+0; + b=0.4202563457288019E-1; + v=0.4069360518020356E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3891971629814670E+0; + b=0.8614309758870850E-1; + v=0.4260442819919195E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4409875565542281E+0; + b=0.1314500879380001E+0; + v=0.4408678508029063E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4904893058592484E+0; + b=0.1772189657383859E+0; + v=0.4518748115548597E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5375056138769549E+0; + b=0.2228277110050294E+0; + v=0.4595564875375116E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5818255708669969E+0; + b=0.2677179935014386E+0; + v=0.4643988774315846E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6232334858144959E+0; + b=0.3113675035544165E+0; + v=0.4668827491646946E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4489485354492058E+0; + b=0.4409162378368174E-1; + v=0.4400541823741973E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5015136875933150E+0; + b=0.8939009917748489E-1; + v=0.4514512890193797E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5511300550512623E+0; + b=0.1351806029383365E+0; + v=0.4596198627347549E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5976720409858000E+0; + b=0.1808370355053196E+0; + v=0.4648659016801781E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6409956378989354E+0; + b=0.2257852192301602E+0; + v=0.4675502017157673E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5581222330827514E+0; + b=0.4532173421637160E-1; + v=0.4598494476455523E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6074705984161695E+0; + b=0.9117488031840314E-1; + v=0.4654916955152048E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6532272537379033E+0; + b=0.1369294213140155E+0; + v=0.4684709779505137E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6594761494500487E+0; + b=0.4589901487275583E-1; + v=0.4691445539106986E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 2702 + + v=0.2998675149888161E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.4077860529495355E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2065562538818703E-1; + v=0.1185349192520667E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5250918173022379E-1; + v=0.1913408643425751E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8993480082038376E-1; + v=0.2452886577209897E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1306023924436019E+0; + v=0.2862408183288702E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1732060388531418E+0; + v=0.3178032258257357E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2168727084820249E+0; + v=0.3422945667633690E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2609528309173586E+0; + v=0.3612790520235922E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3049252927938952E+0; + v=0.3758638229818521E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3483484138084404E+0; + v=0.3868711798859953E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3908321549106406E+0; + v=0.3949429933189938E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4320210071894814E+0; + v=0.4006068107541156E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4715824795890053E+0; + v=0.4043192149672723E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5091984794078453E+0; + v=0.4064947495808078E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5445580145650803E+0; + v=0.4075245619813152E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6072575796841768E+0; + v=0.4076423540893566E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6339484505755803E+0; + v=0.4074280862251555E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6570718257486958E+0; + v=0.4074163756012244E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6762557330090709E+0; + v=0.4077647795071246E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6911161696923790E+0; + v=0.4084517552782530E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7012841911659961E+0; + v=0.4092468459224052E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7064559272410020E+0; + v=0.4097872687240906E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6123554989894765E-1; + v=0.1738986811745028E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1533070348312393E+0; + v=0.2659616045280191E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2563902605244206E+0; + v=0.3240596008171533E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3629346991663361E+0; + v=0.3621195964432943E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4683949968987538E+0; + v=0.3868838330760539E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5694479240657952E+0; + v=0.4018911532693111E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6634465430993955E+0; + v=0.4089929432983252E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1033958573552305E+0; + b=0.3034544009063584E-1; + v=0.2279907527706409E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1473521412414395E+0; + b=0.6618803044247135E-1; + v=0.2715205490578897E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1924552158705967E+0; + b=0.1054431128987715E+0; + v=0.3057917896703976E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2381094362890328E+0; + b=0.1468263551238858E+0; + v=0.3326913052452555E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2838121707936760E+0; + b=0.1894486108187886E+0; + v=0.3537334711890037E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3291323133373415E+0; + b=0.2326374238761579E+0; + v=0.3700567500783129E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3736896978741460E+0; + b=0.2758485808485768E+0; + v=0.3825245372589122E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4171406040760013E+0; + b=0.3186179331996921E+0; + v=0.3918125171518296E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4591677985256915E+0; + b=0.3605329796303794E+0; + v=0.3984720419937579E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4994733831718418E+0; + b=0.4012147253586509E+0; + v=0.4029746003338211E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5377731830445096E+0; + b=0.4403050025570692E+0; + v=0.4057428632156627E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5737917830001331E+0; + b=0.4774565904277483E+0; + v=0.4071719274114857E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2027323586271389E+0; + b=0.3544122504976147E-1; + v=0.2990236950664119E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2516942375187273E+0; + b=0.7418304388646328E-1; + v=0.3262951734212878E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3000227995257181E+0; + b=0.1150502745727186E+0; + v=0.3482634608242413E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3474806691046342E+0; + b=0.1571963371209364E+0; + v=0.3656596681700892E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3938103180359209E+0; + b=0.1999631877247100E+0; + v=0.3791740467794218E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4387519590455703E+0; + b=0.2428073457846535E+0; + v=0.3894034450156905E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4820503960077787E+0; + b=0.2852575132906155E+0; + v=0.3968600245508371E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5234573778475101E+0; + b=0.3268884208674639E+0; + v=0.4019931351420050E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5627318647235282E+0; + b=0.3673033321675939E+0; + v=0.4052108801278599E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5996390607156954E+0; + b=0.4061211551830290E+0; + v=0.4068978613940934E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3084780753791947E+0; + b=0.3860125523100059E-1; + v=0.3454275351319704E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3589988275920223E+0; + b=0.7928938987104867E-1; + v=0.3629963537007920E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4078628415881973E+0; + b=0.1212614643030087E+0; + v=0.3770187233889873E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4549287258889735E+0; + b=0.1638770827382693E+0; + v=0.3878608613694378E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5000278512957279E+0; + b=0.2065965798260176E+0; + v=0.3959065270221274E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5429785044928199E+0; + b=0.2489436378852235E+0; + v=0.4015286975463570E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5835939850491711E+0; + b=0.2904811368946891E+0; + v=0.4050866785614717E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6216870353444856E+0; + b=0.3307941957666609E+0; + v=0.4069320185051913E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4151104662709091E+0; + b=0.4064829146052554E-1; + v=0.3760120964062763E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4649804275009218E+0; + b=0.8258424547294755E-1; + v=0.3870969564418064E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5124695757009662E+0; + b=0.1251841962027289E+0; + v=0.3955287790534055E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5574711100606224E+0; + b=0.1679107505976331E+0; + v=0.4015361911302668E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5998597333287227E+0; + b=0.2102805057358715E+0; + v=0.4053836986719548E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6395007148516600E+0; + b=0.2518418087774107E+0; + v=0.4073578673299117E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5188456224746252E+0; + b=0.4194321676077518E-1; + v=0.3954628379231406E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5664190707942778E+0; + b=0.8457661551921499E-1; + v=0.4017645508847530E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6110464353283153E+0; + b=0.1273652932519396E+0; + v=0.4059030348651293E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6526430302051563E+0; + b=0.1698173239076354E+0; + v=0.4080565809484880E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6167551880377548E+0; + b=0.4266398851548864E-1; + v=0.4063018753664651E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6607195418355383E+0; + b=0.8551925814238349E-1; + v=0.4087191292799671E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 3074 + + v=0.2599095953754734E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3603134089687541E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.3586067974412447E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1886108518723392E-1; + v=0.9831528474385880E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4800217244625303E-1; + v=0.1605023107954450E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8244922058397242E-1; + v=0.2072200131464099E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1200408362484023E+0; + v=0.2431297618814187E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1595773530809965E+0; + v=0.2711819064496707E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2002635973434064E+0; + v=0.2932762038321116E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2415127590139982E+0; + v=0.3107032514197368E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2828584158458477E+0; + v=0.3243808058921213E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3239091015338138E+0; + v=0.3349899091374030E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3643225097962194E+0; + v=0.3430580688505218E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4037897083691802E+0; + v=0.3490124109290343E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4420247515194127E+0; + v=0.3532148948561955E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4787572538464938E+0; + v=0.3559862669062833E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5137265251275234E+0; + v=0.3576224317551411E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5466764056654611E+0; + v=0.3584050533086076E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6054859420813535E+0; + v=0.3584903581373224E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6308106701764562E+0; + v=0.3582991879040586E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6530369230179584E+0; + v=0.3582371187963125E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6718609524611158E+0; + v=0.3584353631122350E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6869676499894013E+0; + v=0.3589120166517785E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6980467077240748E+0; + v=0.3595445704531601E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7048241721250522E+0; + v=0.3600943557111074E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5591105222058232E-1; + v=0.1456447096742039E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1407384078513916E+0; + v=0.2252370188283782E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2364035438976309E+0; + v=0.2766135443474897E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3360602737818170E+0; + v=0.3110729491500851E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4356292630054665E+0; + v=0.3342506712303391E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5321569415256174E+0; + v=0.3491981834026860E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6232956305040554E+0; + v=0.3576003604348932E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9469870086838469E-1; + b=0.2778748387309470E-1; + v=0.1921921305788564E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1353170300568141E+0; + b=0.6076569878628364E-1; + v=0.2301458216495632E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1771679481726077E+0; + b=0.9703072762711040E-1; + v=0.2604248549522893E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2197066664231751E+0; + b=0.1354112458524762E+0; + v=0.2845275425870697E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2624783557374927E+0; + b=0.1750996479744100E+0; + v=0.3036870897974840E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3050969521214442E+0; + b=0.2154896907449802E+0; + v=0.3188414832298066E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3472252637196021E+0; + b=0.2560954625740152E+0; + v=0.3307046414722089E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3885610219026360E+0; + b=0.2965070050624096E+0; + v=0.3398330969031360E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4288273776062765E+0; + b=0.3363641488734497E+0; + v=0.3466757899705373E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4677662471302948E+0; + b=0.3753400029836788E+0; + v=0.3516095923230054E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5051333589553359E+0; + b=0.4131297522144286E+0; + v=0.3549645184048486E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5406942145810492E+0; + b=0.4494423776081795E+0; + v=0.3570415969441392E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5742204122576457E+0; + b=0.4839938958841502E+0; + v=0.3581251798496118E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1865407027225188E+0; + b=0.3259144851070796E-1; + v=0.2543491329913348E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2321186453689432E+0; + b=0.6835679505297343E-1; + v=0.2786711051330776E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2773159142523882E+0; + b=0.1062284864451989E+0; + v=0.2985552361083679E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3219200192237254E+0; + b=0.1454404409323047E+0; + v=0.3145867929154039E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3657032593944029E+0; + b=0.1854018282582510E+0; + v=0.3273290662067609E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4084376778363622E+0; + b=0.2256297412014750E+0; + v=0.3372705511943501E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4499004945751427E+0; + b=0.2657104425000896E+0; + v=0.3448274437851510E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4898758141326335E+0; + b=0.3052755487631557E+0; + v=0.3503592783048583E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5281547442266309E+0; + b=0.3439863920645423E+0; + v=0.3541854792663162E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5645346989813992E+0; + b=0.3815229456121914E+0; + v=0.3565995517909428E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5988181252159848E+0; + b=0.4175752420966734E+0; + v=0.3578802078302898E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2850425424471603E+0; + b=0.3562149509862536E-1; + v=0.2958644592860982E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3324619433027876E+0; + b=0.7330318886871096E-1; + v=0.3119548129116835E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3785848333076282E+0; + b=0.1123226296008472E+0; + v=0.3250745225005984E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4232891028562115E+0; + b=0.1521084193337708E+0; + v=0.3355153415935208E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4664287050829722E+0; + b=0.1921844459223610E+0; + v=0.3435847568549328E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5078458493735726E+0; + b=0.2321360989678303E+0; + v=0.3495786831622488E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5473779816204180E+0; + b=0.2715886486360520E+0; + v=0.3537767805534621E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5848617133811376E+0; + b=0.3101924707571355E+0; + v=0.3564459815421428E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6201348281584888E+0; + b=0.3476121052890973E+0; + v=0.3578464061225468E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3852191185387871E+0; + b=0.3763224880035108E-1; + v=0.3239748762836212E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4325025061073423E+0; + b=0.7659581935637135E-1; + v=0.3345491784174287E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4778486229734490E+0; + b=0.1163381306083900E+0; + v=0.3429126177301782E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5211663693009000E+0; + b=0.1563890598752899E+0; + v=0.3492420343097421E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5623469504853703E+0; + b=0.1963320810149200E+0; + v=0.3537399050235257E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6012718188659246E+0; + b=0.2357847407258738E+0; + v=0.3566209152659172E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6378179206390117E+0; + b=0.2743846121244060E+0; + v=0.3581084321919782E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4836936460214534E+0; + b=0.3895902610739024E-1; + v=0.3426522117591512E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5293792562683797E+0; + b=0.7871246819312640E-1; + v=0.3491848770121379E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5726281253100033E+0; + b=0.1187963808202981E+0; + v=0.3539318235231476E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6133658776169068E+0; + b=0.1587914708061787E+0; + v=0.3570231438458694E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6515085491865307E+0; + b=0.1983058575227646E+0; + v=0.3586207335051714E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5778692716064976E+0; + b=0.3977209689791542E-1; + v=0.3541196205164025E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6207904288086192E+0; + b=0.7990157592981152E-1; + v=0.3574296911573953E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6608688171046802E+0; + b=0.1199671308754309E+0; + v=0.3591993279818963E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6656263089489130E+0; + b=0.4015955957805969E-1; + v=0.3595855034661997E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 3470 + + v=0.2040382730826330E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.3178149703889544E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1721420832906233E-1; + v=0.8288115128076110E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4408875374981770E-1; + v=0.1360883192522954E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7594680813878681E-1; + v=0.1766854454542662E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1108335359204799E+0; + v=0.2083153161230153E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1476517054388567E+0; + v=0.2333279544657158E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1856731870860615E+0; + v=0.2532809539930247E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2243634099428821E+0; + v=0.2692472184211158E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2633006881662727E+0; + v=0.2819949946811885E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3021340904916283E+0; + v=0.2920953593973030E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3405594048030089E+0; + v=0.2999889782948352E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3783044434007372E+0; + v=0.3060292120496902E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4151194767407910E+0; + v=0.3105109167522192E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4507705766443257E+0; + v=0.3136902387550312E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4850346056573187E+0; + v=0.3157984652454632E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5176950817792470E+0; + v=0.3170516518425422E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5485384240820989E+0; + v=0.3176568425633755E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6039117238943308E+0; + v=0.3177198411207062E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6279956655573113E+0; + v=0.3175519492394733E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6493636169568952E+0; + v=0.3174654952634756E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6677644117704504E+0; + v=0.3175676415467654E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6829368572115624E+0; + v=0.3178923417835410E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6946195818184121E+0; + v=0.3183788287531909E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7025711542057026E+0; + v=0.3188755151918807E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7066004767140119E+0; + v=0.3191916889313849E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5132537689946062E-1; + v=0.1231779611744508E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1297994661331225E+0; + v=0.1924661373839880E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2188852049401307E+0; + v=0.2380881867403424E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3123174824903457E+0; + v=0.2693100663037885E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4064037620738195E+0; + v=0.2908673382834366E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4984958396944782E+0; + v=0.3053914619381535E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5864975046021365E+0; + v=0.3143916684147777E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6686711634580175E+0; + v=0.3187042244055363E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.8715738780835950E-1; + b=0.2557175233367578E-1; + v=0.1635219535869790E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1248383123134007E+0; + b=0.5604823383376681E-1; + v=0.1968109917696070E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1638062693383378E+0; + b=0.8968568601900765E-1; + v=0.2236754342249974E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2035586203373176E+0; + b=0.1254086651976279E+0; + v=0.2453186687017181E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2436798975293774E+0; + b=0.1624780150162012E+0; + v=0.2627551791580541E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2838207507773806E+0; + b=0.2003422342683208E+0; + v=0.2767654860152220E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3236787502217692E+0; + b=0.2385628026255263E+0; + v=0.2879467027765895E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3629849554840691E+0; + b=0.2767731148783578E+0; + v=0.2967639918918702E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4014948081992087E+0; + b=0.3146542308245309E+0; + v=0.3035900684660351E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4389818379260225E+0; + b=0.3519196415895088E+0; + v=0.3087338237298308E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4752331143674377E+0; + b=0.3883050984023654E+0; + v=0.3124608838860167E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5100457318374018E+0; + b=0.4235613423908649E+0; + v=0.3150084294226743E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5432238388954868E+0; + b=0.4574484717196220E+0; + v=0.3165958398598402E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5745758685072442E+0; + b=0.4897311639255524E+0; + v=0.3174320440957372E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1723981437592809E+0; + b=0.3010630597881105E-1; + v=0.2182188909812599E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2149553257844597E+0; + b=0.6326031554204694E-1; + v=0.2399727933921445E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2573256081247422E+0; + b=0.9848566980258631E-1; + v=0.2579796133514652E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2993163751238106E+0; + b=0.1350835952384266E+0; + v=0.2727114052623535E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3407238005148000E+0; + b=0.1725184055442181E+0; + v=0.2846327656281355E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3813454978483264E+0; + b=0.2103559279730725E+0; + v=0.2941491102051334E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4209848104423343E+0; + b=0.2482278774554860E+0; + v=0.3016049492136107E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4594519699996300E+0; + b=0.2858099509982883E+0; + v=0.3072949726175648E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4965640166185930E+0; + b=0.3228075659915428E+0; + v=0.3114768142886460E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5321441655571562E+0; + b=0.3589459907204151E+0; + v=0.3143823673666223E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5660208438582166E+0; + b=0.3939630088864310E+0; + v=0.3162269764661535E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5980264315964364E+0; + b=0.4276029922949089E+0; + v=0.3172164663759821E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2644215852350733E+0; + b=0.3300939429072552E-1; + v=0.2554575398967435E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3090113743443063E+0; + b=0.6803887650078501E-1; + v=0.2701704069135677E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3525871079197808E+0; + b=0.1044326136206709E+0; + v=0.2823693413468940E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3950418005354029E+0; + b=0.1416751597517679E+0; + v=0.2922898463214289E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4362475663430163E+0; + b=0.1793408610504821E+0; + v=0.3001829062162428E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4760661812145854E+0; + b=0.2170630750175722E+0; + v=0.3062890864542953E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5143551042512103E+0; + b=0.2545145157815807E+0; + v=0.3108328279264746E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5509709026935597E+0; + b=0.2913940101706601E+0; + v=0.3140243146201245E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5857711030329428E+0; + b=0.3274169910910705E+0; + v=0.3160638030977130E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6186149917404392E+0; + b=0.3623081329317265E+0; + v=0.3171462882206275E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3586894569557064E+0; + b=0.3497354386450040E-1; + v=0.2812388416031796E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4035266610019441E+0; + b=0.7129736739757095E-1; + v=0.2912137500288045E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4467775312332510E+0; + b=0.1084758620193165E+0; + v=0.2993241256502206E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4883638346608543E+0; + b=0.1460915689241772E+0; + v=0.3057101738983822E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5281908348434601E+0; + b=0.1837790832369980E+0; + v=0.3105319326251432E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5661542687149311E+0; + b=0.2212075390874021E+0; + v=0.3139565514428167E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6021450102031452E+0; + b=0.2580682841160985E+0; + v=0.3161543006806366E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6360520783610050E+0; + b=0.2940656362094121E+0; + v=0.3172985960613294E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4521611065087196E+0; + b=0.3631055365867002E-1; + v=0.2989400336901431E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4959365651560963E+0; + b=0.7348318468484350E-1; + v=0.3054555883947677E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5376815804038283E+0; + b=0.1111087643812648E+0; + v=0.3104764960807702E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5773314480243768E+0; + b=0.1488226085145408E+0; + v=0.3141015825977616E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6148113245575056E+0; + b=0.1862892274135151E+0; + v=0.3164520621159896E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6500407462842380E+0; + b=0.2231909701714456E+0; + v=0.3176652305912204E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5425151448707213E+0; + b=0.3718201306118944E-1; + v=0.3105097161023939E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5841860556907931E+0; + b=0.7483616335067346E-1; + v=0.3143014117890550E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6234632186851500E+0; + b=0.1125990834266120E+0; + v=0.3168172866287200E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6602934551848843E+0; + b=0.1501303813157619E+0; + v=0.3181401865570968E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6278573968375105E+0; + b=0.3767559930245720E-1; + v=0.3170663659156037E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6665611711264577E+0; + b=0.7548443301360158E-1; + v=0.3185447944625510E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 3890 + + v=0.1807395252196920E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2848008782238827E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.2836065837530581E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1587876419858352E-1; + v=0.7013149266673816E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4069193593751206E-1; + v=0.1162798021956766E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7025888115257997E-1; + v=0.1518728583972105E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1027495450028704E+0; + v=0.1798796108216934E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1371457730893426E+0; + v=0.2022593385972785E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1727758532671953E+0; + v=0.2203093105575464E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2091492038929037E+0; + v=0.2349294234299855E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2458813281751915E+0; + v=0.2467682058747003E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2826545859450066E+0; + v=0.2563092683572224E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3191957291799622E+0; + v=0.2639253896763318E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3552621469299578E+0; + v=0.2699137479265108E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3906329503406230E+0; + v=0.2745196420166739E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4251028614093031E+0; + v=0.2779529197397593E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4584777520111870E+0; + v=0.2803996086684265E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4905711358710193E+0; + v=0.2820302356715842E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5212011669847385E+0; + v=0.2830056747491068E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5501878488737995E+0; + v=0.2834808950776839E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6025037877479342E+0; + v=0.2835282339078929E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6254572689549016E+0; + v=0.2833819267065800E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6460107179528248E+0; + v=0.2832858336906784E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6639541138154251E+0; + v=0.2833268235451244E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6790688515667495E+0; + v=0.2835432677029253E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6911338580371512E+0; + v=0.2839091722743049E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6999385956126490E+0; + v=0.2843308178875841E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7053037748656896E+0; + v=0.2846703550533846E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4732224387180115E-1; + v=0.1051193406971900E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1202100529326803E+0; + v=0.1657871838796974E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2034304820664855E+0; + v=0.2064648113714232E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2912285643573002E+0; + v=0.2347942745819741E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3802361792726768E+0; + v=0.2547775326597726E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4680598511056146E+0; + v=0.2686876684847025E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5528151052155599E+0; + v=0.2778665755515867E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6329386307803041E+0; + v=0.2830996616782929E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.8056516651369069E-1; + b=0.2363454684003124E-1; + v=0.1403063340168372E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1156476077139389E+0; + b=0.5191291632545936E-1; + v=0.1696504125939477E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1520473382760421E+0; + b=0.8322715736994519E-1; + v=0.1935787242745390E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1892986699745931E+0; + b=0.1165855667993712E+0; + v=0.2130614510521968E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2270194446777792E+0; + b=0.1513077167409504E+0; + v=0.2289381265931048E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2648908185093273E+0; + b=0.1868882025807859E+0; + v=0.2418630292816186E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3026389259574136E+0; + b=0.2229277629776224E+0; + v=0.2523400495631193E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3400220296151384E+0; + b=0.2590951840746235E+0; + v=0.2607623973449605E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3768217953335510E+0; + b=0.2951047291750847E+0; + v=0.2674441032689209E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4128372900921884E+0; + b=0.3307019714169930E+0; + v=0.2726432360343356E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4478807131815630E+0; + b=0.3656544101087634E+0; + v=0.2765787685924545E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4817742034089257E+0; + b=0.3997448951939695E+0; + v=0.2794428690642224E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5143472814653344E+0; + b=0.4327667110812024E+0; + v=0.2814099002062895E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5454346213905650E+0; + b=0.4645196123532293E+0; + v=0.2826429531578994E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5748739313170252E+0; + b=0.4948063555703345E+0; + v=0.2832983542550884E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1599598738286342E+0; + b=0.2792357590048985E-1; + v=0.1886695565284976E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1998097412500951E+0; + b=0.5877141038139065E-1; + v=0.2081867882748234E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2396228952566202E+0; + b=0.9164573914691377E-1; + v=0.2245148680600796E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2792228341097746E+0; + b=0.1259049641962687E+0; + v=0.2380370491511872E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3184251107546741E+0; + b=0.1610594823400863E+0; + v=0.2491398041852455E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3570481164426244E+0; + b=0.1967151653460898E+0; + v=0.2581632405881230E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3949164710492144E+0; + b=0.2325404606175168E+0; + v=0.2653965506227417E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4318617293970503E+0; + b=0.2682461141151439E+0; + v=0.2710857216747087E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4677221009931678E+0; + b=0.3035720116011973E+0; + v=0.2754434093903659E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5023417939270955E+0; + b=0.3382781859197439E+0; + v=0.2786579932519380E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5355701836636128E+0; + b=0.3721383065625942E+0; + v=0.2809011080679474E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5672608451328771E+0; + b=0.4049346360466055E+0; + v=0.2823336184560987E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5972704202540162E+0; + b=0.4364538098633802E+0; + v=0.2831101175806309E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2461687022333596E+0; + b=0.3070423166833368E-1; + v=0.2221679970354546E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2881774566286831E+0; + b=0.6338034669281885E-1; + v=0.2356185734270703E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3293963604116978E+0; + b=0.9742862487067941E-1; + v=0.2469228344805590E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3697303822241377E+0; + b=0.1323799532282290E+0; + v=0.2562726348642046E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4090663023135127E+0; + b=0.1678497018129336E+0; + v=0.2638756726753028E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4472819355411712E+0; + b=0.2035095105326114E+0; + v=0.2699311157390862E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4842513377231437E+0; + b=0.2390692566672091E+0; + v=0.2746233268403837E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5198477629962928E+0; + b=0.2742649818076149E+0; + v=0.2781225674454771E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5539453011883145E+0; + b=0.3088503806580094E+0; + v=0.2805881254045684E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5864196762401251E+0; + b=0.3425904245906614E+0; + v=0.2821719877004913E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6171484466668390E+0; + b=0.3752562294789468E+0; + v=0.2830222502333124E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3350337830565727E+0; + b=0.3261589934634747E-1; + v=0.2457995956744870E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3775773224758284E+0; + b=0.6658438928081572E-1; + v=0.2551474407503706E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4188155229848973E+0; + b=0.1014565797157954E+0; + v=0.2629065335195311E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4586805892009344E+0; + b=0.1368573320843822E+0; + v=0.2691900449925075E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4970895714224235E+0; + b=0.1724614851951608E+0; + v=0.2741275485754276E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5339505133960747E+0; + b=0.2079779381416412E+0; + v=0.2778530970122595E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5691665792531440E+0; + b=0.2431385788322288E+0; + v=0.2805010567646741E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6026387682680377E+0; + b=0.2776901883049853E+0; + v=0.2822055834031040E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6342676150163307E+0; + b=0.3113881356386632E+0; + v=0.2831016901243473E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4237951119537067E+0; + b=0.3394877848664351E-1; + v=0.2624474901131803E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4656918683234929E+0; + b=0.6880219556291447E-1; + v=0.2688034163039377E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5058857069185980E+0; + b=0.1041946859721635E+0; + v=0.2738932751287636E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5443204666713996E+0; + b=0.1398039738736393E+0; + v=0.2777944791242523E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5809298813759742E+0; + b=0.1753373381196155E+0; + v=0.2806011661660987E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6156416039447128E+0; + b=0.2105215793514010E+0; + v=0.2824181456597460E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6483801351066604E+0; + b=0.2450953312157051E+0; + v=0.2833585216577828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5103616577251688E+0; + b=0.3485560643800719E-1; + v=0.2738165236962878E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5506738792580681E+0; + b=0.7026308631512033E-1; + v=0.2778365208203180E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5889573040995292E+0; + b=0.1059035061296403E+0; + v=0.2807852940418966E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6251641589516930E+0; + b=0.1414823925236026E+0; + v=0.2827245949674705E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6592414921570178E+0; + b=0.1767207908214530E+0; + v=0.2837342344829828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5930314017533384E+0; + b=0.3542189339561672E-1; + v=0.2809233907610981E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6309812253390175E+0; + b=0.7109574040369549E-1; + v=0.2829930809742694E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6666296011353230E+0; + b=0.1067259792282730E+0; + v=0.2841097874111479E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6703715271049922E+0; + b=0.3569455268820809E-1; + v=0.2843455206008783E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 4334 + + v=0.1449063022537883E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2546377329828424E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1462896151831013E-1; + v=0.6018432961087496E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3769840812493139E-1; + v=0.1002286583263673E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6524701904096891E-1; + v=0.1315222931028093E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9560543416134648E-1; + v=0.1564213746876724E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1278335898929198E+0; + v=0.1765118841507736E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1613096104466031E+0; + v=0.1928737099311080E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1955806225745371E+0; + v=0.2062658534263270E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2302935218498028E+0; + v=0.2172395445953787E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2651584344113027E+0; + v=0.2262076188876047E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2999276825183209E+0; + v=0.2334885699462397E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3343828669718798E+0; + v=0.2393355273179203E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3683265013750518E+0; + v=0.2439559200468863E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4015763206518108E+0; + v=0.2475251866060002E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4339612026399770E+0; + v=0.2501965558158773E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4653180651114582E+0; + v=0.2521081407925925E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4954893331080803E+0; + v=0.2533881002388081E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5243207068924930E+0; + v=0.2541582900848261E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5516590479041704E+0; + v=0.2545365737525860E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6012371927804176E+0; + v=0.2545726993066799E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6231574466449819E+0; + v=0.2544456197465555E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6429416514181271E+0; + v=0.2543481596881064E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6604124272943595E+0; + v=0.2543506451429194E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6753851470408250E+0; + v=0.2544905675493763E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6876717970626160E+0; + v=0.2547611407344429E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6970895061319234E+0; + v=0.2551060375448869E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7034746912553310E+0; + v=0.2554291933816039E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7067017217542295E+0; + v=0.2556255710686343E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4382223501131123E-1; + v=0.9041339695118195E-4; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1117474077400006E+0; + v=0.1438426330079022E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1897153252911440E+0; + v=0.1802523089820518E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2724023009910331E+0; + v=0.2060052290565496E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3567163308709902E+0; + v=0.2245002248967466E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4404784483028087E+0; + v=0.2377059847731150E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5219833154161411E+0; + v=0.2468118955882525E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5998179868977553E+0; + v=0.2525410872966528E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6727803154548222E+0; + v=0.2553101409933397E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.7476563943166086E-1; + b=0.2193168509461185E-1; + v=0.1212879733668632E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1075341482001416E+0; + b=0.4826419281533887E-1; + v=0.1472872881270931E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1416344885203259E+0; + b=0.7751191883575742E-1; + v=0.1686846601010828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1766325315388586E+0; + b=0.1087558139247680E+0; + v=0.1862698414660208E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2121744174481514E+0; + b=0.1413661374253096E+0; + v=0.2007430956991861E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2479669443408145E+0; + b=0.1748768214258880E+0; + v=0.2126568125394796E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2837600452294113E+0; + b=0.2089216406612073E+0; + v=0.2224394603372113E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3193344933193984E+0; + b=0.2431987685545972E+0; + v=0.2304264522673135E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3544935442438745E+0; + b=0.2774497054377770E+0; + v=0.2368854288424087E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3890571932288154E+0; + b=0.3114460356156915E+0; + v=0.2420352089461772E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4228581214259090E+0; + b=0.3449806851913012E+0; + v=0.2460597113081295E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4557387211304052E+0; + b=0.3778618641248256E+0; + v=0.2491181912257687E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4875487950541643E+0; + b=0.4099086391698978E+0; + v=0.2513528194205857E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5181436529962997E+0; + b=0.4409474925853973E+0; + v=0.2528943096693220E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5473824095600661E+0; + b=0.4708094517711291E+0; + v=0.2538660368488136E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5751263398976174E+0; + b=0.4993275140354637E+0; + v=0.2543868648299022E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1489515746840028E+0; + b=0.2599381993267017E-1; + v=0.1642595537825183E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1863656444351767E+0; + b=0.5479286532462190E-1; + v=0.1818246659849308E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2238602880356348E+0; + b=0.8556763251425254E-1; + v=0.1966565649492420E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2612723375728160E+0; + b=0.1177257802267011E+0; + v=0.2090677905657991E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2984332990206190E+0; + b=0.1508168456192700E+0; + v=0.2193820409510504E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3351786584663333E+0; + b=0.1844801892177727E+0; + v=0.2278870827661928E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3713505522209120E+0; + b=0.2184145236087598E+0; + v=0.2348283192282090E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4067981098954663E+0; + b=0.2523590641486229E+0; + v=0.2404139755581477E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4413769993687534E+0; + b=0.2860812976901373E+0; + v=0.2448227407760734E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4749487182516394E+0; + b=0.3193686757808996E+0; + v=0.2482110455592573E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5073798105075426E+0; + b=0.3520226949547602E+0; + v=0.2507192397774103E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5385410448878654E+0; + b=0.3838544395667890E+0; + v=0.2524765968534880E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5683065353670530E+0; + b=0.4146810037640963E+0; + v=0.2536052388539425E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5965527620663510E+0; + b=0.4443224094681121E+0; + v=0.2542230588033068E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2299227700856157E+0; + b=0.2865757664057584E-1; + v=0.1944817013047896E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2695752998553267E+0; + b=0.5923421684485993E-1; + v=0.2067862362746635E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3086178716611389E+0; + b=0.9117817776057715E-1; + v=0.2172440734649114E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3469649871659077E+0; + b=0.1240593814082605E+0; + v=0.2260125991723423E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3845153566319655E+0; + b=0.1575272058259175E+0; + v=0.2332655008689523E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4211600033403215E+0; + b=0.1912845163525413E+0; + v=0.2391699681532458E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4567867834329882E+0; + b=0.2250710177858171E+0; + v=0.2438801528273928E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4912829319232061E+0; + b=0.2586521303440910E+0; + v=0.2475370504260665E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5245364793303812E+0; + b=0.2918112242865407E+0; + v=0.2502707235640574E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5564369788915756E+0; + b=0.3243439239067890E+0; + v=0.2522031701054241E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5868757697775287E+0; + b=0.3560536787835351E+0; + v=0.2534511269978784E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6157458853519617E+0; + b=0.3867480821242581E+0; + v=0.2541284914955151E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3138461110672113E+0; + b=0.3051374637507278E-1; + v=0.2161509250688394E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3542495872050569E+0; + b=0.6237111233730755E-1; + v=0.2248778513437852E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3935751553120181E+0; + b=0.9516223952401907E-1; + v=0.2322388803404617E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4317634668111147E+0; + b=0.1285467341508517E+0; + v=0.2383265471001355E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4687413842250821E+0; + b=0.1622318931656033E+0; + v=0.2432476675019525E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5044274237060283E+0; + b=0.1959581153836453E+0; + v=0.2471122223750674E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5387354077925727E+0; + b=0.2294888081183837E+0; + v=0.2500291752486870E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5715768898356105E+0; + b=0.2626031152713945E+0; + v=0.2521055942764682E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6028627200136111E+0; + b=0.2950904075286713E+0; + v=0.2534472785575503E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6325039812653463E+0; + b=0.3267458451113286E+0; + v=0.2541599713080121E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3981986708423407E+0; + b=0.3183291458749821E-1; + v=0.2317380975862936E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4382791182133300E+0; + b=0.6459548193880908E-1; + v=0.2378550733719775E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4769233057218166E+0; + b=0.9795757037087952E-1; + v=0.2428884456739118E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5140823911194238E+0; + b=0.1316307235126655E+0; + v=0.2469002655757292E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5496977833862983E+0; + b=0.1653556486358704E+0; + v=0.2499657574265851E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5837047306512727E+0; + b=0.1988931724126510E+0; + v=0.2521676168486082E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6160349566926879E+0; + b=0.2320174581438950E+0; + v=0.2535935662645334E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6466185353209440E+0; + b=0.2645106562168662E+0; + v=0.2543356743363214E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4810835158795404E+0; + b=0.3275917807743992E-1; + v=0.2427353285201535E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5199925041324341E+0; + b=0.6612546183967181E-1; + v=0.2468258039744386E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5571717692207494E+0; + b=0.9981498331474143E-1; + v=0.2500060956440310E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5925789250836378E+0; + b=0.1335687001410374E+0; + v=0.2523238365420979E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6261658523859670E+0; + b=0.1671444402896463E+0; + v=0.2538399260252846E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6578811126669331E+0; + b=0.2003106382156076E+0; + v=0.2546255927268069E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5609624612998100E+0; + b=0.3337500940231335E-1; + v=0.2500583360048449E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5979959659984670E+0; + b=0.6708750335901803E-1; + v=0.2524777638260203E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6330523711054002E+0; + b=0.1008792126424850E+0; + v=0.2540951193860656E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6660960998103972E+0; + b=0.1345050343171794E+0; + v=0.2549524085027472E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6365384364585819E+0; + b=0.3372799460737052E-1; + v=0.2542569507009158E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6710994302899275E+0; + b=0.6755249309678028E-1; + v=0.2552114127580376E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 4802 + + v=0.9687521879420705E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2307897895367918E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.2297310852498558E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2335728608887064E-1; + v=0.7386265944001919E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4352987836550653E-1; + v=0.8257977698542210E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6439200521088801E-1; + v=0.9706044762057630E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.9003943631993181E-1; + v=0.1302393847117003E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1196706615548473E+0; + v=0.1541957004600968E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1511715412838134E+0; + v=0.1704459770092199E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1835982828503801E+0; + v=0.1827374890942906E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2165081259155405E+0; + v=0.1926360817436107E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2496208720417563E+0; + v=0.2008010239494833E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2827200673567900E+0; + v=0.2075635983209175E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3156190823994346E+0; + v=0.2131306638690909E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3481476793749115E+0; + v=0.2176562329937335E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3801466086947226E+0; + v=0.2212682262991018E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4114652119634011E+0; + v=0.2240799515668565E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4419598786519751E+0; + v=0.2261959816187525E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4714925949329543E+0; + v=0.2277156368808855E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4999293972879466E+0; + v=0.2287351772128336E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5271387221431248E+0; + v=0.2293490814084085E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5529896780837761E+0; + v=0.2296505312376273E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6000856099481712E+0; + v=0.2296793832318756E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6210562192785175E+0; + v=0.2295785443842974E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6401165879934240E+0; + v=0.2295017931529102E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6571144029244334E+0; + v=0.2295059638184868E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6718910821718863E+0; + v=0.2296232343237362E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6842845591099010E+0; + v=0.2298530178740771E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6941353476269816E+0; + v=0.2301579790280501E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7012965242212991E+0; + v=0.2304690404996513E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7056471428242644E+0; + v=0.2307027995907102E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4595557643585895E-1; + v=0.9312274696671092E-4; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1049316742435023E+0; + v=0.1199919385876926E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1773548879549274E+0; + v=0.1598039138877690E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2559071411236127E+0; + v=0.1822253763574900E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3358156837985898E+0; + v=0.1988579593655040E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4155835743763893E+0; + v=0.2112620102533307E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4937894296167472E+0; + v=0.2201594887699007E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5691569694793316E+0; + v=0.2261622590895036E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6405840854894251E+0; + v=0.2296458453435705E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.7345133894143348E-1; + b=0.2177844081486067E-1; + v=0.1006006990267000E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1009859834044931E+0; + b=0.4590362185775188E-1; + v=0.1227676689635876E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1324289619748758E+0; + b=0.7255063095690877E-1; + v=0.1467864280270117E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1654272109607127E+0; + b=0.1017825451960684E+0; + v=0.1644178912101232E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1990767186776461E+0; + b=0.1325652320980364E+0; + v=0.1777664890718961E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2330125945523278E+0; + b=0.1642765374496765E+0; + v=0.1884825664516690E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2670080611108287E+0; + b=0.1965360374337889E+0; + v=0.1973269246453848E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3008753376294316E+0; + b=0.2290726770542238E+0; + v=0.2046767775855328E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3344475596167860E+0; + b=0.2616645495370823E+0; + v=0.2107600125918040E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3675709724070786E+0; + b=0.2941150728843141E+0; + v=0.2157416362266829E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4001000887587812E+0; + b=0.3262440400919066E+0; + v=0.2197557816920721E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4318956350436028E+0; + b=0.3578835350611916E+0; + v=0.2229192611835437E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4628239056795531E+0; + b=0.3888751854043678E+0; + v=0.2253385110212775E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4927563229773636E+0; + b=0.4190678003222840E+0; + v=0.2271137107548774E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5215687136707969E+0; + b=0.4483151836883852E+0; + v=0.2283414092917525E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5491402346984905E+0; + b=0.4764740676087880E+0; + v=0.2291161673130077E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5753520160126075E+0; + b=0.5034021310998277E+0; + v=0.2295313908576598E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1388326356417754E+0; + b=0.2435436510372806E-1; + v=0.1438204721359031E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1743686900537244E+0; + b=0.5118897057342652E-1; + v=0.1607738025495257E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2099737037950268E+0; + b=0.8014695048539634E-1; + v=0.1741483853528379E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2454492590908548E+0; + b=0.1105117874155699E+0; + v=0.1851918467519151E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2807219257864278E+0; + b=0.1417950531570966E+0; + v=0.1944628638070613E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3156842271975842E+0; + b=0.1736604945719597E+0; + v=0.2022495446275152E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3502090945177752E+0; + b=0.2058466324693981E+0; + v=0.2087462382438514E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3841684849519686E+0; + b=0.2381284261195919E+0; + v=0.2141074754818308E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4174372367906016E+0; + b=0.2703031270422569E+0; + v=0.2184640913748162E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4498926465011892E+0; + b=0.3021845683091309E+0; + v=0.2219309165220329E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4814146229807701E+0; + b=0.3335993355165720E+0; + v=0.2246123118340624E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5118863625734701E+0; + b=0.3643833735518232E+0; + v=0.2266062766915125E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5411947455119144E+0; + b=0.3943789541958179E+0; + v=0.2280072952230796E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5692301500357246E+0; + b=0.4234320144403542E+0; + v=0.2289082025202583E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5958857204139576E+0; + b=0.4513897947419260E+0; + v=0.2294012695120025E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2156270284785766E+0; + b=0.2681225755444491E-1; + v=0.1722434488736947E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2532385054909710E+0; + b=0.5557495747805614E-1; + v=0.1830237421455091E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2902564617771537E+0; + b=0.8569368062950249E-1; + v=0.1923855349997633E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3266979823143256E+0; + b=0.1167367450324135E+0; + v=0.2004067861936271E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3625039627493614E+0; + b=0.1483861994003304E+0; + v=0.2071817297354263E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3975838937548699E+0; + b=0.1803821503011405E+0; + v=0.2128250834102103E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4318396099009774E+0; + b=0.2124962965666424E+0; + v=0.2174513719440102E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4651706555732742E+0; + b=0.2445221837805913E+0; + v=0.2211661839150214E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4974752649620969E+0; + b=0.2762701224322987E+0; + v=0.2240665257813102E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5286517579627517E+0; + b=0.3075627775211328E+0; + v=0.2262439516632620E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5586001195731895E+0; + b=0.3382311089826877E+0; + v=0.2277874557231869E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5872229902021319E+0; + b=0.3681108834741399E+0; + v=0.2287854314454994E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6144258616235123E+0; + b=0.3970397446872839E+0; + v=0.2293268499615575E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2951676508064861E+0; + b=0.2867499538750441E-1; + v=0.1912628201529828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3335085485472725E+0; + b=0.5867879341903510E-1; + v=0.1992499672238701E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3709561760636381E+0; + b=0.8961099205022284E-1; + v=0.2061275533454027E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4074722861667498E+0; + b=0.1211627927626297E+0; + v=0.2119318215968572E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4429923648839117E+0; + b=0.1530748903554898E+0; + v=0.2167416581882652E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4774428052721736E+0; + b=0.1851176436721877E+0; + v=0.2206430730516600E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5107446539535904E+0; + b=0.2170829107658179E+0; + v=0.2237186938699523E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5428151370542935E+0; + b=0.2487786689026271E+0; + v=0.2260480075032884E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5735699292556964E+0; + b=0.2800239952795016E+0; + v=0.2277098884558542E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6029253794562866E+0; + b=0.3106445702878119E+0; + v=0.2287845715109671E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6307998987073145E+0; + b=0.3404689500841194E+0; + v=0.2293547268236294E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3752652273692719E+0; + b=0.2997145098184479E-1; + v=0.2056073839852528E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4135383879344028E+0; + b=0.6086725898678011E-1; + v=0.2114235865831876E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4506113885153907E+0; + b=0.9238849548435643E-1; + v=0.2163175629770551E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4864401554606072E+0; + b=0.1242786603851851E+0; + v=0.2203392158111650E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5209708076611709E+0; + b=0.1563086731483386E+0; + v=0.2235473176847839E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5541422135830122E+0; + b=0.1882696509388506E+0; + v=0.2260024141501235E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5858880915113817E+0; + b=0.2199672979126059E+0; + v=0.2277675929329182E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6161399390603444E+0; + b=0.2512165482924867E+0; + v=0.2289102112284834E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6448296482255090E+0; + b=0.2818368701871888E+0; + v=0.2295027954625118E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4544796274917948E+0; + b=0.3088970405060312E-1; + v=0.2161281589879992E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4919389072146628E+0; + b=0.6240947677636835E-1; + v=0.2201980477395102E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5279313026985183E+0; + b=0.9430706144280313E-1; + v=0.2234952066593166E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5624169925571135E+0; + b=0.1263547818770374E+0; + v=0.2260540098520838E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5953484627093287E+0; + b=0.1583430788822594E+0; + v=0.2279157981899988E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6266730715339185E+0; + b=0.1900748462555988E+0; + v=0.2291296918565571E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6563363204278871E+0; + b=0.2213599519592567E+0; + v=0.2297533752536649E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5314574716585696E+0; + b=0.3152508811515374E-1; + v=0.2234927356465995E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5674614932298185E+0; + b=0.6343865291465561E-1; + v=0.2261288012985219E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6017706004970264E+0; + b=0.9551503504223951E-1; + v=0.2280818160923688E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6343471270264178E+0; + b=0.1275440099801196E+0; + v=0.2293773295180159E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6651494599127802E+0; + b=0.1593252037671960E+0; + v=0.2300528767338634E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6050184986005704E+0; + b=0.3192538338496105E-1; + v=0.2281893855065666E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6390163550880400E+0; + b=0.6402824353962306E-1; + v=0.2295720444840727E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6711199107088448E+0; + b=0.9609805077002909E-1; + v=0.2303227649026753E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6741354429572275E+0; + b=0.3211853196273233E-1; + v=0.2304831913227114E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 5294 + + v=0.9080510764308163E-4; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.2084824361987793E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.2303261686261450E-1; + v=0.5011105657239616E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3757208620162394E-1; + v=0.5942520409683854E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5821912033821852E-1; + v=0.9564394826109721E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.8403127529194872E-1; + v=0.1185530657126338E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1122927798060578E+0; + v=0.1364510114230331E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1420125319192987E+0; + v=0.1505828825605415E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1726396437341978E+0; + v=0.1619298749867023E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2038170058115696E+0; + v=0.1712450504267789E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2352849892876508E+0; + v=0.1789891098164999E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2668363354312461E+0; + v=0.1854474955629795E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2982941279900452E+0; + v=0.1908148636673661E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3295002922087076E+0; + v=0.1952377405281833E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3603094918363593E+0; + v=0.1988349254282232E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3905857895173920E+0; + v=0.2017079807160050E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4202005758160837E+0; + v=0.2039473082709094E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4490310061597227E+0; + v=0.2056360279288953E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4769586160311491E+0; + v=0.2068525823066865E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5038679887049750E+0; + v=0.2076724877534488E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5296454286519961E+0; + v=0.2081694278237885E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5541776207164850E+0; + v=0.2084157631219326E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5990467321921213E+0; + v=0.2084381531128593E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6191467096294587E+0; + v=0.2083476277129307E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6375251212901849E+0; + v=0.2082686194459732E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6540514381131168E+0; + v=0.2082475686112415E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6685899064391510E+0; + v=0.2083139860289915E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6810013009681648E+0; + v=0.2084745561831237E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6911469578730340E+0; + v=0.2087091313375890E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6988956915141736E+0; + v=0.2089718413297697E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7041335794868720E+0; + v=0.2092003303479793E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7067754398018567E+0; + v=0.2093336148263241E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3840368707853623E-1; + v=0.7591708117365267E-4; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9835485954117399E-1; + v=0.1083383968169186E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1665774947612998E+0; + v=0.1403019395292510E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2405702335362910E+0; + v=0.1615970179286436E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3165270770189046E+0; + v=0.1771144187504911E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3927386145645443E+0; + v=0.1887760022988168E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4678825918374656E+0; + v=0.1973474670768214E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5408022024266935E+0; + v=0.2033787661234659E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6104967445752438E+0; + v=0.2072343626517331E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6760910702685738E+0; + v=0.2091177834226918E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6655644120217392E-1; + b=0.1936508874588424E-1; + v=0.9316684484675566E-4; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.9446246161270182E-1; + b=0.4252442002115869E-1; + v=0.1116193688682976E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1242651925452509E+0; + b=0.6806529315354374E-1; + v=0.1298623551559414E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1553438064846751E+0; + b=0.9560957491205369E-1; + v=0.1450236832456426E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1871137110542670E+0; + b=0.1245931657452888E+0; + v=0.1572719958149914E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2192612628836257E+0; + b=0.1545385828778978E+0; + v=0.1673234785867195E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2515682807206955E+0; + b=0.1851004249723368E+0; + v=0.1756860118725188E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2838535866287290E+0; + b=0.2160182608272384E+0; + v=0.1826776290439367E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3159578817528521E+0; + b=0.2470799012277111E+0; + v=0.1885116347992865E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3477370882791392E+0; + b=0.2781014208986402E+0; + v=0.1933457860170574E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3790576960890540E+0; + b=0.3089172523515731E+0; + v=0.1973060671902064E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4097938317810200E+0; + b=0.3393750055472244E+0; + v=0.2004987099616311E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4398256572859637E+0; + b=0.3693322470987730E+0; + v=0.2030170909281499E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4690384114718480E+0; + b=0.3986541005609877E+0; + v=0.2049461460119080E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4973216048301053E+0; + b=0.4272112491408562E+0; + v=0.2063653565200186E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5245681526132446E+0; + b=0.4548781735309936E+0; + v=0.2073507927381027E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5506733911803888E+0; + b=0.4815315355023251E+0; + v=0.2079764593256122E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5755339829522475E+0; + b=0.5070486445801855E+0; + v=0.2083150534968778E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1305472386056362E+0; + b=0.2284970375722366E-1; + v=0.1262715121590664E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1637327908216477E+0; + b=0.4812254338288384E-1; + v=0.1414386128545972E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1972734634149637E+0; + b=0.7531734457511935E-1; + v=0.1538740401313898E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2308694653110130E+0; + b=0.1039043639882017E+0; + v=0.1642434942331432E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2643899218338160E+0; + b=0.1334526587117626E+0; + v=0.1729790609237496E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2977171599622171E+0; + b=0.1636414868936382E+0; + v=0.1803505190260828E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3307293903032310E+0; + b=0.1942195406166568E+0; + v=0.1865475350079657E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3633069198219073E+0; + b=0.2249752879943753E+0; + v=0.1917182669679069E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3953346955922727E+0; + b=0.2557218821820032E+0; + v=0.1959851709034382E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4267018394184914E+0; + b=0.2862897925213193E+0; + v=0.1994529548117882E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4573009622571704E+0; + b=0.3165224536636518E+0; + v=0.2022138911146548E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4870279559856109E+0; + b=0.3462730221636496E+0; + v=0.2043518024208592E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5157819581450322E+0; + b=0.3754016870282835E+0; + v=0.2059450313018110E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5434651666465393E+0; + b=0.4037733784993613E+0; + v=0.2070685715318472E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5699823887764627E+0; + b=0.4312557784139123E+0; + v=0.2077955310694373E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5952403350947741E+0; + b=0.4577175367122110E+0; + v=0.2081980387824712E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2025152599210369E+0; + b=0.2520253617719557E-1; + v=0.1521318610377956E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2381066653274425E+0; + b=0.5223254506119000E-1; + v=0.1622772720185755E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2732823383651612E+0; + b=0.8060669688588620E-1; + v=0.1710498139420709E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3080137692611118E+0; + b=0.1099335754081255E+0; + v=0.1785911149448736E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3422405614587601E+0; + b=0.1399120955959857E+0; + v=0.1850125313687736E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3758808773890420E+0; + b=0.1702977801651705E+0; + v=0.1904229703933298E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4088458383438932E+0; + b=0.2008799256601680E+0; + v=0.1949259956121987E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4410450550841152E+0; + b=0.2314703052180836E+0; + v=0.1986161545363960E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4723879420561312E+0; + b=0.2618972111375892E+0; + v=0.2015790585641370E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5027843561874343E+0; + b=0.2920013195600270E+0; + v=0.2038934198707418E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5321453674452458E+0; + b=0.3216322555190551E+0; + v=0.2056334060538251E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5603839113834030E+0; + b=0.3506456615934198E+0; + v=0.2068705959462289E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5874150706875146E+0; + b=0.3789007181306267E+0; + v=0.2076753906106002E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6131559381660038E+0; + b=0.4062580170572782E+0; + v=0.2081179391734803E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2778497016394506E+0; + b=0.2696271276876226E-1; + v=0.1700345216228943E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3143733562261912E+0; + b=0.5523469316960465E-1; + v=0.1774906779990410E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3501485810261827E+0; + b=0.8445193201626464E-1; + v=0.1839659377002642E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3851430322303653E+0; + b=0.1143263119336083E+0; + v=0.1894987462975169E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4193013979470415E+0; + b=0.1446177898344475E+0; + v=0.1941548809452595E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4525585960458567E+0; + b=0.1751165438438091E+0; + v=0.1980078427252384E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4848447779622947E+0; + b=0.2056338306745660E+0; + v=0.2011296284744488E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5160871208276894E+0; + b=0.2359965487229226E+0; + v=0.2035888456966776E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5462112185696926E+0; + b=0.2660430223139146E+0; + v=0.2054516325352142E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5751425068101757E+0; + b=0.2956193664498032E+0; + v=0.2067831033092635E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6028073872853596E+0; + b=0.3245763905312779E+0; + v=0.2076485320284876E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6291338275278409E+0; + b=0.3527670026206972E+0; + v=0.2081141439525255E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3541797528439391E+0; + b=0.2823853479435550E-1; + v=0.1834383015469222E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3908234972074657E+0; + b=0.5741296374713106E-1; + v=0.1889540591777677E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4264408450107590E+0; + b=0.8724646633650199E-1; + v=0.1936677023597375E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4609949666553286E+0; + b=0.1175034422915616E+0; + v=0.1976176495066504E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4944389496536006E+0; + b=0.1479755652628428E+0; + v=0.2008536004560983E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5267194884346086E+0; + b=0.1784740659484352E+0; + v=0.2034280351712291E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5577787810220990E+0; + b=0.2088245700431244E+0; + v=0.2053944466027758E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5875563763536670E+0; + b=0.2388628136570763E+0; + v=0.2068077642882360E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6159910016391269E+0; + b=0.2684308928769185E+0; + v=0.2077250949661599E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6430219602956268E+0; + b=0.2973740761960252E+0; + v=0.2082062440705320E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4300647036213646E+0; + b=0.2916399920493977E-1; + v=0.1934374486546626E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4661486308935531E+0; + b=0.5898803024755659E-1; + v=0.1974107010484300E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5009658555287261E+0; + b=0.8924162698525409E-1; + v=0.2007129290388658E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5344824270447704E+0; + b=0.1197185199637321E+0; + v=0.2033736947471293E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5666575997416371E+0; + b=0.1502300756161382E+0; + v=0.2054287125902493E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5974457471404752E+0; + b=0.1806004191913564E+0; + v=0.2069184936818894E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6267984444116886E+0; + b=0.2106621764786252E+0; + v=0.2078883689808782E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6546664713575417E+0; + b=0.2402526932671914E+0; + v=0.2083886366116359E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5042711004437253E+0; + b=0.2982529203607657E-1; + v=0.2006593275470817E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5392127456774380E+0; + b=0.6008728062339922E-1; + v=0.2033728426135397E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5726819437668618E+0; + b=0.9058227674571398E-1; + v=0.2055008781377608E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6046469254207278E+0; + b=0.1211219235803400E+0; + v=0.2070651783518502E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6350716157434952E+0; + b=0.1515286404791580E+0; + v=0.2080953335094320E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6639177679185454E+0; + b=0.1816314681255552E+0; + v=0.2086284998988521E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5757276040972253E+0; + b=0.3026991752575440E-1; + v=0.2055549387644668E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6090265823139755E+0; + b=0.6078402297870770E-1; + v=0.2071871850267654E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6406735344387661E+0; + b=0.9135459984176636E-1; + v=0.2082856600431965E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6706397927793709E+0; + b=0.1218024155966590E+0; + v=0.2088705858819358E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6435019674426665E+0; + b=0.3052608357660639E-1; + v=0.2083995867536322E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6747218676375681E+0; + b=0.6112185773983089E-1; + v=0.2090509712889637E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + case 5810 + + v=0.9735347946175486E-5; + [leb_tmp start] = getLebedevReccurencePoints(1,start,a,b,v,leb_tmp); + v=0.1907581241803167E-3; + [leb_tmp start] = getLebedevReccurencePoints(2,start,a,b,v,leb_tmp); + v=0.1901059546737578E-3; + [leb_tmp start] = getLebedevReccurencePoints(3,start,a,b,v,leb_tmp); + a=0.1182361662400277E-1; + v=0.3926424538919212E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3062145009138958E-1; + v=0.6667905467294382E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5329794036834243E-1; + v=0.8868891315019135E-4; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7848165532862220E-1; + v=0.1066306000958872E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1054038157636201E+0; + v=0.1214506743336128E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1335577797766211E+0; + v=0.1338054681640871E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1625769955502252E+0; + v=0.1441677023628504E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.1921787193412792E+0; + v=0.1528880200826557E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2221340534690548E+0; + v=0.1602330623773609E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2522504912791132E+0; + v=0.1664102653445244E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.2823610860679697E+0; + v=0.1715845854011323E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3123173966267560E+0; + v=0.1758901000133069E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3419847036953789E+0; + v=0.1794382485256736E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3712386456999758E+0; + v=0.1823238106757407E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3999627649876828E+0; + v=0.1846293252959976E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4280466458648093E+0; + v=0.1864284079323098E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4553844360185711E+0; + v=0.1877882694626914E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.4818736094437834E+0; + v=0.1887716321852025E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5074138709260629E+0; + v=0.1894381638175673E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5319061304570707E+0; + v=0.1898454899533629E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5552514978677286E+0; + v=0.1900497929577815E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.5981009025246183E+0; + v=0.1900671501924092E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6173990192228116E+0; + v=0.1899837555533510E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6351365239411131E+0; + v=0.1899014113156229E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6512010228227200E+0; + v=0.1898581257705106E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6654758363948120E+0; + v=0.1898804756095753E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6778410414853370E+0; + v=0.1899793610426402E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6881760887484110E+0; + v=0.1901464554844117E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.6963645267094598E+0; + v=0.1903533246259542E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7023010617153579E+0; + v=0.1905556158463228E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.7059004636628753E+0; + v=0.1907037155663528E-3; + [leb_tmp start] = getLebedevReccurencePoints(4,start,a,b,v,leb_tmp); + a=0.3552470312472575E-1; + v=0.5992997844249967E-4; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.9151176620841283E-1; + v=0.9749059382456978E-4; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.1566197930068980E+0; + v=0.1241680804599158E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2265467599271907E+0; + v=0.1437626154299360E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.2988242318581361E+0; + v=0.1584200054793902E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.3717482419703886E+0; + v=0.1694436550982744E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.4440094491758889E+0; + v=0.1776617014018108E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5145337096756642E+0; + v=0.1836132434440077E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.5824053672860230E+0; + v=0.1876494727075983E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6468283961043370E+0; + v=0.1899906535336482E-3; + [leb_tmp start] = getLebedevReccurencePoints(5,start,a,b,v,leb_tmp); + a=0.6095964259104373E-1; + b=0.1787828275342931E-1; + v=0.8143252820767350E-4; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.8811962270959388E-1; + b=0.3953888740792096E-1; + v=0.9998859890887728E-4; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1165936722428831E+0; + b=0.6378121797722990E-1; + v=0.1156199403068359E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1460232857031785E+0; + b=0.8985890813745037E-1; + v=0.1287632092635513E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1761197110181755E+0; + b=0.1172606510576162E+0; + v=0.1398378643365139E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2066471190463718E+0; + b=0.1456102876970995E+0; + v=0.1491876468417391E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2374076026328152E+0; + b=0.1746153823011775E+0; + v=0.1570855679175456E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2682305474337051E+0; + b=0.2040383070295584E+0; + v=0.1637483948103775E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2989653312142369E+0; + b=0.2336788634003698E+0; + v=0.1693500566632843E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3294762752772209E+0; + b=0.2633632752654219E+0; + v=0.1740322769393633E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3596390887276086E+0; + b=0.2929369098051601E+0; + v=0.1779126637278296E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3893383046398812E+0; + b=0.3222592785275512E+0; + v=0.1810908108835412E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4184653789358347E+0; + b=0.3512004791195743E+0; + v=0.1836529132600190E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4469172319076166E+0; + b=0.3796385677684537E+0; + v=0.1856752841777379E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4745950813276976E+0; + b=0.4074575378263879E+0; + v=0.1872270566606832E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5014034601410262E+0; + b=0.4345456906027828E+0; + v=0.1883722645591307E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5272493404551239E+0; + b=0.4607942515205134E+0; + v=0.1891714324525297E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5520413051846366E+0; + b=0.4860961284181720E+0; + v=0.1896827480450146E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5756887237503077E+0; + b=0.5103447395342790E+0; + v=0.1899628417059528E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1225039430588352E+0; + b=0.2136455922655793E-1; + v=0.1123301829001669E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1539113217321372E+0; + b=0.4520926166137188E-1; + v=0.1253698826711277E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1856213098637712E+0; + b=0.7086468177864818E-1; + v=0.1366266117678531E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2174998728035131E+0; + b=0.9785239488772918E-1; + v=0.1462736856106918E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2494128336938330E+0; + b=0.1258106396267210E+0; + v=0.1545076466685412E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2812321562143480E+0; + b=0.1544529125047001E+0; + v=0.1615096280814007E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3128372276456111E+0; + b=0.1835433512202753E+0; + v=0.1674366639741759E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3441145160177973E+0; + b=0.2128813258619585E+0; + v=0.1724225002437900E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3749567714853510E+0; + b=0.2422913734880829E+0; + v=0.1765810822987288E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4052621732015610E+0; + b=0.2716163748391453E+0; + v=0.1800104126010751E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4349335453522385E+0; + b=0.3007127671240280E+0; + v=0.1827960437331284E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4638776641524965E+0; + b=0.3294470677216479E+0; + v=0.1850140300716308E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4920046410462687E+0; + b=0.3576932543699155E+0; + v=0.1867333507394938E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5192273554861704E+0; + b=0.3853307059757764E+0; + v=0.1880178688638289E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5454609081136522E+0; + b=0.4122425044452694E+0; + v=0.1889278925654758E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5706220661424140E+0; + b=0.4383139587781027E+0; + v=0.1895213832507346E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5946286755181518E+0; + b=0.4634312536300553E+0; + v=0.1898548277397420E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.1905370790924295E+0; + b=0.2371311537781979E-1; + v=0.1349105935937341E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2242518717748009E+0; + b=0.4917878059254806E-1; + v=0.1444060068369326E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2577190808025936E+0; + b=0.7595498960495142E-1; + v=0.1526797390930008E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2908724534927187E+0; + b=0.1036991083191100E+0; + v=0.1598208771406474E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3236354020056219E+0; + b=0.1321348584450234E+0; + v=0.1659354368615331E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3559267359304543E+0; + b=0.1610316571314789E+0; + v=0.1711279910946440E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3876637123676956E+0; + b=0.1901912080395707E+0; + v=0.1754952725601440E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4187636705218842E+0; + b=0.2194384950137950E+0; + v=0.1791247850802529E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4491449019883107E+0; + b=0.2486155334763858E+0; + v=0.1820954300877716E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4787270932425445E+0; + b=0.2775768931812335E+0; + v=0.1844788524548449E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5074315153055574E+0; + b=0.3061863786591120E+0; + v=0.1863409481706220E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5351810507738336E+0; + b=0.3343144718152556E+0; + v=0.1877433008795068E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5619001025975381E+0; + b=0.3618362729028427E+0; + v=0.1887444543705232E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5875144035268046E+0; + b=0.3886297583620408E+0; + v=0.1894009829375006E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6119507308734495E+0; + b=0.4145742277792031E+0; + v=0.1897683345035198E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2619733870119463E+0; + b=0.2540047186389353E-1; + v=0.1517327037467653E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.2968149743237949E+0; + b=0.5208107018543989E-1; + v=0.1587740557483543E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3310451504860488E+0; + b=0.7971828470885599E-1; + v=0.1649093382274097E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3646215567376676E+0; + b=0.1080465999177927E+0; + v=0.1701915216193265E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3974916785279360E+0; + b=0.1368413849366629E+0; + v=0.1746847753144065E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4295967403772029E+0; + b=0.1659073184763559E+0; + v=0.1784555512007570E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4608742854473447E+0; + b=0.1950703730454614E+0; + v=0.1815687562112174E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4912598858949903E+0; + b=0.2241721144376724E+0; + v=0.1840864370663302E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5206882758945558E+0; + b=0.2530655255406489E+0; + v=0.1860676785390006E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5490940914019819E+0; + b=0.2816118409731066E+0; + v=0.1875690583743703E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5764123302025542E+0; + b=0.3096780504593238E+0; + v=0.1886453236347225E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6025786004213506E+0; + b=0.3371348366394987E+0; + v=0.1893501123329645E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6275291964794956E+0; + b=0.3638547827694396E+0; + v=0.1897366184519868E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3348189479861771E+0; + b=0.2664841935537443E-1; + v=0.1643908815152736E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.3699515545855295E+0; + b=0.5424000066843495E-1; + v=0.1696300350907768E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4042003071474669E+0; + b=0.8251992715430854E-1; + v=0.1741553103844483E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4375320100182624E+0; + b=0.1112695182483710E+0; + v=0.1780015282386092E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4699054490335947E+0; + b=0.1402964116467816E+0; + v=0.1812116787077125E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5012739879431952E+0; + b=0.1694275117584291E+0; + v=0.1838323158085421E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5315874883754966E+0; + b=0.1985038235312689E+0; + v=0.1859113119837737E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5607937109622117E+0; + b=0.2273765660020893E+0; + v=0.1874969220221698E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5888393223495521E+0; + b=0.2559041492849764E+0; + v=0.1886375612681076E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6156705979160163E+0; + b=0.2839497251976899E+0; + v=0.1893819575809276E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6412338809078123E+0; + b=0.3113791060500690E+0; + v=0.1897794748256767E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4076051259257167E+0; + b=0.2757792290858463E-1; + v=0.1738963926584846E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4423788125791520E+0; + b=0.5584136834984293E-1; + v=0.1777442359873466E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4760480917328258E+0; + b=0.8457772087727143E-1; + v=0.1810010815068719E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5085838725946297E+0; + b=0.1135975846359248E+0; + v=0.1836920318248129E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5399513637391218E+0; + b=0.1427286904765053E+0; + v=0.1858489473214328E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5701118433636380E+0; + b=0.1718112740057635E+0; + v=0.1875079342496592E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5990240530606021E+0; + b=0.2006944855985351E+0; + v=0.1887080239102310E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6266452685139695E+0; + b=0.2292335090598907E+0; + v=0.1894905752176822E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6529320971415942E+0; + b=0.2572871512353714E+0; + v=0.1898991061200695E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.4791583834610126E+0; + b=0.2826094197735932E-1; + v=0.1809065016458791E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5130373952796940E+0; + b=0.5699871359683649E-1; + v=0.1836297121596799E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5456252429628476E+0; + b=0.8602712528554394E-1; + v=0.1858426916241869E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5768956329682385E+0; + b=0.1151748137221281E+0; + v=0.1875654101134641E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6068186944699046E+0; + b=0.1442811654136362E+0; + v=0.1888240751833503E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6353622248024907E+0; + b=0.1731930321657680E+0; + v=0.1896497383866979E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6624927035731797E+0; + b=0.2017619958756061E+0; + v=0.1900775530219121E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5484933508028488E+0; + b=0.2874219755907391E-1; + v=0.1858525041478814E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.5810207682142106E+0; + b=0.5778312123713695E-1; + v=0.1876248690077947E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6120955197181352E+0; + b=0.8695262371439526E-1; + v=0.1889404439064607E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6416944284294319E+0; + b=0.1160893767057166E+0; + v=0.1898168539265290E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6697926391731260E+0; + b=0.1450378826743251E+0; + v=0.1902779940661772E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6147594390585488E+0; + b=0.2904957622341456E-1; + v=0.1890125641731815E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6455390026356783E+0; + b=0.5823809152617197E-1; + v=0.1899434637795751E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6747258588365477E+0; + b=0.8740384899884715E-1; + v=0.1904520856831751E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + a=0.6772135750395347E+0; + b=0.2919946135808105E-1; + v=0.1905534498734563E-3; + [leb_tmp start] = getLebedevReccurencePoints(6,start,a,b,v,leb_tmp); + + + otherwise + error('Angular grid unrecognized, choices are 6, 14, 26, 38, 50, 74, 86, 110, 146, 170, 194, 230, 266, 302, 350, 434, 590, 770, 974, 1202, 1454, 1730, 2030, 2354, 2702, 3074, 3470, 3890, 4334, 4802, 5294, 5810'); + +end +leb_tmp.n = degree; +end +function [leb start] = getLebedevReccurencePoints(type, start, a, b, v, leb) + + +c = 0.0; + +switch (type) + + case 1 + a = 1.0; + + leb.x(start) = a; + leb.y(start) = 0.0; + leb.z(start) = 0.0; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = -a; + leb.y(start+1) = 0.0; + leb.z(start+1) = 0.0; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = 0.0; + leb.y(start+2) = a; + leb.z(start+2) = 0.0; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = 0.0; + leb.y(start+3) = -a; + leb.z(start+3) = 0.0; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = 0.0; + leb.y(start+4) = 0.0; + leb.z(start+4) = a; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = 0.0; + leb.y(start+5) = 0.0; + leb.z(start+5) = -a; + leb.w(start+5) = 4.0*pi*v; + start = start+6; + + + case 2 + a = sqrt(0.5); + leb.x(start) = 0.0; + leb.y(start) = a; + leb.z(start) = a; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = 0.0; + leb.y(start+1) = -a; + leb.z(start+1) = a; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = 0.0; + leb.y(start+2) = a; + leb.z(start+2) = -a; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = 0.0; + leb.y(start+3) = -a; + leb.z(start+3) = -a; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = a; + leb.y(start+4) = 0.0; + leb.z(start+4) = a; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = a; + leb.y(start+5) = 0.0; + leb.z(start+5) = -a; + leb.w(start+5) = 4.0*pi*v; + + leb.x(start+6) = -a; + leb.y(start+6) = 0.0; + leb.z(start+6) = a; + leb.w(start+6) = 4.0*pi*v; + + leb.x(start+7) = -a; + leb.y(start+7) = 0.0; + leb.z(start+7) = -a; + leb.w(start+7) = 4.0*pi*v; + + leb.x(start+8) = a; + leb.y(start+8) = a; + leb.z(start+8) = 0.0; + leb.w(start+8) = 4.0*pi*v; + + leb.x(start+9) = -a; + leb.y(start+9) = a; + leb.z(start+9) = 0.0; + leb.w(start+9) = 4.0*pi*v; + + leb.x(start+10) = a; + leb.y(start+10) = -a; + leb.z(start+10) = 0.0; + leb.w(start+10) = 4.0*pi*v; + + leb.x(start+11) = -a; + leb.y(start+11) = -a; + leb.z(start+11) = 0.0; + leb.w(start+11) = 4.0*pi*v; + start = start+12; + + + case 3 + a = sqrt(1.0/3.0); + leb.x(start) = a; + leb.y(start) = a; + leb.z(start) = a; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = -a; + leb.y(start+1) = a; + leb.z(start+1) = a; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = a; + leb.y(start+2) = -a; + leb.z(start+2) = a; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = a; + leb.y(start+3) = a; + leb.z(start+3) = -a; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = -a; + leb.y(start+4) = -a; + leb.z(start+4) = a; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = a; + leb.y(start+5) = -a; + leb.z(start+5) = -a; + leb.w(start+5) = 4.0*pi*v; + + leb.x(start+6) = -a; + leb.y(start+6) = a; + leb.z(start+6) = -a; + leb.w(start+6) = 4.0*pi*v; + + leb.x(start+7) = -a; + leb.y(start+7) = -a; + leb.z(start+7) = -a; + leb.w(start+7) = 4.0*pi*v; + start = start+8; + + + case 4 + %/* In this case A is inputed */ + b = sqrt(1.0 - 2.0*a*a); + leb.x(start) = a; + leb.y(start) = a; + leb.z(start) = b; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = -a; + leb.y(start+1) = a; + leb.z(start+1) = b; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = a; + leb.y(start+2) = -a; + leb.z(start+2) = b; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = a; + leb.y(start+3) = a; + leb.z(start+3) = -b; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = -a; + leb.y(start+4) = -a; + leb.z(start+4) = b; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = -a; + leb.y(start+5) = a; + leb.z(start+5) = -b; + leb.w(start+5) = 4.0*pi*v; + + leb.x(start+6) = a; + leb.y(start+6) = -a; + leb.z(start+6) = -b; + leb.w(start+6) = 4.0*pi*v; + + leb.x(start+7) = -a; + leb.y(start+7) = -a; + leb.z(start+7) = -b; + leb.w(start+7) = 4.0*pi*v; + + leb.x(start+8) = -a; + leb.y(start+8) = b; + leb.z(start+8) = a; + leb.w(start+8) = 4.0*pi*v; + + leb.x(start+9) = a; + leb.y(start+9) = -b; + leb.z(start+9) = a; + leb.w(start+9) = 4.0*pi*v; + + leb.x(start+10) = a; + leb.y(start+10) = b; + leb.z(start+10) = -a; + leb.w(start+10) = 4.0*pi*v; + + leb.x(start+11) = -a; + leb.y(start+11) = -b; + leb.z(start+11) = a; + leb.w(start+11) = 4.0*pi*v; + + leb.x(start+12) = -a; + leb.y(start+12) = b; + leb.z(start+12) = -a; + leb.w(start+12) = 4.0*pi*v; + + leb.x(start+13) = a; + leb.y(start+13) = -b; + leb.z(start+13) = -a; + leb.w(start+13) = 4.0*pi*v; + + leb.x(start+14) = -a; + leb.y(start+14) = -b; + leb.z(start+14) = -a; + leb.w(start+14) = 4.0*pi*v; + + leb.x(start+15) = a; + leb.y(start+15) = b; + leb.z(start+15) = a; + leb.w(start+15) = 4.0*pi*v; + + leb.x(start+16) = b; + leb.y(start+16) = a; + leb.z(start+16) = a; + leb.w(start+16) = 4.0*pi*v; + + leb.x(start+17) = -b; + leb.y(start+17) = a; + leb.z(start+17) = a; + leb.w(start+17) = 4.0*pi*v; + + leb.x(start+18) = b; + leb.y(start+18) = -a; + leb.z(start+18) = a; + leb.w(start+18) = 4.0*pi*v; + + leb.x(start+19) = b; + leb.y(start+19) = a; + leb.z(start+19) = -a; + leb.w(start+19) = 4.0*pi*v; + + leb.x(start+20) = -b; + leb.y(start+20) = -a; + leb.z(start+20) = a; + leb.w(start+20) = 4.0*pi*v; + + leb.x(start+21) = -b; + leb.y(start+21) = a; + leb.z(start+21) = -a; + leb.w(start+21) = 4.0*pi*v; + + leb.x(start+22) = b; + leb.y(start+22) = -a; + leb.z(start+22) = -a; + leb.w(start+22) = 4.0*pi*v; + + leb.x(start+23) = -b; + leb.y(start+23) = -a; + leb.z(start+23) = -a; + leb.w(start+23) = 4.0*pi*v; + start = start + 24; + + + case 5 + %/* A is inputed in this case as well*/ + b=sqrt(1-a*a); + leb.x(start) = a; + leb.y(start) = b; + leb.z(start) = 0.0; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = -a; + leb.y(start+1) = b; + leb.z(start+1) = 0.0; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = a; + leb.y(start+2) = -b; + leb.z(start+2) = 0.0; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = -a; + leb.y(start+3) = -b; + leb.z(start+3) = 0.0; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = b; + leb.y(start+4) = a; + leb.z(start+4) = 0.0; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = -b; + leb.y(start+5) = a; + leb.z(start+5) = 0.0; + leb.w(start+5) = 4.0*pi*v; + + leb.x(start+6) = b; + leb.y(start+6) = -a; + leb.z(start+6) = 0.0; + leb.w(start+6) = 4.0*pi*v; + + leb.x(start+7) = -b; + leb.y(start+7) = -a; + leb.z(start+7) = 0.0; + leb.w(start+7) = 4.0*pi*v; + + leb.x(start+8) = a; + leb.y(start+8) = 0.0; + leb.z(start+8) = b; + leb.w(start+8) = 4.0*pi*v; + + leb.x(start+9) = -a; + leb.y(start+9) = 0.0; + leb.z(start+9) = b; + leb.w(start+9) = 4.0*pi*v; + + leb.x(start+10) = a; + leb.y(start+10) = 0.0; + leb.z(start+10) = -b; + leb.w(start+10) = 4.0*pi*v; + + leb.x(start+11) = -a; + leb.y(start+11) = 0.0; + leb.z(start+11) = -b; + leb.w(start+11) = 4.0*pi*v; + + leb.x(start+12) = b; + leb.y(start+12) = 0.0; + leb.z(start+12) = a; + leb.w(start+12) = 4.0*pi*v; + + leb.x(start+13) = -b; + leb.y(start+13) = 0.0; + leb.z(start+13) = a; + leb.w(start+13) = 4.0*pi*v; + + leb.x(start+14) = b; + leb.y(start+14) = 0.0; + leb.z(start+14) = -a; + leb.w(start+14) = 4.0*pi*v; + + leb.x(start+15) = -b; + leb.y(start+15) = 0.0; + leb.z(start+15) = -a; + leb.w(start+15) = 4.0*pi*v; + + leb.x(start+16) = 0.0; + leb.y(start+16) = a; + leb.z(start+16) = b; + leb.w(start+16) = 4.0*pi*v; + + leb.x(start+17) = 0.0; + leb.y(start+17) = -a; + leb.z(start+17) = b; + leb.w(start+17) = 4.0*pi*v; + + leb.x(start+18) = 0.0; + leb.y(start+18) = a; + leb.z(start+18) = -b; + leb.w(start+18) = 4.0*pi*v; + + leb.x(start+19) = 0.0; + leb.y(start+19) = -a; + leb.z(start+19) = -b; + leb.w(start+19) = 4.0*pi*v; + + leb.x(start+20) = 0.0; + leb.y(start+20) = b; + leb.z(start+20) = a; + leb.w(start+20) = 4.0*pi*v; + + leb.x(start+21) = 0.0; + leb.y(start+21) = -b; + leb.z(start+21) = a; + leb.w(start+21) = 4.0*pi*v; + + leb.x(start+22) = 0.0; + leb.y(start+22) = b; + leb.z(start+22) = -a; + leb.w(start+22) = 4.0*pi*v; + + leb.x(start+23) = 0.0; + leb.y(start+23) = -b; + leb.z(start+23) = -a; + leb.w(start+23) = 4.0*pi*v; + start = start + 24; + + + case 6 + %/* both A and B are inputed in this case */ + c=sqrt(1.0 - a*a - b*b); + leb.x(start) = a; + leb.y(start) = b; + leb.z(start) = c; + leb.w(start) = 4.0*pi*v; + + leb.x(start+1) = -a; + leb.y(start+1) = b; + leb.z(start+1) = c; + leb.w(start+1) = 4.0*pi*v; + + leb.x(start+2) = a; + leb.y(start+2) = -b; + leb.z(start+2) = c; + leb.w(start+2) = 4.0*pi*v; + + leb.x(start+3) = a; + leb.y(start+3) = b; + leb.z(start+3) = -c; + leb.w(start+3) = 4.0*pi*v; + + leb.x(start+4) = -a; + leb.y(start+4) = -b; + leb.z(start+4) = c; + leb.w(start+4) = 4.0*pi*v; + + leb.x(start+5) = a; + leb.y(start+5) = -b; + leb.z(start+5) = -c; + leb.w(start+5) = 4.0*pi*v; + + leb.x(start+6) = -a; + leb.y(start+6) = b; + leb.z(start+6) = -c; + leb.w(start+6) = 4.0*pi*v; + + leb.x(start+7) = -a; + leb.y(start+7) = -b; + leb.z(start+7) = -c; + leb.w(start+7) = 4.0*pi*v; + + leb.x(start+8) = b; + leb.y(start+8) = a; + leb.z(start+8) = c; + leb.w(start+8) = 4.0*pi*v; + + leb.x(start+9) = -b; + leb.y(start+9) = a; + leb.z(start+9) = c; + leb.w(start+9) = 4.0*pi*v; + + leb.x(start+10) = b; + leb.y(start+10) = -a; + leb.z(start+10) = c; + leb.w(start+10) = 4.0*pi*v; + + leb.x(start+11) = b; + leb.y(start+11) = a; + leb.z(start+11) = -c; + leb.w(start+11) = 4.0*pi*v; + + leb.x(start+12) = -b; + leb.y(start+12) = -a; + leb.z(start+12) = c; + leb.w(start+12) = 4.0*pi*v; + + leb.x(start+13) = b; + leb.y(start+13) = -a; + leb.z(start+13) = -c; + leb.w(start+13) = 4.0*pi*v; + + leb.x(start+14) = -b; + leb.y(start+14) = a; + leb.z(start+14) = -c; + leb.w(start+14) = 4.0*pi*v; + + leb.x(start+15) = -b; + leb.y(start+15) = -a; + leb.z(start+15) = -c; + leb.w(start+15) = 4.0*pi*v; + + leb.x(start+16) = c; + leb.y(start+16) = a; + leb.z(start+16) = b; + leb.w(start+16) = 4.0*pi*v; + + leb.x(start+17) = -c; + leb.y(start+17) = a; + leb.z(start+17) = b; + leb.w(start+17) = 4.0*pi*v; + + leb.x(start+18) = c; + leb.y(start+18) = -a; + leb.z(start+18) = b; + leb.w(start+18) = 4.0*pi*v; + + leb.x(start+19) = c; + leb.y(start+19) = a; + leb.z(start+19) = -b; + leb.w(start+19) = 4.0*pi*v; + + leb.x(start+20) = -c; + leb.y(start+20) = -a; + leb.z(start+20) = b; + leb.w(start+20) = 4.0*pi*v; + + leb.x(start+21) = c; + leb.y(start+21) = -a; + leb.z(start+21) = -b; + leb.w(start+21) = 4.0*pi*v; + + leb.x(start+22) = -c; + leb.y(start+22) = a; + leb.z(start+22) = -b; + leb.w(start+22) = 4.0*pi*v; + + leb.x(start+23) = -c; + leb.y(start+23) = -a; + leb.z(start+23) = -b; + leb.w(start+23) = 4.0*pi*v; + + leb.x(start+24) = c; + leb.y(start+24) = b; + leb.z(start+24) = a; + leb.w(start+24) = 4.0*pi*v; + + leb.x(start+25) = -c; + leb.y(start+25) = b; + leb.z(start+25) = a; + leb.w(start+25) = 4.0*pi*v; + + leb.x(start+26) = c; + leb.y(start+26) = -b; + leb.z(start+26) = a; + leb.w(start+26) = 4.0*pi*v; + + leb.x(start+27) = c; + leb.y(start+27) = b; + leb.z(start+27) = -a; + leb.w(start+27) = 4.0*pi*v; + + leb.x(start+28) = -c; + leb.y(start+28) = -b; + leb.z(start+28) = a; + leb.w(start+28) = 4.0*pi*v; + + leb.x(start+29) = c; + leb.y(start+29) = -b; + leb.z(start+29) = -a; + leb.w(start+29) = 4.0*pi*v; + + leb.x(start+30) = -c; + leb.y(start+30) = b; + leb.z(start+30) = -a; + leb.w(start+30) = 4.0*pi*v; + + leb.x(start+31) = -c; + leb.y(start+31) = -b; + leb.z(start+31) = -a; + leb.w(start+31) = 4.0*pi*v; + + leb.x(start+32) = a; + leb.y(start+32) = c; + leb.z(start+32) = b; + leb.w(start+32) = 4.0*pi*v; + + leb.x(start+33) = -a; + leb.y(start+33) = c; + leb.z(start+33) = b; + leb.w(start+33) = 4.0*pi*v; + + leb.x(start+34) = a; + leb.y(start+34) = -c; + leb.z(start+34) = b; + leb.w(start+34) = 4.0*pi*v; + + leb.x(start+35) = a; + leb.y(start+35) = c; + leb.z(start+35) = -b; + leb.w(start+35) = 4.0*pi*v; + + leb.x(start+36) = -a; + leb.y(start+36) = -c; + leb.z(start+36) = b; + leb.w(start+36) = 4.0*pi*v; + + leb.x(start+37) = a; + leb.y(start+37) = -c; + leb.z(start+37) = -b; + leb.w(start+37) = 4.0*pi*v; + + leb.x(start+38) = -a; + leb.y(start+38) = c; + leb.z(start+38) = -b; + leb.w(start+38) = 4.0*pi*v; + + leb.x(start+39) = -a; + leb.y(start+39) = -c; + leb.z(start+39) = -b; + leb.w(start+39) = 4.0*pi*v; + + leb.x(start+40) = b; + leb.y(start+40) = c; + leb.z(start+40) = a; + leb.w(start+40) = 4.0*pi*v; + + leb.x(start+41) = -b; + leb.y(start+41) = c; + leb.z(start+41) = a; + leb.w(start+41) = 4.0*pi*v; + + leb.x(start+42) = b; + leb.y(start+42) = -c; + leb.z(start+42) = a; + leb.w(start+42) = 4.0*pi*v; + + leb.x(start+43) = b; + leb.y(start+43) = c; + leb.z(start+43) = -a; + leb.w(start+43) = 4.0*pi*v; + + leb.x(start+44) = -b; + leb.y(start+44) = -c; + leb.z(start+44) = a; + leb.w(start+44) = 4.0*pi*v; + + leb.x(start+45) = b; + leb.y(start+45) = -c; + leb.z(start+45) = -a; + leb.w(start+45) = 4.0*pi*v; + + leb.x(start+46) = -b; + leb.y(start+46) = c; + leb.z(start+46) = -a; + leb.w(start+46) = 4.0*pi*v; + + leb.x(start+47) = -b; + leb.y(start+47) = -c; + leb.z(start+47) = -a; + leb.w(start+47) = 4.0*pi*v; + start = start + 48; + + + otherwise + error('Bad grid order') + +end +end + \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..735e157 --- /dev/null +++ b/readme.txt @@ -0,0 +1,93 @@ +**************************************************************** +* * +* TVReg - a Matlab package for * +* Total Variation Reconstruction * +* * +* Requires Matlab version 7.5 or later * +* * +**************************************************************** + +This package includes Matlab and C codes for Total Variation (TV) +reconstruction. + +If you use this package, please give reference to: + + T. L. Jensen, J. H. Joergensen, P. C. Hansen and S. H. Jensen + Implementation of an Optimal First-Order Method for Strongly + Convex Total Variation Regularization + BIT Numerical Mathematics, vol. 52, issue 2, + pp. 329--356, 2012 + +The code is part of the project CSI: Computational Science in +Imaging, supported by the Danish Research Council for Technology +and Production Sciences. The work was carried out at Aalborg +University and Technical University of Denmark. + + +Installation guide for Windows +------------------------------ + +1. Go to the directory where you keep your other Matlab toolboxes, + and unzip the TVReg.zip files to a new folder TVReg. + +2. Start Matlab and go to the above TVReg folder. + +3. Run "install". You probably need to install a compiler. + Just follow the instructions. + +4. Add TVReg to Matlab's path: go to File -> Set Path -> Add Folder + and choose the folder where TVReg is located. Then save and close. + Alternatively, you can use the addpath command in Matlab. + +5. To learn more, try the demos: + tvreg_demo1, tvreg_demo2, tvreg_demo3. + + +More options are available in install.m. + + +Installation guide for Linux and Unix +------------------------------------- + +1. Go to the directory where you keep your other Matlab toolboxes, and + unzip the TVReg.zip files to a new directory TVReg. + +3. Start Matlab and go to the above TVReg directory. + +4. Run "install". Our experience is that when installing TVReg, + you can ignore any warnings deriving from an officially unsupported + version of gcc. + +5. Add TVReg to Matlab's path: go to File -> Set Path -> Add Folder and + choose the folder where TVReg is located. Then save and close. + Alternatively, you can use the addpath command in Matlab. + +6. To learn more, try the demos: + tvreg_demo1, tvreg_demo2, tvreg_demo3. + + + +Installation guide for Mac +------------------------------------- + +1. Download xcode from http://developer.apple.com/technologies/tools/xcode.html + and follow installation instructions. + +2. Go to the directory where you keep your other Matlab toolboxes, and + unzip the TVReg.zip files to a new directory TVReg. + +4. Start Matlab and go to the above TVReg directory. + +5. Run "install". Our experience is that when installing TVReg, + you can ignore any warnings deriving from an officially unsupported + version of gcc. + +6. Add TVReg to Matlab's path: go to File -> Set Path -> Add Folder and + choose the folder where TVReg is located. Then save and close. + Alternatively, you can use the addpath command in Matlab. + +7. To learn more, try the demos: + tvreg_demo1, tvreg_demo2, tvreg_demo3. + +If you have any problems on Windows, Linux, Mac or Unix, please check the +file install.m diff --git a/suptitle.m b/suptitle.m new file mode 100644 index 0000000..41cc437 --- /dev/null +++ b/suptitle.m @@ -0,0 +1,116 @@ +function hout=suptitle(str) +%SUPTITLE Puts a title above all subplots. +% SUPTITLE('text') adds text to the top of the figure +% above all subplots (a "super title"). Use this function +% after all subplot commands. + +% Drea Thomas 6/15/95 drea@mathworks.com +% John Cristion 12/13/00 modified +% Mark Histed 03/13/04 histed@mit.edu: fix disappearing legend on last plot +% +% $Id: suptitle.m,v 1.2 2004/03/13 22:17:47 histed Exp $ + +% Warning: If the figure or axis units are non-default, this +% will break. + + + +% Parameters used to position the supertitle. + +% Amount of the figure window devoted to subplots +plotregion = .92; + +% Y position of title in normalized coordinates +titleypos = .95; + +% Fontsize for supertitle +%fs = get(gcf,'defaultaxesfontsize')+4; + +fs = get(gcf,'defaultaxesfontsize'); + +% Fudge factor to adjust y spacing between subplots +fudge=1; + +haold = gca; +figunits = get(gcf,'units'); + +% Get the (approximate) difference between full height (plot + title +% + xlabel) and bounding rectangle. + + if (~strcmp(figunits,'pixels')), + set(gcf,'units','pixels'); + pos = get(gcf,'position'); + set(gcf,'units',figunits); + else, + pos = get(gcf,'position'); + end + ff = (fs-4)*1.27*5/pos(4)*fudge; + + % The 5 here reflects about 3 characters of height below + % an axis and 2 above. 1.27 is pixels per point. + +% Determine the bounding rectange for all the plots + +% h = findobj('Type','axes'); + +% findobj is a 4.2 thing.. if you don't have 4.2 comment out +% the next line and uncomment the following block. + +h = findobj(gcf,'Type','axes'); % Change suggested by Stacy J. Hills + +% If you don't have 4.2, use this code instead +%ch = get(gcf,'children'); +%h=[]; +%for i=1:length(ch), +% if strcmp(get(ch(i),'type'),'axes'), +% h=[h,ch(i)]; +% end +%end + + + + +max_y=0; +min_y=1; + +oldtitle =0; +for i=1:length(h), + if (~strcmp(get(h(i),'Tag'),'suptitle')), + pos=get(h(i),'pos'); + if (pos(2) < min_y), min_y=pos(2)-ff/5*3;end; + if (pos(4)+pos(2) > max_y), max_y=pos(4)+pos(2)+ff/5*2;end; + else, + oldtitle = h(i); + end +end + +if max_y > plotregion, + scale = (plotregion-min_y)/(max_y-min_y); + for i=1:length(h), + pos = get(h(i),'position'); + pos(2) = (pos(2)-min_y)*scale+min_y; + pos(4) = pos(4)*scale-(1-scale)*ff/5*3; + set(h(i),'position',pos); + end +end + +np = get(gcf,'nextplot'); +set(gcf,'nextplot','add'); +if (oldtitle), + delete(oldtitle); +end +ha=axes('pos',[0 1 1 1],'visible','off','Tag','suptitle'); +ht=text(.5,titleypos-1,str);set(ht,'horizontalalignment','center','fontsize',fs); +set(gcf,'nextplot',np); +axes(haold); + +% fix legend if one exists +legH = legend; +if ~isempty(legH) + axes(legH); +end + +if nargout, + hout=ht; +end + diff --git a/tomobox/buildSystemMatrix.m b/tomobox/buildSystemMatrix.m new file mode 100644 index 0000000..9bb925e --- /dev/null +++ b/tomobox/buildSystemMatrix.m @@ -0,0 +1,170 @@ +function [A,p_all] = buildSystemMatrix(r1_max,u_max,v_list,nuv,vpRatio) +%BUILDSYSTEMMATRIX Setup system matrix for 3D parallel beam tomography +% +% [A,p_all] = formA_orthog(r1_max,u_max,v_list,nuv,vpRatio) +% +% Compute system matrix A for threedimensional parallel beam tomography. +% The image is a cube which is discretized into (2*r1max+1)^3 voxels. +% v_list is an m times 3 matrix, where m is the number of projections, with +% a unit vector in each row specifying a projection direction. In total +% there are m projections, each orthogonal to the projection direction. +% Each projection is a square 2D image discretized into (2*u_max+1)^2 +% pixels. The images are aligned so that the center voxel is mapped to each +% of the center pixels. nuv is an array with two elements specifying the +% number of subpixels in each direction of the image. Default is [1 1]. +% Each subpixel specifies the starting point of a ray for which the line +% integral through the 3D image is computed. The pixel value is then the +% averaged of the nuv(1)*nuv(2) total line integral from rays within the +% pixel. vpRatio is the voxel-to-pixel ratio. It is a scalar that specifies +% the ratio of the side length of a voxel to a pixel. Default is 1 (same +% side length). Higher vpRatio can be used to reconstruct the 3D image on a +% coarser grid than the projections. The output p_all is +% threedimensional array where the k'th layer p_all(:,:,k) holds the x,y,z +% coordinates of the k'th projection plane pixel centers. + +% Jakob Heide Jørgensen (jakj@imm.dtu.dk) +% Department of Informatics and Mathematical Modelling (IMM) +% Technical University of Denmark (DTU) +% August 2010 + +% This code is released under the Gnu Public License (GPL). +% For more information, see +% http://www.gnu.org/copyleft/gpl.html + + +% Input checks +if r1_max<1, ... + error('r1_max must be a positive integer'), end +if u_max<1, ... + error('u_max must be a positive integer'), end +if size(v_list,1) < 1 || size(v_list,2) ~= 3, ... + error('v_list must three columns and at least one row'), end + +% Cube 3D image and square 2D projections +r2_max = r1_max; +r3_max = r1_max; +v_max = u_max; +r1_range = r1_max*2 + 1; +r2_range = r2_max*2 + 1; +r3_range = r3_max*2 + 1; +u_range = u_max*2 + 1; +v_range = v_max*2 + 1; + +% Aux. variables +mnk3 = r1_range+r2_range+r3_range+3; % Max number of voxels hit by a ray +uvmax = u_range*v_range; % Number of pixels in reflection + +% Lists to hold output from traceRays for later generation of A by function +% sparse +nr_refl = size(v_list,1); +voxelList = zeros(nr_refl*uvmax*(r1_range+r2_range+r3_range-1),1); +valList = voxelList; +rowList = voxelList; +liststart = 1; + + +%% Consider fixed u_range x v_range projection plane in the yz plane. +%% Compute pixel center coordinates, allowing for subpixels + +% Default subpixels +if nargin < 4 + nu = 1; + nv = 1; +else + nu = nuv(1); % odd number + nv = nuv(2); % odd number +end + +% Spacing between pixel centers +du = 1/nu; +dv = 1/nv; + +% Pixel center coordinates +usub = repmat(u_max+du*(nu-1)/2:-du:-u_max-du*(nu-1)/2,v_range*nv,1); +vsub = repmat((-v_max-dv*(nv-1)/2:dv:v_max+dv*(nv-1)/2)',1,u_range*nu); +usub = usub(:); +vsub = vsub(:); + +% Combine x, y, z pixel center coordinates into array with 3 rows +xyz = [zeros(1,u_range*v_range*nu*nv); + reshape(usub,1,u_range*v_range*nu*nv); + reshape(vsub,1,u_range*v_range*nu*nv)]; + +% Adjust for case where vpRatio is not 1 +if nargin < 5, vpRatio = 1; end +xyz = xyz/vpRatio; + +% Aux. variable +Imod = repmat(0:mnk3:(uvmax*nu*nv-1)*mnk3,mnk3,1); % See traceRays doc. + +% Initialize array to hold pixel center coordinates +p_all = zeros(3,u_range*v_range*nu*nv,size(v_list,1)); + + +%% Loop over reflections. For each reflection, rotate the fixed plane to be +%% orthogonal to the current direction vector from v_list. Use traceRays to +%% compute path lengths of rays through voxels and store values in a list. +for refl_nr=1:size(v_list,1) + tic + fprintf('Building A for reflection number %d\n',refl_nr) + + % Current projection direction + v1=v_list(refl_nr,:); + + % From rectangular coordinates v_list get spherical coordinates + r = sqrt( sum(v1.^2) ); + thetat = -acos(v1(3)/r) + pi/2; + phit = atan2(v1(2),v1(1)); + + % Set up first rotation + Rz = @(ang) [cos(ang), -sin(ang), 0; sin(ang), cos(ang), 0; 0, 0, 1]; + + % Set up second rotation, for theta around new y-axis + uxyz = Rz(phit)*[0,1,0]'; + ux = uxyz(1); + uy = uxyz(2); + uz = uxyz(3); + c = cos(-thetat); + s = sin(-thetat); + R2 = [ux^2 + (1-ux^2)*c, ux*uy*(1-c) - uz*s, ux*uz*(1-c) + uy*s; + ux*uy*(1-c) + uz*s, uy^2 + (1-uy^2)*c, uy*uz*(1-c) - ux*s; + ux*uz*(1-c) - uy*s, uy*uz*(1-c) + ux*s, uz^2 + (1-uz^2)*c]; + + % Do the rotations + p_sample2 = R2*Rz(phit)*xyz; + + % Store the pixel center coordinates + p_all(:,:,refl_nr) = p_sample2; + + % Trace the rays: Get the voxels that are hit by each ray, the voxel + % value and the row in A it should be inserted into. Inputs are x,y,z + % coordinates of reflection in sample coordinates, direction vector v1, + % the dimensions of the cube and the aux. index array Imod, see + % documentation of traceRays. traceRays assumes coordinates in + % [0,r1_range], so shift from origo by r1_range/2. + [voxels, vals, rows] = traceRays(p_sample2(1,:)+r1_range/2,... + p_sample2(2,:)+r2_range/2,... + p_sample2(3,:)+r3_range/2,... + v1,[r1_range r2_range r3_range],Imod); + + % Store voxels, vals and rows in lists for later generation of matrix A + numVoxels = length(voxels); + listend = liststart + numVoxels - 1; + list = liststart:listend; + voxelList(list) = voxels; + valList(list) = vals; + rowList(list) = rows + u_range*v_range*nu*nv*(refl_nr-1); + liststart = listend + 1; + + % End timer + toc +end + +% Truncate lists and generate matrix A with single call to function sparse +voxelList = voxelList(1:liststart-1); +valList = valList(1:liststart-1); +rowList = rowList(1:liststart-1); +A = sparse(rowList,voxelList,valList,nr_refl*u_range*v_range*nu*nv,... + r1_range*r2_range*r3_range); + +disp('Finish building A') \ No newline at end of file diff --git a/tomobox/getNoise.m b/tomobox/getNoise.m new file mode 100644 index 0000000..9d4c63b --- /dev/null +++ b/tomobox/getNoise.m @@ -0,0 +1,19 @@ +function e = getNoise(rnl,b) +% GETNOISE Create white noise with specified relative noise level +% +% e = getNoise(rnl,b) creates a Gaussian white noise vector e of same size +% as b such that ||e||_2 / ||b||_2 = rnl, i.e., the relative magnitude +% (2-norm) of e to b is equal to the scalar rnl. + +% Jakob Heide Jørgensen (jakj@imm.dtu.dk) +% Department of Informatics and Mathematical Modelling (IMM) +% Technical University of Denmark (DTU) +% August 2009 + +% This code is released under the Gnu Public License (GPL). +% For more information, see +% http://www.gnu.org/copyleft/gpl.html + +e = randn(size(b)); +e = e/norm(e(:)); +e = rnl*norm(b(:))*e; \ No newline at end of file diff --git a/tomobox/phantom3d.m b/tomobox/phantom3d.m new file mode 100644 index 0000000..36ac8ed --- /dev/null +++ b/tomobox/phantom3d.m @@ -0,0 +1,224 @@ +function [p,ellipse]=phantom3d(varargin) + +%PHANTOM3D Three-dimensional analogue of MATLAB Shepp-Logan phantom +% P = PHANTOM3D(DEF,N) generates a 3D head phantom that can +% be used to test 3-D reconstruction algorithms. +% +% DEF is a string that specifies the type of head phantom to generate. +% Valid values are: +% +% 'Shepp-Logan' A test image used widely by researchers in +% tomography +% 'Modified Shepp-Logan' (default) A variant of the Shepp-Logan phantom +% in which the contrast is improved for better +% visual perception. +% +% N is a scalar that specifies the grid size of P. +% If you omit the argument, N defaults to 64. +% +% P = PHANTOM3D(E,N) generates a user-defined phantom, where each row +% of the matrix E specifies an ellipsoid in the image. E has ten columns, +% with each column containing a different parameter for the ellipsoids: +% +% Column 1: A the additive intensity value of the ellipsoid +% Column 2: a the length of the x semi-axis of the ellipsoid +% Column 3: b the length of the y semi-axis of the ellipsoid +% Column 4: c the length of the z semi-axis of the ellipsoid +% Column 5: x0 the x-coordinate of the center of the ellipsoid +% Column 6: y0 the y-coordinate of the center of the ellipsoid +% Column 7: z0 the z-coordinate of the center of the ellipsoid +% Column 8: phi phi Euler angle (in degrees) (rotation about z-axis) +% Column 9: theta theta Euler angle (in degrees) (rotation about x-axis) +% Column 10: psi psi Euler angle (in degrees) (rotation about z-axis) +% +% For purposes of generating the phantom, the domains for the x-, y-, and +% z-axes span [-1,1]. Columns 2 through 7 must be specified in terms +% of this range. +% +% [P,E] = PHANTOM3D(...) returns the matrix E used to generate the phantom. +% +% Class Support +% ------------- +% All inputs must be of class double. All outputs are of class double. +% +% Remarks +% ------- +% For any given voxel in the output image, the voxel's value is equal to the +% sum of the additive intensity values of all ellipsoids that the voxel is a +% part of. If a voxel is not part of any ellipsoid, its value is 0. +% +% The additive intensity value A for an ellipsoid can be positive or negative; +% if it is negative, the ellipsoid will be darker than the surrounding pixels. +% Note that, depending on the values of A, some voxels may have values outside +% the range [0,1]. +% +% Example +% ------- +% ph = phantom3d(128); +% figure, imshow(squeeze(ph(64,:,:))) +% +% Copyright 2005 Matthias Christian Schabel (matthias @ stanfordalumni . org) +% University of Utah Department of Radiology +% Utah Center for Advanced Imaging Research +% 729 Arapeen Drive +% Salt Lake City, UT 84108-1218 +% +% This code is released under the Gnu Public License (GPL). For more information, +% see : http://www.gnu.org/copyleft/gpl.html +% +% Portions of this code are based on phantom.m, copyrighted by the Mathworks +% + +[ellipse,n] = parse_inputs(varargin{:}); + +p = zeros([n n n]); + +rng = ( (0:n-1)-(n-1)/2 ) / ((n-1)/2); + +[x,y,z] = meshgrid(rng,rng,rng); + +coord = [flatten(x); flatten(y); flatten(z)]; + +p = flatten(p); + +for k = 1:size(ellipse,1) + A = ellipse(k,1); % Amplitude change for this ellipsoid + asq = ellipse(k,2)^2; % a^2 + bsq = ellipse(k,3)^2; % b^2 + csq = ellipse(k,4)^2; % c^2 + x0 = ellipse(k,5); % x offset + y0 = ellipse(k,6); % y offset + z0 = ellipse(k,7); % z offset + phi = ellipse(k,8)*pi/180; % first Euler angle in radians + theta = ellipse(k,9)*pi/180; % second Euler angle in radians + psi = ellipse(k,10)*pi/180; % third Euler angle in radians + + cphi = cos(phi); + sphi = sin(phi); + ctheta = cos(theta); + stheta = sin(theta); + cpsi = cos(psi); + spsi = sin(psi); + + % Euler rotation matrix + alpha = [cpsi*cphi-ctheta*sphi*spsi cpsi*sphi+ctheta*cphi*spsi spsi*stheta; + -spsi*cphi-ctheta*sphi*cpsi -spsi*sphi+ctheta*cphi*cpsi cpsi*stheta; + stheta*sphi -stheta*cphi ctheta]; + + % rotated ellipsoid coordinates + coordp = alpha*coord; + + idx = find((coordp(1,:)-x0).^2./asq + (coordp(2,:)-y0).^2./bsq + (coordp(3,:)-z0).^2./csq <= 1); + p(idx) = p(idx) + A; +end + +p = reshape(p,[n n n]); + +return; + + +function out = flatten(in) + +out = reshape(in,[1 prod(size(in))]); + +return; + + +function [e,n] = parse_inputs(varargin) +% e is the m-by-10 array which defines ellipsoids +% n is the size of the phantom brain image + +n = 128; % The default size +e = []; +defaults = {'shepp-logan', 'modified shepp-logan', 'yu-ye-wang'}; + +for i=1:nargin + if ischar(varargin{i}) % Look for a default phantom + def = lower(varargin{i}); + idx = strmatch(def, defaults); + if isempty(idx) + eid = sprintf('Images:%s:unknownPhantom',mfilename); + msg = 'Unknown default phantom selected.'; + error(eid,'%s',msg); + end + switch defaults{idx} + case 'shepp-logan' + e = shepp_logan; + case 'modified shepp-logan' + e = modified_shepp_logan; + case 'yu-ye-wang' + e = yu_ye_wang; + end + elseif numel(varargin{i})==1 + n = varargin{i}; % a scalar is the image size + elseif ndims(varargin{i})==2 && size(varargin{i},2)==10 + e = varargin{i}; % user specified phantom + else + eid = sprintf('Images:%s:invalidInputArgs',mfilename); + msg = 'Invalid input arguments.'; + error(eid,'%s',msg); + end +end + +% ellipse is not yet defined +if isempty(e) + e = modified_shepp_logan; +end + +return; + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Default head phantoms: % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function e = shepp_logan + +e = modified_shepp_logan; +e(:,1) = [1 -.98 -.02 -.02 .01 .01 .01 .01 .01 .01]; + +return; + + +function e = modified_shepp_logan +% +% This head phantom is the same as the Shepp-Logan except +% the intensities are changed to yield higher contrast in +% the image. Taken from Toft, 199-200. +% +% A a b c x0 y0 z0 phi theta psi +% ----------------------------------------------------------------- +e = [ 1 .6900 .920 .810 0 0 0 0 0 0 + -.8 .6624 .874 .780 0 -.0184 0 0 0 0 + -.2 .1100 .310 .220 .22 0 0 -18 0 10 + -.2 .1600 .410 .280 -.22 0 0 18 0 10 + .1 .2100 .250 .410 0 .35 -.15 0 0 0 + .1 .0460 .046 .050 0 .1 .25 0 0 0 + .1 .0460 .046 .050 0 -.1 .25 0 0 0 + .1 .0460 .023 .050 -.08 -.605 0 0 0 0 + .1 .0230 .023 .020 0 -.606 0 0 0 0 + .1 .0230 .046 .020 .06 -.605 0 0 0 0 ]; + +return; + + +function e = yu_ye_wang +% +% Yu H, Ye Y, Wang G, Katsevich-Type Algorithms for Variable Radius Spiral Cone-Beam CT +% +% A a b c x0 y0 z0 phi theta psi +% ----------------------------------------------------------------- +e = [ 1 .6900 .920 .900 0 0 0 0 0 0 + -.8 .6624 .874 .880 0 0 0 0 0 0 + -.2 .4100 .160 .210 -.22 0 -.25 108 0 0 + -.2 .3100 .110 .220 .22 0 -.25 72 0 0 + .2 .2100 .250 .500 0 .35 -.25 0 0 0 + .2 .0460 .046 .046 0 .1 -.25 0 0 0 + .1 .0460 .023 .020 -.08 -.65 -.25 0 0 0 + .1 .0460 .023 .020 .06 -.65 -.25 90 0 0 + .2 .0560 .040 .100 .06 -.105 .625 90 0 0 + -.2 .0560 .056 .100 0 .100 .625 0 0 0 ]; + +return; + + diff --git a/tomobox/plotLayers.m b/tomobox/plotLayers.m new file mode 100644 index 0000000..7b56425 --- /dev/null +++ b/tomobox/plotLayers.m @@ -0,0 +1,39 @@ +function plotLayers(im) +%PLOTLAYERS Show the layers of 3D array in subplots +% +% plotLayers(im) makes size(im,3) subplots where the k'th subplot is the +% layer im(:,:,k) displayed as an image + +% Jakob Heide Jørgensen (jakj@imm.dtu.dk) +% Department of Informatics and Mathematical Modelling (IMM) +% Technical University of Denmark (DTU) +% August 2009 + +% This code is released under the Gnu Public License (GPL). +% For more information, see +% http://www.gnu.org/copyleft/gpl.html + + +% Number of layers to show +numLayers = size(im,3); + +% Determine horizontal and vertical number of subplots +s1 = floor(sqrt(numLayers)); +s2 = s1 + 2; + +% Determine the overall minimum an maximum entries in im for setting common +% color axis +imVec = im(:); +maxVal = max(imVec); +minVal = min(imVec); +ca = [minVal,maxVal]; + +% Loop through the layers of im, make new subplot, display current layer as +% image, set color axis and title. +for k = 1:numLayers + subplot(s1,s2,k) + imagesc(im(:,:,k)) + axis image off + caxis(ca) + title(['Layer ',num2str(k)]) +end \ No newline at end of file diff --git a/tomobox/tomoboxDemo1.m b/tomobox/tomoboxDemo1.m new file mode 100644 index 0000000..44d78e5 --- /dev/null +++ b/tomobox/tomoboxDemo1.m @@ -0,0 +1,77 @@ +%% +% Demo script illustrating how to experiment with tomographic +% reconstruction using tomobox +% +% Set up 3D test image +% Choose a number of random projection directions +% Set up the parallel beam system matrix +% Compute projections +% Add Gaussian noise +% Reconstruct + +% Jakob Heide Jørgensen (jakj@imm.dtu.dk) +% Department of Informatics and Mathematical Modelling (IMM) +% Technical University of Denmark (DTU) +% August 2010 + +% This code is released under the Gnu Public License (GPL). +% For more information, see +% http://www.gnu.org/copyleft/gpl.html + + +clear +close all +clc + +%% Dimensions to use in simulation +r1_max = 17; +N = 2*r1_max+1; % 3D image side length +dims = N*[1,1,1]; +u_max = 23; % Projection side length +nuv = [1,1]; % Number of subpixels, see buildSystemMatrix +vpRatio = 1; % Voxel-to-pixel ratio, see buildSystemMatrix +num_proj = 30; % Number of projections to reconstruct from +rnl = 0.01; % Relative noise level + +%% Set up 3D test image +X_true = phantom3d('Modified Shepp-Logan',N); +x_true = X_true(:); + +%% Choose a number of random projection directions + +% Choose x,y,z as Gaussian triple and normalize. Since Gaussians are +% rotation-symmetric, the directions obtained are samples from the uniform +% distribution over the unit sphere. +v_list = randn(num_proj,3); +v_listnorm = sqrt(sum(v_list.^2,2)); +v_list = v_list./repmat(v_listnorm,1,3); + +%% Set up the parallel beam system matrix +[A,p_all] = buildSystemMatrix(r1_max,u_max,v_list,nuv,vpRatio); + +%% Compute projections +b_orig = A*x_true; + +%% Add Gaussian noise +e = getNoise(rnl,b_orig); +b = b_orig + e; +B = reshape(b,2*u_max+1,2*u_max+1,num_proj); + +%% Reconstruct +tol = 1e-6; +maxit = 200; +x_sol = lsqr(A,b,tol,maxit); +X_sol = reshape(x_sol,dims); +%% Display + +figure +plotLayers(X_true) +suptitle('Original') + +figure +plotLayers(B) +suptitle('Projections') + +figure +plotLayers(X_sol) +suptitle(['Reconstruction, iteration ',num2str(maxit)]) \ No newline at end of file diff --git a/tomobox/traceRays.m b/tomobox/traceRays.m new file mode 100644 index 0000000..12a0552 --- /dev/null +++ b/tomobox/traceRays.m @@ -0,0 +1,146 @@ +function [voxels,vals,rows,xxyz,yxyz,zxyz] = ... + traceRays(x0,y0,z0,abc,dims,Imod) +%TRACERAYS Determine voxels and path lengts for parallel rays +% +% [voxels, vals, rows, xxyz, yxyz, zxyz] = +% traceRays(x0,y0,z0,abc,DIMS,Imod) is a helper function for +% buildSystemMatrix +% +% Compute the path lengths of rays penetrating a cube of dimension dims, +% e.g. [15,15,15]. All rays have direction vector abc, the coordinates of a +% point on each ray are x0, y0, z0. Imod = +% repmat(0:mnk3:(uvmax-1)*mnk3,mnk3,1) should be given as input for +% efficiency when calling traceRays multiple times, but is set to this if +% not given. +% +% Output voxels is a vector holding the voxel indices of the hit voxels, +% for all rays. vals and rows hold the corresponding path lengths and +% ray/row number, respectively. (xxyz,yxyz,zxyz) are the coordinates of the +% intersection points of the rays with the boundary planes between the +% voxels. + +% Jakob Heide Jørgensen (jakj@imm.dtu.dk) and Per Christian Hansen +% Department of Informatics and Mathematical Modelling (IMM) +% Technical University of Denmark (DTU) +% August 2010 + +% This code is released under the Gnu Public License (GPL). +% For more information, see +% http://www.gnu.org/copyleft/gpl.html + + +% Get the dimensions +m = dims(1); +n = dims(2); +k = dims(3); +mnk3 = m+n+k+3; + +% Get the components of the direction vector +a = abc(1); +b = abc(2); +c = abc(3); + +% Number of rays +uvmax = length(x0); + +% Repeat the coordinate vectors to be ready to compute intersection with +% all the boundary planes +x0rep = repmat(x0,m+1,1); +y0rep = repmat(y0,n+1,1); +z0rep = repmat(z0,k+1,1); + +% Coordinates to all intersections with x=(0:m) planes for all initial +% points +xx = repmat((0:m)',1,uvmax); +tx = ( xx - x0rep )/a; +yx = y0rep + b*tx; +zx = z0rep + c*tx; + +% Coordinates to all intersections with y=(0:n) planes for all initial +% points +yy = repmat((0:n)',1,uvmax); +ty = ( yy - y0rep )/b; +xy = x0rep + a*ty; +zy = z0rep + c*ty; + +% Coordinates to all intersections with z=(0:k) planes for all initial +% points +zz = repmat((0:k)',1,uvmax); +tz = ( zz - z0rep )/c; +xz = x0rep + a*tz; +yz = y0rep + b*tz; + +% Collect all the times, set infs to NaNs and sort the columns in ascending +% order, ie. for each ray get the times that voxel boundaries are hit in +% the right order. +txyz = [tx;ty;tz]; +txyz(~isfinite(txyz)) = NaN; +[T,I] = sort(txyz); + +% Collect all coordinates in sorted order. Since I from sort holds the +% local permutation indeces in each column we must add Imod for global +% indeces +if nargin < 6 + Imod = repmat(0:mnk3:(uvmax-1)*mnk3,mnk3,1); +end +xxyz = [xx;xy;xz]; +yxyz = [yx;yy;yz]; +zxyz = [zx;zy;zz]; +XYZ = [xxyz(:),yxyz(:),zxyz(:)]; +XYZ = XYZ(I(:) + Imod(:),:); +xxyz = reshape(XYZ(:,1),mnk3,uvmax); +yxyz = reshape(XYZ(:,2),mnk3,uvmax); +zxyz = reshape(XYZ(:,3),mnk3,uvmax); + +% Discard doubles and triblets +[i,j] = find( abs(diff(T)) < 1e-12 ); +idx = sub2ind(size(T),i,j); % Convert to single index +if ~isempty(idx) + T(idx) = NaN; + [T,I2] = sort(T); + xxyz(idx) = NaN; + xxyz = xxyz(I2+Imod); + yxyz(idx) = NaN; + yxyz = yxyz(I2+Imod); + zxyz(idx) = NaN; + zxyz = zxyz(I2+Imod); +end + +% Set points outside cube to NaNs +Ix = (0 <= xxyz) & (xxyz <= m); +Iy = (0 <= yxyz) & (yxyz <= n); +Iz = (0 <= zxyz) & (zxyz <= k); +Ixyz = Ix & Iy & Iz; +xxyz(~Ixyz) = NaN; +yxyz(~Ixyz) = NaN; +zxyz(~Ixyz) = NaN; +%T(~Ixyz) = NaN + +% Calculate distances and midpoints +dx = diff(xxyz); +dy = diff(yxyz); +dz = diff(zxyz); +d = sqrt(dx.^2 + dy.^2 + dz.^2); +Zm = zeros(1,uvmax); +mx = xxyz + [dx/2;Zm]; +my = yxyz + [dy/2;Zm]; +mz = zxyz + [dz/2;Zm]; + +% From floor(midpoints) determine the hit voxels, the corresponding path +% lengths and the index of the ray (=row) +voxels = floor(mz)*m*n + floor(my)*m + floor(mx) + 1; +voxels(voxels>m*n*k) = NaN; +rows = Imod/(mnk3)+1; +vals = [d;Zm]; +isHit = isfinite(voxels(:)); +voxels = voxels(isHit); +vals = vals(isHit); +rows = rows(isHit); + +% If asked for, also compute and return the intersection coordinates +if nargout > 3 + nonNaNs = ~isnan(xxyz); + xxyz = xxyz(nonNaNs); + yxyz = yxyz(nonNaNs); + zxyz = zxyz(nonNaNs); +end \ No newline at end of file diff --git a/tvreg_demo1.m b/tvreg_demo1.m new file mode 100644 index 0000000..6c9982e --- /dev/null +++ b/tvreg_demo1.m @@ -0,0 +1,141 @@ +%tvreg_demo1 Demo script for a TV tomography problem +% +% This script illustrates the use of the TV algorithm +% implemented in the functions tvreg_upn and tvreg_gpbb. +% The user can easily modify the script for +% other noise levels, regularization etc.. +% +% The scripts loads a a clean threedimensional version of the +% classical Shepp-Logan phantom image, and +% obtains the observed data by multiplication with +% a tomography matrix A and addition of noise. +% The algorithms tvreg_upn and tvreg_gpbb are used to +% obtain the TV reconstructions of the phantom. An reference +% solution is calculated to obtain an estimate of the optimal +% objective. + +clear +close all +clc + +addpath lebdir tomobox + +% Ensure we can reproduce results by fixing random numbers +randn('state',600) +rand('state',700) + +%% Set parameters +rnl = 0.01; % Noise level +alpha = 0.1; % Regularization parameter +r1_max = 13; % Halfwidth of object cube +N = 2*r1_max+1; % Full width of object cube +N3 = N^3; % Total number of variables +dims = [N,N,N]; % Dimensions +u_max = 15; % Halfwidth of projection planes +U = 2*u_max+1; % Full width of projection planes +numProjections = 25; % Number of projections to reconstruct from + +%% Construct tomography system matrix A and make spy plot +P = getLebedevDirections(numProjections); +A = buildSystemMatrix(r1_max,u_max,P); + +figure +spy(A) +title('Sparsity pattern in A') + +%% Construct true image and right hand side +X0 = phantom3d('Modified Shepp-Logan',N); % Cube version +x0 = X0(:); % Vectorized version +borig = A*x0; % Projections from true +Borig = reshape(borig,U,U,numProjections); % Projections in layers + +%% Add noise +e = getNoise(rnl,borig); % Gaussian white noise +b = borig+e; % Additive +B = reshape(b,U,U,numProjections); % Noisy projections in layers + +%% Display layers of true image along with noisefree and noisy projeections +figure +plotLayers(X0) +suptitle('True image') + +figure +plotLayers(Borig) +suptitle('Noisefree projections') + +figure +plotLayers(B) +suptitle('Noisy projections') + +%% Parameters for the reconstruction algorithms +tau = 1e-4*norm(x0,'inf'); % Huber smoothing parameter + +% Specify nonnegativity constraints +constraint.type = 2; +constraint.c = 0*ones(prod(dims),1); +constraint.d = 1*ones(prod(dims),1); + +% Options +opt.epsb_rel = 1e-6; +opt.k_max = 10000; +opt.qs = 1; +opt.K = 2; +opt.verbose = 1; +opt.beta = 0.95; + +% Options for reference solution +opt_ref.epsb_rel = 1e-8; +opt_ref.k_max = 20000; +opt_ref.verbose = 1; + +%% Solve: Compute TV minimizer + +% Reference solution +[x_ref fxk_ref hxk_ref gxk_ref fxkl_ref info_ref] = ... + tvreg_upn(A,b,alpha,tau,dims,constraint,opt_ref); +fs = fxkl_ref(end); % Final reference objective function value + +% Solve using GPBB +tic +[xk_GPBB fxk_GPBB hxk_GPBB gx_kGPBB fxkl_GPBB info_GPBB] = ... + tvreg_gpbb(A,b,alpha,tau,dims,constraint,opt); +tGPBB = toc + +% Solve using UPN +tic +[xk_UPN fxk_UPN hxk_UPN gxk_UPN fxkl_UPN info_UPN] = ... + tvreg_upn(A,b,alpha,tau,dims,constraint,opt); +tupn = toc + +% Solve using UPN0 +tic +opt.qs = 0; +[xk_UPNz fxk_UPNz hxk_UPNz gxk_UPNz fxkl_UPNz info_UPNz] = ... + tvreg_upn(A,b,alpha,tau,dims,constraint,opt); +tupnz = toc + +%% Plot convergence rates in terms of objective function values of the +%% three methods, comparing to the final reference objective function value +figure +stairs(abs((fxkl_UPN-fs)/fs),'r') +hold on +stairs(abs((fxkl_UPNz-fs)/fs),'b') +stairs(abs((fxkl_GPBB-fs)/fs),'g') +set(gca,'yscale','log') +legend('UPN','UPN_0','GPBB') +xlabel('k') +ylabel('(f(x^k)-f^*)/f^*') +title('Convergence') + +%% Display reconstructions +figure +plotLayers(reshape(xk_GPBB,dims)) +suptitle('GPBB reconstruction') + +figure +plotLayers(reshape(xk_UPN,dims)) +suptitle('UPN reconstruction') + +figure +plotLayers(reshape(xk_UPNz,dims)) +suptitle('UPN_0 reconstruction') \ No newline at end of file diff --git a/tvreg_demo2.m b/tvreg_demo2.m new file mode 100644 index 0000000..b26d913 --- /dev/null +++ b/tvreg_demo2.m @@ -0,0 +1,148 @@ +%tvreg_demo2 Demo script for a TV deblurring problem +% +% This script illustrates the use of the TV algorithm +% implemented in the functions tvreg_upn and tvreg_gpbb. +% The user can easily modify the script for +% other noise levels, regularization etc.. +% +% The scripts loads a a clean image and +% obtains the observed blurred image by convolution with +% a point spread function and adding noise. +% The algorithms tvreg_upn and tvreg_gpbb are used to +% obtain the TV reconstructions of the original image. A reference +% solution is calculated to obtain an estimate of the optimal +% objective. + +clear +close all +clc + +addpath tomobox + +% Ensure we can reproduce results by fixing random numbers +randn('state',600) +rand('state',700) + +%% Set parameters +rnl = 0.01; % Noise level +alpha = 1.0; % Regularization parameter + +%% Set up point spread function (PSF) which describes the blurring +ks = 7; +ksigma = 1.0; +c = 4; +w = exp(-((1:ks)-c).^2/(2*ksigma))'; +PSF = w*w'; +PSF = PSF/norm(PSF,'fro'); +PSFs.PSF = PSF; +PSFs.center = [c,c]; + +%% Load image and extract region of interest (ROI) +X0full = double(imread('Pirate.tif')); +m = 128; +n = 128; +offset = 10; +X0 = X0full(offset:m+offset-1,offset:n+offset-1); + +%% Obtain blurred image b by convolving X0 with PSF. Extract ROI. Add noise +Bfull = conv2(X0full,PSFs.PSF,'same'); +Borig = Bfull(offset:m+offset-1,offset:n+offset-1); +borig = Borig(:); +e = getNoise(rnl,borig); +b = borig+e; +B = reshape(b,[m,n]); + +%% Parameters for the reconstruction algorithms +tau = 1e-4*norm(X0(:),'inf'); +dims = [m,n]; + +% Specify box constraints [0,255] +constraint.type = 2; +constraint.c = 0*ones(prod(dims),1); +constraint.d = 255*ones(prod(dims),1); + +% Options +opt.epsb_rel = 1e-4; +opt.k_max = 10000; +opt.x0 = b; +opt.verbose = 1; + +% Options for reference solution +opt_ref.epsb_rel = 1e-6; +opt_ref.k_max = 10000; +opt_ref.x0 = b; +opt_ref.verbose = 1; + +%% Solve: Compute TV minimizer + +% Reference solution +[x_ref fxk_ref hxk_ref gxk_ref fxkl_ref] = ... + tvreg_upn(PSFs,b,alpha,tau,dims,constraint,opt_ref); +fs = fxkl_ref(end); % Final reference objective function value + +% Solve using GPBB +tic +[xk_GPBB fxk_GPBB hxk_GPBB gx_kGPBB fxkl_GPBB] = ... + tvreg_gpbb(PSFs,b,alpha,tau,dims,constraint,opt); +GPBB = toc; + +% Solve using UPN +tic +opt.qs=1; +[xk_UPN fxk_UPN hxk_UPN gxk_UPN fxkl_UPN] = ... + tvreg_upn(PSFs,b,alpha,tau,dims,constraint,opt); +tUPN = toc + +% Solve using UPN0 +tic +opt.qs=0; +[xk_UPNz fxk_UPNz hxk_UPNz gxk_UPNz fxkl_UPNz] = ... + tvreg_upn(PSFs,b,alpha,tau,dims,constraint,opt); +tUPN0 = toc + +%% Plot convergence rates in terms of objective function values of the +%% three methods, comparing to the final reference objective function value +figure +clf +stairs(abs((fxkl_UPN-fs)/fs),'r') +hold on +stairs(abs((fxkl_UPNz-fs)/fs),'b') +stairs(abs((fxkl_GPBB-fs)/fs),'g') +set(gca,'yscale','log') +legend('UPN','UPN_0','GPBB') +xlabel('k') +ylabel('(f(x^k)-f^*)/f^*') + +%% Display reconstructions +figure +colormap gray + +subplot(2,3,1) +imagesc(X0); +axis image +title('Original') + +subplot(2,3,2) +imagesc(Borig); +axis image +title('Blurred') + +subplot(2,3,3) +imagesc(B); +axis image +title('Blurred and noisy') + +subplot(2,3,4) +imagesc(reshape(xk_GPBB,m,n)); +axis image +title('GPBB reconstruction') + +subplot(2,3,5) +imagesc(reshape(xk_UPN,m,n)); +axis image +title('UPN reconstruction') + +subplot(2,3,6) +imagesc(reshape(xk_UPN,m,n)); +axis image +title('UPN_0 reconstruction') \ No newline at end of file diff --git a/tvreg_demo3.m b/tvreg_demo3.m new file mode 100644 index 0000000..df4714e --- /dev/null +++ b/tvreg_demo3.m @@ -0,0 +1,146 @@ +%tvreg_demo3 Demo script for a TV tomography problem +%% This script illustrates the use of the TV algorithm +% implemented in the functions tvreg_upn and tvreg_gpbb. +% The user can easily modify the script for +% other noise levels, regularization etc.. +% +% The scripts loads a a clean threedimensional version of the +% classical Shepp-Logan phantom image, and +% obtains the observed data by multiplication with +% a tomography matrix A and addition of noise. +% The algorithms tvreg_upn and tvreg_gpbb are used to +% obtain the TV reconstructions of the phantom. An reference +% solution is calculated to obtain an estimate of the optimal +% objective. +% +% This script only differs from tvreg_demo1 that the A matrix +% is implicit formed as a matrix function. + +clear +close all +clc + +addpath lebdir tomobox + +% Ensure we can reproduce results by fixing random numbers +randn('state',600) +rand('state',700) + +%% Set parameters +rnl = 0.01; % Noise level +alpha = 0.1; % Regularization parameter +r1_max = 13; % Halfwidth of object cube +N = 2*r1_max+1; % Full width of object cube +N3 = N^3; % Total number of variables +dims = [N,N,N]; % Dimensions +u_max = 15; % Halfwidth of projection planes +U = 2*u_max+1; % Full width of projection planes +numProjections = 25; % Number of projections to reconstruct from + +%% Construct tomography system matrix A and make spy plot +P = getLebedevDirections(numProjections); +A = buildSystemMatrix(r1_max,u_max,P); + +figure +spy(A) +title('Sparsity pattern in A') + +%% Construct true image and right hand side +X0 = phantom3d('Modified Shepp-Logan',N); % Cube version +x0 = X0(:); % Vectorized version +borig = A*x0; % Projections from true +Borig = reshape(borig,U,U,numProjections); % Projections in layers + +%% Add noise +e = getNoise(rnl,borig); % Gaussian white noise +b = borig+e; % Additive +B = reshape(b,U,U,numProjections); % Noisy projections in layers + +%% Display layers of true image along with noisefree and noisy projeections +figure +plotLayers(X0) +suptitle('True image') + +figure +plotLayers(Borig) +suptitle('Noisefree projections') + +figure +plotLayers(B) +suptitle('Noisy projections') + +%% Parameters for the reconstruction algorithms +tau = 1e-4*norm(x0,'inf'); % Huber smoothing parameter + +% Specify nonnegativity constraints +constraint.type = 2; +constraint.c = 0*ones(prod(dims),1); +constraint.d = 1*ones(prod(dims),1); + +% Options +opt.epsb_rel = 1e-6; +opt.k_max = 10000; +opt.qs = 1; +opt.K = 2; +opt.verbose = 1; +opt.beta = 0.95; + +% Options for reference solution +opt_ref.epsb_rel = 1e-8; +opt_ref.k_max = 20000; +opt_ref.verbose = 1; + +%% Solve: Compute TV minimizer + +% Define matrix-free function for A +Afun = @(x, direction) Amf(A, x, direction); + +% Reference solution +[x_ref fxk_ref hxk_ref gxk_ref fxkl_ref info_ref] = ... + tvreg_upn(Afun,b,alpha,tau,dims,constraint,opt_ref); +fs = fxkl_ref(end); % Final reference objective function value + +% Solve using GPBB +tic +[xk_GPBB fxk_GPBB hxk_GPBB gx_kGPBB fxkl_GPBB info_GPBB] = ... + tvreg_gpbb(Afun,b,alpha,tau,dims,constraint,opt); +tGPBB = toc + +% Solve using UPN +tic +[xk_UPN fxk_UPN hxk_UPN gxk_UPN fxkl_UPN info_UPN] = ... + tvreg_upn(Afun,b,alpha,tau,dims,constraint,opt); +tupn = toc + +% Solve using UPN0 +tic +opt.qs = 0; +[xk_UPNz fxk_UPNz hxk_UPNz gxk_UPNz fxkl_UPNz info_UPNz] = ... + tvreg_upn(Afun,b,alpha,tau,dims,constraint,opt); +tupnz = toc + +%% Plot convergence rates in terms of objective function values of the +%% three methods, comparing to the final reference objective function value +figure +stairs(abs((fxkl_UPN-fs)/fs),'r') +hold on +stairs(abs((fxkl_UPNz-fs)/fs),'b') +stairs(abs((fxkl_GPBB-fs)/fs),'g') +set(gca,'yscale','log') +legend('UPN','UPN_0','GPBB') +xlabel('k') +ylabel('(f(x^k)-f^*)/f^*') +title('Convergence') +%% +%%%% Display reconstructions +figure +plotLayers(reshape(xk_GPBB,dims)) +suptitle('GPBB reconstruction') + +figure +plotLayers(reshape(xk_UPN,dims)) +suptitle('UPN reconstruction') + +figure +plotLayers(reshape(xk_UPNz,dims)) +suptitle('UPN_0 reconstruction') \ No newline at end of file diff --git a/tvreg_gpbb.m b/tvreg_gpbb.m new file mode 100644 index 0000000..a7f529c --- /dev/null +++ b/tvreg_gpbb.m @@ -0,0 +1,224 @@ +function [xk fxk hxk gxk fxkl info hxkl gxkl xlist] = ... + tvreg_gpbb(A,b,alpha,tau,dims,constraint,opt) +% +% Solve the problem +% +% min f(x) = h(x) + g(x) = alpha* TV(x,tau) + 1/2 ||Ax-b||_2^2 +% s.t. x in Q +% +% with implicit definitions of h and g. +% +% The function h(x)=TV(X,tau) is a smooth approximation of the TV. +% In fact TV(x,tau) is the Huber functional +% +% TV(x,tau) = sum_{i,j,l}^{m,n,l} Phi_tau(D_ijl x) +% with +% +% { ||y||_2 - tau/2 if ||y||_2>= tau +% Phi_tau(y) = { +% { ||y||_2^2 / (2 tau) else +% +% and D_ijl a finite difference matrix computing the approximated +% gradient at coordinate (i,j,l). +% +% Input definitions: +% A: 1. A sparse matrix or +% 2. A struct with the following fields +% PSF = a matrix describing the point spread function. +% Should be small +% center = the center of the PSF. +% +% In this case A in the problem definition is the matrix +% formed using the PSF as spartial invariant with reflective +% boundary conditions. The PSF should be small for fast +% algorithm, but otherwise there is no requirement on the PSF. +% TVReg only supports 2 dimensional PSFs, and dims should +% only contain 2 elements. +% 3. A function handle that takes two arguments +% - A(x, 0) should return [m, n], where m and n are the +% dimensions of A +% - A(x, 1) should return the result of A*x +% - A(y, 2) should return the result of A'*y +% +% b: Observed data +% +% alpha: Regularization parameter +% +% tau: Smoothing parameter of the TV. Suggestion tau = +% 1e-4*norm(X0(:),'inf') where XO is the true X. +% +% dims: dims=[m,n,l] or dims=[m,n]. A vector describing the +% dimensionality of x, e.g. dims = [256,256] in the case +% of two dimensional problems. +% +% constraint: A struct with the following fields, +% type = Constraint type +% c, d = lower and upper bound on x if type=2, where c and d +% has the same dimensions as x. +% +% type == 1 +% Q = R the reals (no constraints) +% +% type == 2 +% Q = {x | d_i =>x_i>= c_i, i=0..prod(dims)} +% +% opt: (Optional) A struct with one or more of the following fields +% +% epsb_rel = stopping criteria (default 1e-4) +% +% The algorithm stops when the iterate y satisfies +% +% ||G_t(y)||_2/(m*n*l) \leq epsb_rel +% +% where +% +% G_t(x) = 1/t (x - P_Q(x - t \nabla f(x)) ) +% +% and returns P_Q(x - t \nabla f(x)) +% +% k_max = the maximum number of iterates (default 10000) +% +% x0 = initial estimate +% (default A'*b or b if A is a struct defining a PSF x = b) +% +% K = look back length for sufficient decrease reference value +% (default 2) +% +% sigma = sufficient decrease parameter (default 0.1) +% +% beta = reduction parameter of the stepsize in backtracking +% (default 0.95) +% +% Output definitions +% Default return values +% xkp1 = the last iterate +% fxkp1 = f(xkp1), objective of the last iterate +% hxkp1 = h(xkp1), the smooth TV of the last iterate +% gxkp1 = g(xkp1), the fidelity term of the last iterate +% fxkp1l = a vector containing f(xkp1) for all iterates +% +% Optional +% info = A struct containing additional information on the +% the behaviour of the algorithm. +% numFunc = # the objective function is evaluated +% numGrad = # the gradient function is evaluated +% numBack = # of backtrackings +% hxkp1l = a vector containing h(xkp1) for all iterates +% gxkp1l = a vector containing g(xkp1) for all iterates +% xlist = a matrix containing the iterates xkp1 in all rows. +% Make sure only to operate with small x and +% small k_max. +% +% +% The algorithm applies steepest descent (the gradient projections +% algorithm) with Barzilai and Borwein strategy and nonmonotonic line +% search. +% + +% Default values. +epsb_rel = 1e-4; +k_max = 10000; + +K = 2; +beta = 0.95; +sigma = 0.1; +verbose = 0; + +% If options is given as input, use these values +if nargin > 6 + if isfield(opt,'epsb_rel') + epsb_rel = opt.epsb_rel; + end + if isfield(opt,'k_max') + k_max = opt.k_max; + end + if isfield(opt,'K') + K = opt.K; + end + if isfield(opt,'beta') + beta = opt.beta; + end + if isfield(opt,'sigma') + sigma = opt.sigma; + end + if isfield(opt,'verbose') + verbose = opt.verbose; + end + + if isfield(opt,'x0') + x = opt.x0; + elseif isstruct(A) + x = b; + elseif isa(A, 'function_handle') + x = A(b, 2); + else + x = A'*b; + end +else + if isstruct(A) + x = b; + elseif isa(A, 'function_handle') + x = A(b, 2); + else + x = A'*b; + end +end + +clear X +prodDims = prod(dims); +lenDims = length(dims); + + +% Initialize vectors to hold tv and fidelity of the iterates +ghxl = 0; +if nargout > 6 + ghxl=1; +end + +% Array to hold iterates in columns +xl=0; +if nargout > 8 & k_max*prodDims<1e7 + xl = 1; +end + + +[xk fxk hxk gxk fxkl k hxkl gxkl xlist numGrad numBack numFunc] = tvreg_gpbb_c(A,b,alpha,tau,dims,epsb_rel,k_max,x, ... + constraint.type, ... + constraint.d,constraint.c,ghxl,xl,K,beta,sigma,verbose); +if(~ghxl) + clear gxkl; + clear hxkl; +end + +if(~xl) + clear xlist; +else + xlist =reshape(xlist,prodDims,k_max+1); +end + +% Truncate excess zeros in fxkl, xlist, gxkl and hxkl + +fxkl = fxkl(1:k+1); + + +if nargout > 8 & k_max*prodDims<1e7 + xlist = xlist(:,1:k+1); +end + +if nargout >5 + info.numFunc = numFunc; + info.numGrad = numGrad; + info.numBack = numBack; +end + +if nargout > 6 + hxkl = hxkl(1:k+1); + gxkl = gxkl(1:k+1); +end + +% If the iteration counter reaches the k_max, the algorithm did not +% converge +if k == k_max + disp('Did not find a epsb_rel solution in k_max iterations.') +end + diff --git a/tvreg_upn.m b/tvreg_upn.m new file mode 100644 index 0000000..40278e3 --- /dev/null +++ b/tvreg_upn.m @@ -0,0 +1,286 @@ +function [xkp1 fxkp1 hxkp1 gxkp1 fxkp1l info hxkp1l gxkp1l xlist] = ... + tvreg_upn(A,b,alpha,tau,dims,constraint,opt) +% +% Solve the problem +% +% min f(x) = h(x) + g(x) = alpha* TV(x,tau) + 1/2 ||Ax-b||_2^2 +% s.t. x in Q +% +% with implicit definitions of h and g. +% +% The function h(x)=TV(X,tau) is a smooth approximation of the TV. +% In fact TV(x,tau) is the Huber functional +% +% TV(x,tau) = sum_{i,j,l}^{m,n,l} Phi_tau(D_ijl x) +% with +% +% { ||y||_2 - tau/2 if ||y||_2>= tau +% Phi_tau(y) = { +% { ||y||_2^2 / (2 tau) else +% +% and D_ijl a finite difference matrix computing the approximated +% gradient at coordinate (i,j,l). +% +% Input definitions: +% A: 1. A sparse matrix or +% 2. A struct with the following fields +% PSF = a matrix describing the point spread function. +% Should be small +% center = the center of the PSF. +% +% In this case A in the problem definition is the matrix +% formed using the PSF as spartial invariant with reflective +% boundary conditions. The PSF should be small for fast +% algorithm, but otherwise there is no requirement on the PSF. +% TVReg only supports 2 dimensional PSFs, and dims should +% only contain 2 elements. +% +% 3. A function handle that takes two arguments +% - A(x, 0) should return [m, n], where m and n are the +% dimensions of A +% - A(x, 1) should return the result of A*x +% - A(y, 2) should return the result of A'*y +% +% b: Observed data +% +% alpha: Regularization parameter +% +% tau: Smoothing parameter of the TV. Suggestion tau = +% 1e-4*norm(X0(:),'inf') where XO is the true X. +% +% dims: dims=[m,n,l] or dims=[m,n]. A vector describing the +% dimensionality of x, e.g. dims = [256,256] in the case +% of two dimensional problems. +% +% constraint: A struct with the following fields, +% type = Constraint type +% c, d = lower and upper bound on x if type=2, where c and d +% has the same dimensions as x. +% +% type == 1 +% Q = R the reals (no constraints) +% +% type == 2 +% Q = {x | d_i =>x_i>= c_i, i=0..prod(dims)} +% +% opt: (Optional) A struct with one or more of the following fields +% +% epsb_rel = stopping criteria (default 1e-4) +% +% The algorithm stops when the iterate y satisfies +% +% ||G_t(y)||_2/(m*n*l) \leq epsb_rel +% +% where +% +% G_t(x) = 1/t (x - P_Q(x - t \nabla f(x)) ) +% +% and returns P_Q(x - t \nabla f(x)) +% +% k_max = the maximum number of iterates (default 10000) +% +% x0 = initial estimate +% (default A'*b or b if A is a struct defining a PSF x = b) +% +% qs = setting algorithm type (default qs=1) +% qs = 0 algorithm UPN_0 where mu_k=0. +% The algorithm UPN applies Nesterov's optimal first order +% method for L-Lipschitz continuous gradient. In the +% implementation estimates bL is used by backtracking +% line search. In this case its an optimal method for smooth, +% non-strongly convex problems. +% +% qs = 1 algorithm UPN (default) +% The algorithm UPN applies Nesterov's optimal first order +% method for mu-strongly convex problem with L-Lipschitz +% continuous gradient. In the implementation estimates bmu +% and bL are used. +% +% qs = 2 algorithm Gradient, which is the classic gradient +% method with backtracking line search. +% +% bL = Initial setting of L_k. Default value is based on an +% an estimate of L. +% +% bmu = Initial setting of mu_k. Default vaule is +% bmu = min(bL/50,eigmax), where eigmax is the largest +% eigenvalue of A. +% +% Output definitions +% Default return values +% xkp1 = the last iterate +% fxkp1 = f(xkp1), objective of the last iterate +% hxkp1 = h(xkp1), the smooth TV of the last iterate +% gxkp1 = g(xkp1), the fidelity term of the last iterate +% fxkp1l = a vector containing f(xkp1) for all iterates +% +% Optional +% info = A struct containing additional information on the +% the behaviour of the algorithm. +% numFunc = # the objective function is evaluated +% numGrad = # the gradient function is evaluated +% numBack = # of backtrackings +% numRest = # of restarts to reduce \mu_k +% Lklist = contains the iterates L_k +% muklist = constains the iterates mu_k +% rklist = contains the restart iteration positions. +% +% hxkp1l = a vector containing h(xkp1) for all iterates +% gxkp1l = a vector containing g(xkp1) for all iterates +% xlist = a matrix containing the iterates xkp1 in all rows. +% Make sure only to operate with small x and +% small k_max. +% +% + +% Default values. +epsb_rel = 1e-4; +k_max = 10000; +qs = 1; +verbose = 0; + +% If options is given as input, use these values +if nargin > 6 + if isfield(opt,'epsb_rel') + epsb_rel = opt.epsb_rel; + end + if isfield(opt,'k_max') + k_max = opt.k_max; + end + if isfield(opt,'qs') + qs = opt.qs; + end + if isfield(opt,'verbose') + verbose = opt.verbose; + end + + + if isfield(opt,'x0') + x = opt.x0; + elseif isstruct(A) + x = b; + elseif isa(A, 'function_handle') + x = A(b, 2); + else + x = A'*b; + end +else + if isstruct(A) + x = b; + elseif isa(A, 'function_handle') + x = A(b, 2); + else + x = A'*b; + end + +end + +clear X +prodDims = prod(dims); +lenDims = length(dims); + +if(numel(dims)==2) + nDd = 8; +else + nDd = 12; +end + +% Intitial settings of bmu and bL +if isfield(opt,'bL') + bL = opt.bL; +else + svdsopts.tol = 1e-5; + if(isstruct(A)) + eigmax = svds(A.PSF,1,'L',svdsopts)^2; + bL = (alpha*nDd/tau + eigmax)/1e2; + elseif(isa(A, 'function_handle')) + V = @(x) A(A(x,1),2); + eigmax = eigs(V, prodDims, 1); + bL = (alpha*nDd/tau + eigmax)/1e2; + else + eigmax = svds(A,1,'L',svdsopts)^2; + bL = (alpha*nDd/tau + eigmax)/1e2; + end +end + +if isfield(opt,'bmu') + bmu = opt.bmu; +else + bmu = min(bL/50,eigmax); +end + +if qs == 0 || qs ==2; + bmu=0; +end + + +% Initialize vectors to hold tv and fidelity of the iterates +ghxl = 0; +if nargout > 5 + ghxl=1; +end + +% Array to hold iterates in columns +xl=0; +if nargout > 7 & k_max*prodDims<1e7 + xl = 1; +end + +if(constraint.type==2) + [xkp1 fxkp1 hxkp1 gxkp1 fxkp1l k hxkp1l gxkp1l xlist numGrad numBack numFunc numRest Lklist muklist rklist] = tvreg_upn_c(A,b,alpha,tau,dims,bL, ... + bmu,epsb_rel,k_max,x, ... + constraint.type, ... + constraint.d, ... + constraint.c,ghxl,xl, ... + qs,verbose); + +else + [xkp1 fxkp1 hxkp1 gxkp1 fxkp1l k hxkp1l gxkp1l xlist numGrad numBack numFunc numRest Lklist muklist rklist] = tvreg_upn_c(A,b,alpha,tau,dims,bL, ... + bmu,epsb_rel,k_max,x, ... + constraint.type, ... + 0, 0,ghxl,xl, ... + qs,verbose); +end + + +if(~ghxl) + clear gxkp1l; + clear hxkp1l; +end + +if(~xl) + clear xlist; +else + xlist =reshape(xlist,prodDims,k_max+1); +end + + +% Truncate excess zeros in fxkp1l, xlist, gxkp1l and hxkp1l +fxkp1l = fxkp1l(1:k+1); + +if nargout > 8 & k_max*prodDims<1e7 + xlist = xlist(:,1:k+1); +end + +if nargout >5 + info.numFunc = numFunc; + info.numGrad = numGrad; + info.numBack = numBack; + info.numRest = numRest; + info.Lklist = Lklist(1:k+1); + info.muklist = muklist(1:k+1); + info.rklist = rklist; +end + +if nargout > 6 + gxkp1l = gxkp1l(1:k+1); + hxkp1l = hxkp1l(1:k+1); +end + + + +% If the iteration counter reaches the k_max, the algorithm did not +% converge +if k == k_max + disp('Did not find a epsb_rel solution in k_max iterations.') +end \ No newline at end of file