ref: cf5c3f2742c62f36ee80cae80d74e2f5114aff2c
parent: 3ffbba1467802e8ab1a05ef75ba17c3d4d0a50bf
author: Matthew Wang <mjw7@princeton.edu>
date: Wed May 27 15:04:23 EDT 2020
rename LEAF folder to leaf for easier JUCE module usage
binary files /dev/null b/leaf/.DS_Store differ
--- /dev/null
+++ b/leaf/.gitignore
@@ -1,0 +1,11 @@
+*.DS_Store
+*.app
+*.a
+*.appex
+*.vst
+*.vst3
+*.component
+*.xcuserstate
+*.zip
+*.swp
+*/Builds
binary files /dev/null b/leaf/Externals/.DS_Store differ
--- /dev/null
+++ b/leaf/Externals/d_fft_mayer.c
@@ -1,0 +1,423 @@
+/*
+** FFT and FHT routines
+** Copyright 1988, 1993; Ron Mayer
+**
+** mayer_fht(fz,n);
+** Does a hartley transform of "n" points in the array "fz".
+** mayer_fft(n,real,imag)
+** Does a fourier transform of "n" points of the "real" and
+** "imag" arrays.
+** mayer_ifft(n,real,imag)
+** Does an inverse fourier transform of "n" points of the "real"
+** and "imag" arrays.
+** mayer_realfft(n,real)
+** Does a real-valued fourier transform of "n" points of the
+** "real" array. The real part of the transform ends
+** up in the first half of the array and the imaginary part of the
+** transform ends up in the second half of the array.
+** mayer_realifft(n,real)
+** The inverse of the realfft() routine above.
+**
+**
+** NOTE: This routine uses at least 2 patented algorithms, and may be
+** under the restrictions of a bunch of different organizations.
+** Although I wrote it completely myself, it is kind of a derivative
+** of a routine I once authored and released under the GPL, so it
+** may fall under the free software foundation's restrictions;
+** it was worked on as a Stanford Univ project, so they claim
+** some rights to it; it was further optimized at work here, so
+** I think this company claims parts of it. The patents are
+** held by R. Bracewell (the FHT algorithm) and O. Buneman (the
+** trig generator), both at Stanford Univ.
+** If it were up to me, I'd say go do whatever you want with it;
+** but it would be polite to give credit to the following people
+** if you use this anywhere:
+** Euler - probable inventor of the fourier transform.
+** Gauss - probable inventor of the FFT.
+** Hartley - probable inventor of the hartley transform.
+** Buneman - for a really cool trig generator
+** Mayer(me) - for authoring this particular version and
+** including all the optimizations in one package.
+** Thanks,
+** Ron Mayer; mayer@acuson.com
+**
+*/
+
+/* This is a slightly modified version of Mayer's contribution; write
+* msp@ucsd.edu for the original code. Kudos to Mayer for a fine piece
+* of work. -msp
+*/
+
+/* These pragmas are only used for MSVC, not MinGW or Cygwin <hans@at.or.at> */
+#ifdef _MSC_VER
+#pragma warning( disable : 4305 ) /* uncast const double to float */
+#pragma warning( disable : 4244 ) /* uncast double to float */
+#pragma warning( disable : 4101 ) /* unused local variables */
+#endif
+
+/* the following is needed only to declare pd_fft() as exportable in MSW */
+#define t_sample float
+
+#define REAL t_sample
+#define GOOD_TRIG
+
+#ifdef GOOD_TRIG
+#else
+#define FAST_TRIG
+#endif
+
+#if defined(GOOD_TRIG)
+#define FHT_SWAP(a,b,t) {(t)=(a);(a)=(b);(b)=(t);}
+#define TRIG_VARS \
+ int t_lam=0;
+#define TRIG_INIT(k,c,s) \
+ { \
+ int i; \
+ for (i=2 ; i<=k ; i++) \
+ {coswrk[i]=costab[i];sinwrk[i]=sintab[i];} \
+ t_lam = 0; \
+ c = 1; \
+ s = 0; \
+ }
+#define TRIG_NEXT(k,c,s) \
+ { \
+ int i,j; \
+ (t_lam)++; \
+ for (i=0 ; !((1<<i)&t_lam) ; i++); \
+ i = k-i; \
+ s = sinwrk[i]; \
+ c = coswrk[i]; \
+ if (i>1) \
+ { \
+ for (j=k-i+2 ; (1<<j)&t_lam ; j++); \
+ j = k - j; \
+ sinwrk[i] = halsec[i] * (sinwrk[i-1] + sinwrk[j]); \
+ coswrk[i] = halsec[i] * (coswrk[i-1] + coswrk[j]); \
+ } \
+ }
+#define TRIG_RESET(k,c,s)
+#endif
+
+#if defined(FAST_TRIG)
+#define TRIG_VARS \
+ REAL t_c,t_s;
+#define TRIG_INIT(k,c,s) \
+ { \
+ t_c = costab[k]; \
+ t_s = sintab[k]; \
+ c = 1; \
+ s = 0; \
+ }
+#define TRIG_NEXT(k,c,s) \
+ { \
+ REAL t = c; \
+ c = t*t_c - s*t_s; \
+ s = t*t_s + s*t_c; \
+ }
+#define TRIG_RESET(k,c,s)
+#endif
+
+static REAL halsec[20]=
+ {
+ 0,
+ 0,
+ .54119610014619698439972320536638942006107206337801,
+ .50979557910415916894193980398784391368261849190893,
+ .50241928618815570551167011928012092247859337193963,
+ .50060299823519630134550410676638239611758632599591,
+ .50015063602065098821477101271097658495974913010340,
+ .50003765191554772296778139077905492847503165398345,
+ .50000941253588775676512870469186533538523133757983,
+ .50000235310628608051401267171204408939326297376426,
+ .50000058827484117879868526730916804925780637276181,
+ .50000014706860214875463798283871198206179118093251,
+ .50000003676714377807315864400643020315103490883972,
+ .50000000919178552207366560348853455333939112569380,
+ .50000000229794635411562887767906868558991922348920,
+ .50000000057448658687873302235147272458812263401372
+ };
+static REAL costab[20]=
+ {
+ .00000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768847,
+ .92387953251128675612818318939678828682241662586364,
+ .98078528040323044912618223613423903697393373089333,
+ .99518472667219688624483695310947992157547486872985,
+ .99879545620517239271477160475910069444320361470461,
+ .99969881869620422011576564966617219685006108125772,
+ .99992470183914454092164649119638322435060646880221,
+ .99998117528260114265699043772856771617391725094433,
+ .99999529380957617151158012570011989955298763362218,
+ .99999882345170190992902571017152601904826792288976,
+ .99999970586288221916022821773876567711626389934930,
+ .99999992646571785114473148070738785694820115568892,
+ .99999998161642929380834691540290971450507605124278,
+ .99999999540410731289097193313960614895889430318945,
+ .99999999885102682756267330779455410840053741619428
+ };
+static REAL sintab[20]=
+ {
+ 1.0000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768846,
+ .38268343236508977172845998403039886676134456248561,
+ .19509032201612826784828486847702224092769161775195,
+ .09801714032956060199419556388864184586113667316749,
+ .04906767432741801425495497694268265831474536302574,
+ .02454122852291228803173452945928292506546611923944,
+ .01227153828571992607940826195100321214037231959176,
+ .00613588464915447535964023459037258091705788631738,
+ .00306795676296597627014536549091984251894461021344,
+ .00153398018628476561230369715026407907995486457522,
+ .00076699031874270452693856835794857664314091945205,
+ .00038349518757139558907246168118138126339502603495,
+ .00019174759731070330743990956198900093346887403385,
+ .00009587379909597734587051721097647635118706561284,
+ .00004793689960306688454900399049465887274686668768
+ };
+static REAL coswrk[20]=
+ {
+ .00000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768847,
+ .92387953251128675612818318939678828682241662586364,
+ .98078528040323044912618223613423903697393373089333,
+ .99518472667219688624483695310947992157547486872985,
+ .99879545620517239271477160475910069444320361470461,
+ .99969881869620422011576564966617219685006108125772,
+ .99992470183914454092164649119638322435060646880221,
+ .99998117528260114265699043772856771617391725094433,
+ .99999529380957617151158012570011989955298763362218,
+ .99999882345170190992902571017152601904826792288976,
+ .99999970586288221916022821773876567711626389934930,
+ .99999992646571785114473148070738785694820115568892,
+ .99999998161642929380834691540290971450507605124278,
+ .99999999540410731289097193313960614895889430318945,
+ .99999999885102682756267330779455410840053741619428
+ };
+static REAL sinwrk[20]=
+ {
+ 1.0000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768846,
+ .38268343236508977172845998403039886676134456248561,
+ .19509032201612826784828486847702224092769161775195,
+ .09801714032956060199419556388864184586113667316749,
+ .04906767432741801425495497694268265831474536302574,
+ .02454122852291228803173452945928292506546611923944,
+ .01227153828571992607940826195100321214037231959176,
+ .00613588464915447535964023459037258091705788631738,
+ .00306795676296597627014536549091984251894461021344,
+ .00153398018628476561230369715026407907995486457522,
+ .00076699031874270452693856835794857664314091945205,
+ .00038349518757139558907246168118138126339502603495,
+ .00019174759731070330743990956198900093346887403385,
+ .00009587379909597734587051721097647635118706561284,
+ .00004793689960306688454900399049465887274686668768
+ };
+
+
+#define SQRT2_2 0.70710678118654752440084436210484
+#define SQRT2 2*0.70710678118654752440084436210484
+
+void mayer_fht(REAL *fz, int n)
+{
+/* REAL a,b;
+REAL c1,s1,s2,c2,s3,c3,s4,c4;
+ REAL f0,g0,f1,g1,f2,g2,f3,g3; */
+ int k,k1,k2,k3,k4,kx;
+ REAL *fi,*fn,*gi;
+ TRIG_VARS;
+
+ for (k1=1,k2=0;k1<n;k1++)
+ {
+ REAL aa;
+ for (k=n>>1; (!((k2^=k)&k)); k>>=1);
+ if (k1>k2)
+ {
+ aa=fz[k1];fz[k1]=fz[k2];fz[k2]=aa;
+ }
+ }
+ for ( k=0 ; (1<<k)<n ; k++ );
+ k &= 1;
+ if (k==0)
+ {
+ for (fi=fz,fn=fz+n;fi<fn;fi+=4)
+ {
+ REAL f0,f1,f2,f3;
+ f1 = fi[0 ]-fi[1 ];
+ f0 = fi[0 ]+fi[1 ];
+ f3 = fi[2 ]-fi[3 ];
+ f2 = fi[2 ]+fi[3 ];
+ fi[2 ] = (f0-f2);
+ fi[0 ] = (f0+f2);
+ fi[3 ] = (f1-f3);
+ fi[1 ] = (f1+f3);
+ }
+ }
+ else
+ {
+ for (fi=fz,fn=fz+n,gi=fi+1;fi<fn;fi+=8,gi+=8)
+ {
+ REAL bs1,bc1,bs2,bc2,bs3,bc3,bs4,bc4,
+ bg0,bf0,bf1,bg1,bf2,bg2,bf3,bg3;
+ bc1 = fi[0 ] - gi[0 ];
+ bs1 = fi[0 ] + gi[0 ];
+ bc2 = fi[2 ] - gi[2 ];
+ bs2 = fi[2 ] + gi[2 ];
+ bc3 = fi[4 ] - gi[4 ];
+ bs3 = fi[4 ] + gi[4 ];
+ bc4 = fi[6 ] - gi[6 ];
+ bs4 = fi[6 ] + gi[6 ];
+ bf1 = (bs1 - bs2);
+ bf0 = (bs1 + bs2);
+ bg1 = (bc1 - bc2);
+ bg0 = (bc1 + bc2);
+ bf3 = (bs3 - bs4);
+ bf2 = (bs3 + bs4);
+ bg3 = SQRT2*bc4;
+ bg2 = SQRT2*bc3;
+ fi[4 ] = bf0 - bf2;
+ fi[0 ] = bf0 + bf2;
+ fi[6 ] = bf1 - bf3;
+ fi[2 ] = bf1 + bf3;
+ gi[4 ] = bg0 - bg2;
+ gi[0 ] = bg0 + bg2;
+ gi[6 ] = bg1 - bg3;
+ gi[2 ] = bg1 + bg3;
+ }
+ }
+ if (n<16) return;
+
+ do
+ {
+ REAL s1,c1;
+ int ii;
+ k += 2;
+ k1 = 1 << k;
+ k2 = k1 << 1;
+ k4 = k2 << 1;
+ k3 = k2 + k1;
+ kx = k1 >> 1;
+ fi = fz;
+ gi = fi + kx;
+ fn = fz + n;
+ do
+ {
+ REAL g0,f0,f1,g1,f2,g2,f3,g3;
+ f1 = fi[0 ] - fi[k1];
+ f0 = fi[0 ] + fi[k1];
+ f3 = fi[k2] - fi[k3];
+ f2 = fi[k2] + fi[k3];
+ fi[k2] = f0 - f2;
+ fi[0 ] = f0 + f2;
+ fi[k3] = f1 - f3;
+ fi[k1] = f1 + f3;
+ g1 = gi[0 ] - gi[k1];
+ g0 = gi[0 ] + gi[k1];
+ g3 = SQRT2 * gi[k3];
+ g2 = SQRT2 * gi[k2];
+ gi[k2] = g0 - g2;
+ gi[0 ] = g0 + g2;
+ gi[k3] = g1 - g3;
+ gi[k1] = g1 + g3;
+ gi += k4;
+ fi += k4;
+ } while (fi<fn);
+ TRIG_INIT(k,c1,s1);
+ for (ii=1;ii<kx;ii++)
+ {
+ REAL c2,s2;
+ TRIG_NEXT(k,c1,s1);
+ c2 = c1*c1 - s1*s1;
+ s2 = 2*(c1*s1);
+ fn = fz + n;
+ fi = fz +ii;
+ gi = fz +k1-ii;
+ do
+ {
+ REAL a,b,g0,f0,f1,g1,f2,g2,f3,g3;
+ b = s2*fi[k1] - c2*gi[k1];
+ a = c2*fi[k1] + s2*gi[k1];
+ f1 = fi[0 ] - a;
+ f0 = fi[0 ] + a;
+ g1 = gi[0 ] - b;
+ g0 = gi[0 ] + b;
+ b = s2*fi[k3] - c2*gi[k3];
+ a = c2*fi[k3] + s2*gi[k3];
+ f3 = fi[k2] - a;
+ f2 = fi[k2] + a;
+ g3 = gi[k2] - b;
+ g2 = gi[k2] + b;
+ b = s1*f2 - c1*g3;
+ a = c1*f2 + s1*g3;
+ fi[k2] = f0 - a;
+ fi[0 ] = f0 + a;
+ gi[k3] = g1 - b;
+ gi[k1] = g1 + b;
+ b = c1*g2 - s1*f3;
+ a = s1*g2 + c1*f3;
+ gi[k2] = g0 - a;
+ gi[0 ] = g0 + a;
+ fi[k3] = f1 - b;
+ fi[k1] = f1 + b;
+ gi += k4;
+ fi += k4;
+ } while (fi<fn);
+ }
+ TRIG_RESET(k,c1,s1);
+ } while (k4<n);
+}
+
+void mayer_fft(int n, REAL *real, REAL *imag)
+{
+ REAL a,b,c,d;
+ REAL q,r,s,t;
+ int i,j,k;
+ for (i=1,j=n-1,k=n/2;i<k;i++,j--) {
+ a = real[i]; b = real[j]; q=a+b; r=a-b;
+ c = imag[i]; d = imag[j]; s=c+d; t=c-d;
+ real[i] = (q+t)*.5; real[j] = (q-t)*.5;
+ imag[i] = (s-r)*.5; imag[j] = (s+r)*.5;
+ }
+ mayer_fht(real,n);
+ mayer_fht(imag,n);
+}
+
+void mayer_ifft(int n, REAL *real, REAL *imag)
+{
+ REAL a,b,c,d;
+ REAL q,r,s,t;
+ int i,j,k;
+ mayer_fht(real,n);
+ mayer_fht(imag,n);
+ for (i=1,j=n-1,k=n/2;i<k;i++,j--) {
+ a = real[i]; b = real[j]; q=a+b; r=a-b;
+ c = imag[i]; d = imag[j]; s=c+d; t=c-d;
+ imag[i] = (s+r)*0.5; imag[j] = (s-r)*0.5;
+ real[i] = (q-t)*0.5; real[j] = (q+t)*0.5;
+ }
+}
+
+void mayer_realfft(int n, REAL *real)
+{
+ REAL a,b;
+ int i,j,k;
+ mayer_fht(real,n);
+ for (i=1,j=n-1,k=n/2;i<k;i++,j--) {
+ a = real[i];
+ b = real[j];
+ real[j] = (a-b)*0.5;
+ real[i] = (a+b)*0.5;
+ }
+}
+
+void mayer_realifft(int n, REAL *real)
+{
+ REAL a,b;
+ int i,j,k;
+ for (i=1,j=n-1,k=n/2;i<k;i++,j--) {
+ a = real[i];
+ b = real[j];
+ real[j] = (a-b);
+ real[i] = (a+b);
+ }
+ mayer_fht(real,n);
+}
--- /dev/null
+++ b/leaf/Externals/d_fft_mayer.h
@@ -1,0 +1,31 @@
+/*
+ * d_fft_mayer.h
+ *
+ * Created: 5/4/2017 10:33:59 PM
+ * Author: Kenny
+ */
+
+
+#ifndef D_FFT_MAYER_H_
+#define D_FFT_MAYER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef float t_sample; /* a float type at most the same size */
+
+#define REAL t_sample
+
+void mayer_fht(REAL *fz, int n);
+void mayer_fft(int n, REAL *real, REAL *imag);
+void mayer_ifft(int n, REAL *real, REAL *imag);
+void mayer_realfft(int n, REAL *real);
+void mayer_realifft(int n, REAL *real);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* D_FFT_MAYER_H_ */
--- /dev/null
+++ b/leaf/Externals/trigtbl.h
@@ -1,0 +1,173 @@
+
+/*
+** Please only distribute this with it's associated FHT routine.
+** This algorithm is apparently patented(!) and the code copyrighted.
+** See the comment with the fht routine for more info.
+** -Thanks,
+** Ron Mayer
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef REAL
+#else
+#define REAL double
+#endif
+
+#ifdef GOOD_TRIG
+#else
+#define FAST_TRIG
+#endif
+
+#if defined(GOOD_TRIG)
+#define FHT_SWAP(a,b,t) {(t)=(a);(a)=(b);(b)=(t);}
+#define TRIG_VARS \
+ int t_lam=0;
+#define TRIG_INIT(k,c,s) \
+ { \
+ int i; \
+ for (i=2 ; i<=k ; i++) \
+ {coswrk[i]=costab[i];sinwrk[i]=sintab[i];} \
+ t_lam = 0; \
+ c = 1; \
+ s = 0; \
+ }
+#define TRIG_NEXT(k,c,s) \
+ { \
+ int i,j; \
+ (t_lam)++; \
+ for (i=0 ; !((1<<i)&t_lam) ; i++); \
+ i = k-i; \
+ s = sinwrk[i]; \
+ c = coswrk[i]; \
+ if (i>1) \
+ { \
+ for (j=k-i+2 ; (1<<j)&t_lam ; j++); \
+ j = k - j; \
+ sinwrk[i] = halsec[i] * (sinwrk[i-1] + sinwrk[j]); \
+ coswrk[i] = halsec[i] * (coswrk[i-1] + coswrk[j]); \
+ } \
+ }
+#define TRIG_RESET(k,c,s)
+#endif
+
+#if defined(FAST_TRIG)
+#define TRIG_VARS \
+ REAL t_c,t_s;
+#define TRIG_INIT(k,c,s) \
+ { \
+ t_c = costab[k]; \
+ t_s = sintab[k]; \
+ c = 1; \
+ s = 0; \
+ }
+#define TRIG_NEXT(k,c,s) \
+ { \
+ REAL t = c; \
+ c = t*t_c - s*t_s; \
+ s = t*t_s + s*t_c; \
+ }
+#define TRIG_RESET(k,c,s)
+#endif
+
+static REAL halsec[20]=
+ {
+ 0,
+ 0,
+ .54119610014619698439972320536638942006107206337801,
+ .50979557910415916894193980398784391368261849190893,
+ .50241928618815570551167011928012092247859337193963,
+ .50060299823519630134550410676638239611758632599591,
+ .50015063602065098821477101271097658495974913010340,
+ .50003765191554772296778139077905492847503165398345,
+ .50000941253588775676512870469186533538523133757983,
+ .50000235310628608051401267171204408939326297376426,
+ .50000058827484117879868526730916804925780637276181,
+ .50000014706860214875463798283871198206179118093251,
+ .50000003676714377807315864400643020315103490883972,
+ .50000000919178552207366560348853455333939112569380,
+ .50000000229794635411562887767906868558991922348920,
+ .50000000057448658687873302235147272458812263401372
+ };
+static REAL costab[20]=
+ {
+ .00000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768847,
+ .92387953251128675612818318939678828682241662586364,
+ .98078528040323044912618223613423903697393373089333,
+ .99518472667219688624483695310947992157547486872985,
+ .99879545620517239271477160475910069444320361470461,
+ .99969881869620422011576564966617219685006108125772,
+ .99992470183914454092164649119638322435060646880221,
+ .99998117528260114265699043772856771617391725094433,
+ .99999529380957617151158012570011989955298763362218,
+ .99999882345170190992902571017152601904826792288976,
+ .99999970586288221916022821773876567711626389934930,
+ .99999992646571785114473148070738785694820115568892,
+ .99999998161642929380834691540290971450507605124278,
+ .99999999540410731289097193313960614895889430318945,
+ .99999999885102682756267330779455410840053741619428
+ };
+static REAL sintab[20]=
+ {
+ 1.0000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768846,
+ .38268343236508977172845998403039886676134456248561,
+ .19509032201612826784828486847702224092769161775195,
+ .09801714032956060199419556388864184586113667316749,
+ .04906767432741801425495497694268265831474536302574,
+ .02454122852291228803173452945928292506546611923944,
+ .01227153828571992607940826195100321214037231959176,
+ .00613588464915447535964023459037258091705788631738,
+ .00306795676296597627014536549091984251894461021344,
+ .00153398018628476561230369715026407907995486457522,
+ .00076699031874270452693856835794857664314091945205,
+ .00038349518757139558907246168118138126339502603495,
+ .00019174759731070330743990956198900093346887403385,
+ .00009587379909597734587051721097647635118706561284,
+ .00004793689960306688454900399049465887274686668768
+ };
+static REAL coswrk[20]=
+ {
+ .00000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768847,
+ .92387953251128675612818318939678828682241662586364,
+ .98078528040323044912618223613423903697393373089333,
+ .99518472667219688624483695310947992157547486872985,
+ .99879545620517239271477160475910069444320361470461,
+ .99969881869620422011576564966617219685006108125772,
+ .99992470183914454092164649119638322435060646880221,
+ .99998117528260114265699043772856771617391725094433,
+ .99999529380957617151158012570011989955298763362218,
+ .99999882345170190992902571017152601904826792288976,
+ .99999970586288221916022821773876567711626389934930,
+ .99999992646571785114473148070738785694820115568892,
+ .99999998161642929380834691540290971450507605124278,
+ .99999999540410731289097193313960614895889430318945,
+ .99999999885102682756267330779455410840053741619428
+ };
+static REAL sinwrk[20]=
+ {
+ 1.0000000000000000000000000000000000000000000000000,
+ .70710678118654752440084436210484903928483593768846,
+ .38268343236508977172845998403039886676134456248561,
+ .19509032201612826784828486847702224092769161775195,
+ .09801714032956060199419556388864184586113667316749,
+ .04906767432741801425495497694268265831474536302574,
+ .02454122852291228803173452945928292506546611923944,
+ .01227153828571992607940826195100321214037231959176,
+ .00613588464915447535964023459037258091705788631738,
+ .00306795676296597627014536549091984251894461021344,
+ .00153398018628476561230369715026407907995486457522,
+ .00076699031874270452693856835794857664314091945205,
+ .00038349518757139558907246168118138126339502603495,
+ .00019174759731070330743990956198900093346887403385,
+ .00009587379909597734587051721097647635118706561284,
+ .00004793689960306688454900399049465887274686668768
+ };
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null
+++ b/leaf/Inc/leaf-analysis.h
@@ -1,0 +1,296 @@
+/*==============================================================================
+
+ leaf-analysis.h
+ Created: 25 Oct 2019 10:30:52am
+ Author: Matthew Wang
+
+ ==============================================================================*/
+
+#ifndef LEAF_ANALYSIS_H_INCLUDED
+#define LEAF_ANALYSIS_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-mempool.h"
+#include "leaf-math.h"
+#include "leaf-filters.h"
+#include "leaf-envelopes.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* Envelope Follower */
+ typedef struct _tEnvelopeFollower
+ {
+ float y;
+ float a_thresh;
+ float d_coeff;
+
+ } _tEnvelopeFollower;
+
+ typedef _tEnvelopeFollower* tEnvelopeFollower;
+
+ void tEnvelopeFollower_init (tEnvelopeFollower* const, float attackThreshold, float decayCoeff);
+ void tEnvelopeFollower_free (tEnvelopeFollower* const);
+ void tEnvelopeFollower_initToPool (tEnvelopeFollower* const, float attackThreshold, float decayCoeff, tMempool* const);
+ void tEnvelopeFollower_freeFromPool (tEnvelopeFollower* const, tMempool* const);
+
+ float tEnvelopeFollower_tick (tEnvelopeFollower* const, float x);
+ int tEnvelopeFollower_decayCoeff (tEnvelopeFollower* const, float decayCoeff);
+ int tEnvelopeFollower_attackThresh (tEnvelopeFollower* const, float attackThresh);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Zero Crossing Detector */
+ typedef struct _tZeroCrossing {
+ int count;
+ int maxWindowSize;
+ int currentWindowSize;
+ float invCurrentWindowSize;
+ float* inBuffer;
+ uint16_t* countBuffer;
+ int prevPosition;
+ int position;
+ } _tZeroCrossing;
+
+ typedef _tZeroCrossing* tZeroCrossing;
+
+ void tZeroCrossing_init (tZeroCrossing* const, int maxWindowSize);
+ void tZeroCrossing_free (tZeroCrossing* const);
+ void tZeroCrossing_initToPool (tZeroCrossing* const, int maxWindowSize, tMempool* const);
+ void tZeroCrossing_freeFromPool (tZeroCrossing* const, tMempool* const);
+
+ float tZeroCrossing_tick (tZeroCrossing* const, float input);
+ void tZeroCrossing_setWindow (tZeroCrossing* const, float windowSize);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* PowerEnvelopeFollower */
+ typedef struct _tPowerFollower {
+ float factor, oneminusfactor;
+ float curr;
+
+ } _tPowerFollower;
+
+ typedef _tPowerFollower* tPowerFollower;
+
+ void tPowerFollower_init (tPowerFollower* const, float factor);
+ void tPowerFollower_free (tPowerFollower* const);
+ void tPowerFollower_initToPool (tPowerFollower* const, float factor, tMempool* const);
+ void tPowerFollower_freeFromPool (tPowerFollower* const, tMempool* const);
+
+ float tPowerFollower_tick (tPowerFollower* const, float input);
+ float tPowerFollower_sample (tPowerFollower* const);
+ int tPowerFollower_setFactor (tPowerFollower* const, float factor);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ // ENV~ from PD, modified for LEAF
+#define MAXOVERLAP 32
+#define INITVSTAKEN 64
+#define ENV_WINDOW_SIZE 1024
+#define ENV_HOP_SIZE 256
+
+ typedef struct _tEnvPD
+ {
+ float buf[ENV_WINDOW_SIZE + INITVSTAKEN];
+ uint16_t x_phase; /* number of points since last output */
+ uint16_t x_period; /* requested period of output */
+ uint16_t x_realperiod; /* period rounded up to vecsize multiple */
+ uint16_t x_npoints; /* analysis window size in samples */
+ float x_result; /* result to output */
+ float x_sumbuf[MAXOVERLAP]; /* summing buffer */
+ float x_f;
+ uint16_t windowSize, hopSize, blockSize;
+ uint16_t x_allocforvs; /* extra buffer for DSP vector size */
+ } _tEnvPD;
+
+ typedef _tEnvPD* tEnvPD;
+
+ void tEnvPD_init (tEnvPD* const, int windowSize, int hopSize, int blockSize);
+ void tEnvPD_free (tEnvPD* const);
+ void tEnvPD_initToPool (tEnvPD* const, int windowSize, int hopSize, int blockSize, tMempool* const);
+ void tEnvPD_freeFromPool (tEnvPD* const, tMempool* const);
+
+ float tEnvPD_tick (tEnvPD* const);
+ void tEnvPD_processBlock (tEnvPD* const, float* in);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* tAttackDetection */
+#define DEFBLOCKSIZE 1024
+#define DEFTHRESHOLD 6
+#define DEFATTACK 10
+#define DEFRELEASE 10
+
+ typedef struct _tAttackDetection
+ {
+ float env;
+
+ //Attack & Release times in msec
+ int atk;
+ int rel;
+
+ //Attack & Release coefficients based on times
+ float atk_coeff;
+ float rel_coeff;
+
+ int blocksize;
+ int samplerate;
+
+ //RMS amplitude of previous block - used to decide if attack is present
+ float prevAmp;
+
+ float threshold;
+ } _tAttackDetection;
+
+ typedef _tAttackDetection* tAttackDetection;
+
+ void tAttackDetection_init (tAttackDetection* const, int blocksize, int atk, int rel);
+ void tAttackDetection_free (tAttackDetection* const);
+ void tAttackDetection_initToPool (tAttackDetection* const, int blocksize, int atk, int rel, tMempool* const);
+ void tAttackDetection_freeFromPool (tAttackDetection* const, tMempool* const);
+
+ // set expected input blocksize
+ void tAttackDetection_setBlocksize (tAttackDetection* const, int size);
+
+ // change atkDetector sample rate
+ void tAttackDetection_setSamplerate (tAttackDetection* const, int inRate);
+
+ // set attack time and coeff
+ void tAttackDetection_setAttack (tAttackDetection* const, int inAtk);
+
+ // set release time and coeff
+ void tAttackDetection_setRelease (tAttackDetection* const, int inRel);
+
+ // set level above which values are identified as attacks
+ void tAttackDetection_setThreshold (tAttackDetection* const, float thres);
+
+ // find largest transient in input block, return index of attack
+ int tAttackDetection_detect (tAttackDetection* const, float *in);
+
+ //==============================================================================
+
+ // tSNAC: period detector
+ // from Katja Vetters http://www.katjaas.nl/helmholtz/helmholtz.html
+#define SNAC_FRAME_SIZE 1024 // default analysis framesize // should be the same as (or smaller than?) PS_FRAME_SIZE
+#define DEFOVERLAP 1 // default overlap
+#define DEFBIAS 0.2f // default bias
+#define DEFMINRMS 0.003f // default minimum RMS
+#define SEEK 0.85f // seek-length as ratio of framesize
+
+ typedef struct _tSNAC
+ {
+ float* inputbuf;
+ float* processbuf;
+ float* spectrumbuf;
+ float* biasbuf;
+ uint16_t timeindex;
+ uint16_t framesize;
+ uint16_t overlap;
+ uint16_t periodindex;
+
+ float periodlength;
+ float fidelity;
+ float biasfactor;
+ float minrms;
+
+ } _tSNAC;
+
+ typedef _tSNAC* tSNAC;
+
+ void tSNAC_init (tSNAC* const, int overlaparg);
+ void tSNAC_free (tSNAC* const);
+ void tSNAC_initToPool (tSNAC* const, int overlaparg, tMempool* const);
+ void tSNAC_freeFromPool (tSNAC* const, tMempool* const);
+
+ void tSNAC_ioSamples (tSNAC *s, float *in, float *out, int size);
+ void tSNAC_setOverlap (tSNAC *s, int lap);
+ void tSNAC_setBias (tSNAC *s, float bias);
+ void tSNAC_setMinRMS (tSNAC *s, float rms);
+
+ /*To get freq, perform SAMPLE_RATE/snac_getperiod() */
+ float tSNAC_getPeriod (tSNAC *s);
+ float tSNAC_getFidelity (tSNAC *s);
+
+#define DEFPITCHRATIO 2.0f
+#define DEFTIMECONSTANT 100.0f
+#define DEFHOPSIZE 64
+#define DEFWINDOWSIZE 64
+#define FBA 20
+#define HPFREQ 40.0f
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+ // Period detection
+ typedef struct _tPeriodDetection
+ {
+ tEnvPD env;
+ tSNAC snac;
+ float* inBuffer;
+ float* outBuffer;
+ int frameSize;
+ int bufSize;
+ int framesPerBuffer;
+ int curBlock;
+ int lastBlock;
+ int i;
+ int indexstore;
+ int iLast;
+ int index;
+ float period;
+
+ uint16_t hopSize;
+ uint16_t windowSize;
+ uint8_t fba;
+
+ float timeConstant;
+ float radius;
+ float max;
+ float lastmax;
+ float deltamax;
+
+ float fidelityThreshold;
+
+ float history;
+ float alpha;
+ float tolerance;
+
+ } _tPeriodDetection;
+
+ typedef _tPeriodDetection* tPeriodDetection;
+
+ void tPeriodDetection_init (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize);
+ void tPeriodDetection_free (tPeriodDetection* const);
+ void tPeriodDetection_initToPool (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, tMempool* const);
+ void tPeriodDetection_freeFromPool (tPeriodDetection* const, tMempool* const);
+
+ float tPeriodDetection_tick (tPeriodDetection* const, float sample);
+ float tPeriodDetection_getPeriod (tPeriodDetection* const);
+ void tPeriodDetection_setHopSize (tPeriodDetection* const, int hs);
+ void tPeriodDetection_setWindowSize (tPeriodDetection* const, int ws);
+ void tPeriodDetection_setFidelityThreshold(tPeriodDetection* const, float threshold);
+ void tPeriodDetection_setAlpha (tPeriodDetection* const, float alpha);
+ void tPeriodDetection_setTolerance (tPeriodDetection* const, float tolerance);
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_ANALYSIS_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-delay.h
@@ -1,0 +1,229 @@
+/*==============================================================================
+
+ leaf-delay.h
+ Created: 20 Jan 2017 12:01:24pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#ifndef LEAF_DELAY_H_INCLUDED
+#define LEAF_DELAY_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* Non-interpolating delay, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tDelay
+ {
+ float gain;
+ float* buff;
+
+ float lastOut, lastIn;
+
+ uint32_t inPoint, outPoint;
+
+ uint32_t delay, maxDelay;
+
+ } _tDelay;
+
+ typedef _tDelay* tDelay;
+
+ void tDelay_init (tDelay* const, uint32_t delay, uint32_t maxDelay);
+ void tDelay_free (tDelay* const);
+ void tDelay_initToPool (tDelay* const, uint32_t delay, uint32_t maxDelay, tMempool* const);
+ void tDelay_freeFromPool (tDelay* const, tMempool* const);
+
+ void tDelay_clear (tDelay* const);
+ int tDelay_setDelay (tDelay* const, uint32_t delay);
+ uint32_t tDelay_getDelay (tDelay* const);
+ void tDelay_tapIn (tDelay* const, float in, uint32_t tapDelay);
+ float tDelay_tapOut (tDelay* const, uint32_t tapDelay);
+ float tDelay_addTo (tDelay* const, float value, uint32_t tapDelay);
+ float tDelay_tick (tDelay* const, float sample);
+ float tDelay_getLastOut (tDelay* const);
+ float tDelay_getLastIn (tDelay* const);
+
+ //==============================================================================
+
+ /* Linearly-interpolating delay, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tLinearDelay
+ {
+ float gain;
+ float* buff;
+
+ float lastOut, lastIn;
+
+ uint32_t inPoint, outPoint;
+
+ uint32_t maxDelay;
+
+ float delay;
+
+ float alpha, omAlpha;
+
+ } _tLinearDelay;
+
+ typedef _tLinearDelay* tLinearDelay;
+
+ void tLinearDelay_init (tLinearDelay* const, float delay, uint32_t maxDelay);
+ void tLinearDelay_free (tLinearDelay* const);
+ void tLinearDelay_initToPool (tLinearDelay* const, float delay, uint32_t maxDelay, tMempool* const);
+ void tLinearDelay_freeFromPool(tLinearDelay* const, tMempool* const);
+ void tLinearDelay_clear (tLinearDelay* const dl);
+ int tLinearDelay_setDelay (tLinearDelay* const, float delay);
+ float tLinearDelay_getDelay (tLinearDelay* const);
+ void tLinearDelay_tapIn (tLinearDelay* const, float in, uint32_t tapDelay);
+ float tLinearDelay_tapOut (tLinearDelay* const, uint32_t tapDelay);
+ float tLinearDelay_addTo (tLinearDelay* const, float value, uint32_t tapDelay);
+ float tLinearDelay_tick (tLinearDelay* const, float sample);
+ void tLinearDelay_tickIn (tLinearDelay* const, float input);
+ float tLinearDelay_tickOut (tLinearDelay* const);
+ float tLinearDelay_getLastOut (tLinearDelay* const);
+ float tLinearDelay_getLastIn (tLinearDelay* const);
+
+
+
+ //==============================================================================
+
+ /* Hermite-interpolating delay, created by adapting STK linear delay with Hermite interpolation */
+ typedef struct _tHermiteDelay
+ {
+ float gain;
+ float* buff;
+
+ float lastOut, lastIn;
+
+ uint32_t inPoint, outPoint;
+
+ uint32_t maxDelay;
+
+ float delay;
+
+ float alpha, omAlpha;
+
+ } _tHermiteDelay;
+
+ typedef _tHermiteDelay* tHermiteDelay;
+
+ void tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay);
+ void tHermiteDelay_free (tHermiteDelay* const dl);
+ void tHermiteDelay_initToPool (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);
+ void tHermiteDelay_freeFromPool (tHermiteDelay* const dl, tMempool* const mp);
+ void tHermiteDelay_clear (tHermiteDelay* const dl);
+ float tHermiteDelay_tick (tHermiteDelay* const dl, float input);
+ void tHermiteDelay_tickIn (tHermiteDelay* const dl, float input);
+ float tHermiteDelay_tickOut (tHermiteDelay* const dl);
+ int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay);
+ float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay);
+ void tHermiteDelay_tapIn (tHermiteDelay* const dl, float value, uint32_t tapDelay);
+ float tHermiteDelay_addTo (tHermiteDelay* const dl, float value, uint32_t tapDelay);
+ float tHermiteDelay_getDelay (tHermiteDelay* const dl);
+ float tHermiteDelay_getLastOut (tHermiteDelay* const dl);
+ float tHermiteDelay_getLastIn (tHermiteDelay* const dl);
+ void tHermiteDelay_setGain (tHermiteDelay* const dl, float gain);
+ float tHermiteDelay_getGain (tHermiteDelay* const dl);
+
+
+ //==============================================================================
+
+ /* Allpass-interpolating delay, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tAllpassDelay
+ {
+ float gain;
+ float* buff;
+
+ float lastOut, lastIn;
+
+ uint32_t inPoint, outPoint;
+
+ uint32_t maxDelay;
+
+ float delay;
+
+ float alpha, omAlpha, coeff;
+
+ float apInput;
+
+ } _tAllpassDelay;
+
+ typedef _tAllpassDelay* tAllpassDelay;
+
+ void tAllpassDelay_init (tAllpassDelay* const, float delay, uint32_t maxDelay);
+ void tAllpassDelay_free (tAllpassDelay* const);
+ void tAllpassDelay_initToPool (tAllpassDelay* const, float delay, uint32_t maxDelay, tMempool* const);
+ void tAllpassDelay_freeFromPool(tAllpassDelay* const, tMempool* const);
+
+ void tAllpassDelay_clear (tAllpassDelay* const);
+ int tAllpassDelay_setDelay (tAllpassDelay* const, float delay);
+ float tAllpassDelay_getDelay (tAllpassDelay* const);
+ void tAllpassDelay_tapIn (tAllpassDelay* const, float in, uint32_t tapDelay);
+ float tAllpassDelay_tapOut (tAllpassDelay* const, uint32_t tapDelay);
+ float tAllpassDelay_addTo (tAllpassDelay* const, float value, uint32_t tapDelay);
+ float tAllpassDelay_tick (tAllpassDelay* const, float sample);
+ float tAllpassDelay_getLastOut (tAllpassDelay* const);
+ float tAllpassDelay_getLastIn (tAllpassDelay* const);
+
+ //==============================================================================
+
+ /* Linear interpolating delay with fixed read and write pointers, variable rate. */
+ typedef struct _tTapeDelay
+ {
+ float gain;
+ float* buff;
+
+ float lastOut, lastIn;
+
+ uint32_t inPoint;
+
+ uint32_t maxDelay;
+
+ float delay, inc, idx;
+
+ float apInput;
+
+ } _tTapeDelay;
+
+ typedef _tTapeDelay* tTapeDelay;
+
+ void tTapeDelay_init (tTapeDelay* const, float delay, uint32_t maxDelay);
+ void tTapeDelay_free (tTapeDelay* const);
+ void tTapeDelay_initToPool (tTapeDelay* const, float delay, uint32_t maxDelay, tMempool* const);
+ void tTapeDelay_freeFromPool(tTapeDelay* const, tMempool* const);
+
+ void tTapeDelay_clear (tTapeDelay* const);
+ void tTapeDelay_setDelay (tTapeDelay* const, float delay);
+ float tTapeDelay_getDelay (tTapeDelay* const);
+ void tTapeDelay_tapIn (tTapeDelay* const, float in, uint32_t tapDelay);
+ float tTapeDelay_tapOut (tTapeDelay* const d, float tapDelay);
+ float tTapeDelay_addTo (tTapeDelay* const, float value, uint32_t tapDelay);
+ float tTapeDelay_tick (tTapeDelay* const, float sample);
+ void tTapeDelay_incrementInPoint(tTapeDelay* const dl);
+ float tTapeDelay_getLastOut (tTapeDelay* const);
+ float tTapeDelay_getLastIn (tTapeDelay* const);
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_DELAY_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-distortion.h
@@ -1,0 +1,164 @@
+/*==============================================================================
+
+ leaf-distortion.h
+ Created: 25 Oct 2019 10:23:28am
+ Author: Matthew Wang
+
+ ==============================================================================*/
+
+#ifndef LEAF_DISTORTION_H_INCLUDED
+#define LEAF_DISTORTION_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-mempool.h"
+#include "leaf-math.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ typedef struct _tSampleReducer
+ {
+ float invRatio;
+ float hold;
+ uint32_t count;
+ } _tSampleReducer;
+
+ typedef _tSampleReducer* tSampleReducer;
+
+ void tSampleReducer_init (tSampleReducer* const);
+ void tSampleReducer_free (tSampleReducer* const);
+ void tSampleReducer_initToPool (tSampleReducer* const, tMempool* const);
+ void tSampleReducer_freeFromPool (tSampleReducer* const, tMempool* const);
+
+ float tSampleReducer_tick (tSampleReducer* const, float input);
+
+ // sampling ratio
+ void tSampleReducer_setRatio (tSampleReducer* const, float ratio);
+
+ //==============================================================================
+
+ typedef struct _tOversampler
+ {
+ int ratio;
+ float* pCoeffs;
+ float* upState;
+ float* downState;
+ int numTaps;
+ int phaseLength;
+ } _tOversampler;
+
+ typedef _tOversampler* tOversampler;
+
+ void tOversampler_init (tOversampler* const, int order, oBool extraQuality);
+ void tOversampler_free (tOversampler* const);
+ void tOversampler_initToPool (tOversampler* const, int order, oBool extraQuality, tMempool* const);
+ void tOversampler_freeFromPool (tOversampler* const, tMempool* const);
+
+ void tOversampler_upsample (tOversampler* const, float input, float* output);
+ float tOversampler_downsample (tOversampler* const os, float* input);
+ float tOversampler_tick (tOversampler* const, float input, float (*effectTick)(float));
+ int tOversampler_getLatency (tOversampler* const os);
+
+ //==============================================================================
+
+ /* tLockhartWavefolder */
+
+ typedef struct _tLockhartWavefolder
+ {
+ double Ln1;
+ double Fn1;
+ double xn1;
+
+ double RL;
+ double R;
+ double VT;
+ double Is;
+
+ double a;
+ double b;
+ double d;
+
+ // Antialiasing error threshold
+ double AAthresh;
+ double half_a;
+ double longthing;
+
+ double LambertThresh, w, expw, p, r, s, myerr;
+ double l;
+ double u, Ln, Fn;
+ double tempsDenom;
+ double tempErrDenom;
+ double tempOutDenom;
+
+ } _tLockhartWavefolder;
+
+ typedef _tLockhartWavefolder* tLockhartWavefolder;
+
+ void tLockhartWavefolder_init (tLockhartWavefolder* const);
+ void tLockhartWavefolder_free (tLockhartWavefolder* const);
+ void tLockhartWavefolder_initToPool (tLockhartWavefolder* const, tMempool* const);
+ void tLockhartWavefolder_freeFromPool (tLockhartWavefolder* const, tMempool* const);
+
+ float tLockhartWavefolder_tick (tLockhartWavefolder* const, float samp);
+
+ //==============================================================================
+
+ typedef struct _tCrusher
+ {
+ float srr;
+ float mult, div;
+ float rnd;
+
+ uint32_t op; //which bitwise operation (0-7)
+
+ float gain;
+ tSampleReducer sReducer;
+
+ } _tCrusher;
+
+ typedef _tCrusher* tCrusher;
+
+ void tCrusher_init (tCrusher* const);
+ void tCrusher_free (tCrusher* const);
+ void tCrusher_initToPool (tCrusher* const, tMempool* const);
+ void tCrusher_freeFromPool (tCrusher* const, tMempool* const);
+
+ float tCrusher_tick (tCrusher* const, float input);
+
+ // 0.0 - 1.0
+ void tCrusher_setOperation (tCrusher* const, float op);
+
+ // 0.0 - 1.0
+ void tCrusher_setQuality (tCrusher* const, float val);
+
+ // what division to round to
+ void tCrusher_setRound (tCrusher* const, float rnd);
+
+ // sampling ratio
+ void tCrusher_setSamplingRatio (tCrusher* const, float ratio);
+
+ //==============================================================================
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_DISTORTION_H_INCLUDED
+
+//==============================================================================
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-dynamics.h
@@ -1,0 +1,122 @@
+/*==============================================================================
+
+ leaf-dynamics.h
+ Created: 30 Nov 2018 11:57:05am
+ Author: airship
+
+ ==============================================================================*/
+
+#ifndef LEAF_DYNAMICS_H_INCLUDED
+#define LEAF_DYNAMICS_H_INCLUDED
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-analysis.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Compressor */
+ typedef struct _tCompressor
+ {
+ float tauAttack, tauRelease;
+ float T, R, W, M; // Threshold, compression Ratio, decibel Width of knee transition, decibel Make-up gain
+
+ float x_G[2], y_G[2], x_T[2], y_T[2];
+
+ oBool isActive;
+
+ } _tCompressor;
+
+ typedef _tCompressor* tCompressor;
+
+ void tCompressor_init (tCompressor* const);
+ void tCompressor_free (tCompressor* const);
+ void tCompressor_initToPool (tCompressor* const, tMempool* const);
+ void tCompressor_freeFromPool(tCompressor* const, tMempool* const);
+
+ float tCompressor_tick (tCompressor* const, float input);
+
+ ///
+ /* Feedback leveller */
+ // An auto VCA that you put into a feedback circuit to make it stay at the same level.
+ // It can enforce level bidirectionally (amplifying and attenuating as needed) or
+ // just attenutating. The former option allows for infinite sustain strings, for example, while
+ // The latter option allows for decaying strings, which can never exceed
+ // a specific level.
+
+ typedef struct _tFeedbackLeveler {
+ float targetLevel; // target power level
+ float strength; // how strongly level difference affects the VCA
+ int mode; // 0 for upwards limiting only, 1 for biderctional limiting
+ float curr;
+ tPowerFollower pwrFlw; // internal power follower needed for level tracking
+
+ } _tFeedbackLeveler;
+
+ typedef _tFeedbackLeveler* tFeedbackLeveler;
+
+ void tFeedbackLeveler_init (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode);
+ void tFeedbackLeveler_free (tFeedbackLeveler* const);
+ void tFeedbackLeveler_initToPool (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode, tMempool* const);
+ void tFeedbackLeveler_freeFromPool (tFeedbackLeveler* const, tMempool* const);
+
+ float tFeedbackLeveler_tick (tFeedbackLeveler* const, float input);
+ float tFeedbackLeveler_sample (tFeedbackLeveler* const);
+ void tFeedbackLeveler_setTargetLevel (tFeedbackLeveler* const, float TargetLevel);
+ void tFeedbackLeveler_setFactor (tFeedbackLeveler* const, float factor);
+ void tFeedbackLeveler_setMode (tFeedbackLeveler* const, int mode); // 0 for upwards limiting only, 1 for biderctional limiting
+ void tFeedbackLeveler_setStrength (tFeedbackLeveler* const, float strength);
+
+
+ //==============================================================================
+
+
+ //Threshold with hysteresis (like Max/MSP thresh~ object)
+
+ typedef struct _tThreshold {
+ float highThresh, lowThresh;
+ int currentValue;
+
+ } _tThreshold;
+
+ typedef _tThreshold* tThreshold;
+
+ void tThreshold_init (tThreshold* const, float low, float high);
+ void tThreshold_free (tThreshold* const);
+ void tThreshold_initToPool (tThreshold* const, float low, float high, tMempool* const);
+ void tThreshold_freeFromPool(tThreshold* const, tMempool* const);
+
+ int tThreshold_tick (tThreshold* const, float input);
+ void tThreshold_setLow (tThreshold* const, float low);
+ void tThreshold_setHigh (tThreshold* const, float high);
+
+
+
+ //////======================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_DYNAMICS_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-effects.h
@@ -1,0 +1,360 @@
+/*==============================================================================
+
+ leaf-effects.h
+ Created: 20 Jan 2017 12:01:54pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#ifndef LEAF_EFFECTS_H_INCLUDED
+#define LEAF_EFFECTS_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-dynamics.h"
+#include "leaf-analysis.h"
+#include "leaf-envelopes.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* tTalkbox */
+#define NUM_TALKBOX_PARAM 4
+
+ typedef struct _tTalkbox
+ {
+ float param[NUM_TALKBOX_PARAM];
+
+ int bufsize;
+ float* car0;
+ float* car1;
+ float* window;
+ float* buf0;
+ float* buf1;
+
+ float warpFactor;
+ int32_t warpOn;
+
+ float emphasis;
+ int32_t K, N, O, pos;
+ float wet, dry, FX;
+ float d0, d1, d2, d3, d4;
+ float u0, u1, u2, u3, u4;
+
+
+ } _tTalkbox;
+
+ typedef _tTalkbox* tTalkbox;
+
+ void tTalkbox_init (tTalkbox* const, int bufsize);
+ void tTalkbox_free (tTalkbox* const);
+ void tTalkbox_initToPool (tTalkbox* const, int bufsize, tMempool* const);
+ void tTalkbox_freeFromPool (tTalkbox* const, tMempool* const);
+
+ float tTalkbox_tick (tTalkbox* const, float synth, float voice);
+ void tTalkbox_update (tTalkbox* const);
+ void tTalkbox_suspend (tTalkbox* const);
+ void tTalkbox_lpcDurbin (float *r, int p, float *k, float *g);
+ void tTalkbox_lpc (float *buf, float *car, int32_t n, int32_t o, float warp, int warpOn);
+ void tTalkbox_setQuality (tTalkbox* const, float quality);
+ void tTalkbox_setWarpFactor (tTalkbox* const voc, float warp);
+ void tTalkbox_setWarpOn (tTalkbox* const voc, float warpOn);
+ void tTalkbox_warpedAutocorrelate (float * x, unsigned int L, float * R, unsigned int P, float lambda);
+ //==============================================================================
+
+ /* tVocoder */
+#define NUM_VOCODER_PARAM 8
+#define NBANDS 16
+
+ typedef struct _tVocoder
+ {
+ float param[NUM_VOCODER_PARAM];
+
+ float gain; //output level
+ float thru, high; //hf thru
+ float kout; //downsampled output
+ int32_t kval; //downsample counter
+ int32_t nbnd; //number of bands
+
+ //filter coeffs and buffers - seems it's faster to leave this global than make local copy
+ float f[NBANDS][13]; //[0-8][0 1 2 | 0 1 2 3 | 0 1 2 3 | val rate]
+
+ } _tVocoder;
+
+ typedef _tVocoder* tVocoder;
+
+ void tVocoder_init (tVocoder* const);
+ void tVocoder_free (tVocoder* const);
+ void tVocoder_initToPool (tVocoder* const, tMempool* const);
+ void tVocoder_freeFromPool (tVocoder* const, tMempool* const);
+
+ float tVocoder_tick (tVocoder* const, float synth, float voice);
+ void tVocoder_update (tVocoder* const);
+ void tVocoder_suspend (tVocoder* const);
+
+ //==============================================================================
+
+ // tRosenbergGlottalPulse
+
+ typedef struct _tRosenbergGlottalPulse
+ {
+
+ float phase;
+ float openLength;
+ float pulseLength;
+ float freq;
+ float inc;
+
+
+ } _tRosenbergGlottalPulse;
+
+ typedef _tRosenbergGlottalPulse* tRosenbergGlottalPulse;
+
+ void tRosenbergGlottalPulse_init (tRosenbergGlottalPulse* const);
+ void tRosenbergGlottalPulse_free (tRosenbergGlottalPulse* const);
+ void tRosenbergGlottalPulse_initToPool (tRosenbergGlottalPulse* const, tMempool* const);
+ void tRosenbergGlottalPulse_freeFromPool (tRosenbergGlottalPulse* const, tMempool* const);
+
+ float tRosenbergGlottalPulse_tick (tRosenbergGlottalPulse* const);
+
+ void tRosenbergGlottalPulse_setFreq (tRosenbergGlottalPulse* const, float freq);
+
+ void tRosenbergGlottalPulse_setOpenLength (tRosenbergGlottalPulse* const, float openLength);
+
+ void tRosenbergGlottalPulse_setPulseLength (tRosenbergGlottalPulse* const, float pulseLength);
+
+ //==============================================================================
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* tSOLAD : pitch shifting algorithm that underlies tRetune etc */
+ // from Katja Vetters http://www.katjaas.nl/pitchshiftlowlatency/pitchshiftlowlatency.html
+#define LOOPSIZE (2048*2) // (4096*2) // loop size must be power of two
+#define LOOPMASK (LOOPSIZE - 1)
+#define PITCHFACTORDEFAULT 1.0f
+#define INITPERIOD 64.0f
+#define MAXPERIOD (float)((LOOPSIZE - w->blocksize) * 0.8f)
+#define MINPERIOD 8.0f
+
+ typedef struct _tSOLAD
+ {
+ uint16_t timeindex; // current reference time, write index
+ uint16_t blocksize; // signal input / output block size
+ float pitchfactor; // pitch factor between 0.25 and 4
+ float readlag; // read pointer's lag behind write pointer
+ float period; // period length in input signal
+ float jump; // read pointer jump length and direction
+ float xfadelength; // crossfade length expressed at input sample rate
+ float xfadevalue; // crossfade phase and value
+
+ float* delaybuf;
+
+ } _tSOLAD;
+
+ typedef _tSOLAD* tSOLAD;
+
+ void tSOLAD_init (tSOLAD* const);
+ void tSOLAD_free (tSOLAD* const);
+ void tSOLAD_initToPool (tSOLAD* const, tMempool* const);
+ void tSOLAD_freeFromPool (tSOLAD* const, tMempool* const);
+
+ // send one block of input samples, receive one block of output samples
+ void tSOLAD_ioSamples (tSOLAD *w, float* in, float* out, int blocksize);
+ // set periodicity analysis data
+ void tSOLAD_setPeriod (tSOLAD *w, float period);
+ // set pitch factor between 0.25 and 4
+ void tSOLAD_setPitchFactor (tSOLAD *w, float pitchfactor);
+ // force readpointer lag
+ void tSOLAD_setReadLag (tSOLAD *w, float readlag);
+ // reset state variables
+ void tSOLAD_resetState (tSOLAD *w);
+
+ // Pitch shift
+ typedef struct _tPitchShift
+ {
+ tSOLAD sola;
+ tHighpass hp;
+ tPeriodDetection* p;
+
+ float* outBuffer;
+ int frameSize;
+ int bufSize;
+
+ int framesPerBuffer;
+ int curBlock;
+ int lastBlock;
+ int index;
+
+ float pitchFactor;
+ float timeConstant;
+ float radius;
+ } _tPitchShift;
+
+ typedef _tPitchShift* tPitchShift;
+
+ void tPitchShift_init (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize);
+ void tPitchShift_free (tPitchShift* const);
+ void tPitchShift_initToPool (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, tMempool* const);
+ void tPitchShift_freeFromPool (tPitchShift* const, tMempool* const);
+
+ float tPitchShift_shift (tPitchShift* const);
+ float tPitchShift_shiftToFunc (tPitchShift* const, float (*fun)(float));
+ float tPitchShift_shiftToFreq (tPitchShift* const, float freq);
+ void tPitchShift_setPitchFactor (tPitchShift* const, float pf);
+
+ // Retune
+ typedef struct _tRetune
+ {
+ tPeriodDetection pd;
+ tPitchShift* ps;
+
+ float* inBuffer;
+ float** outBuffers;
+ float* tickOutput;
+ int frameSize;
+ int bufSize;
+
+ uint16_t hopSize;
+ uint16_t windowSize;
+ uint8_t fba;
+
+ float* pitchFactor;
+ float timeConstant;
+ float radius;
+
+ float inputPeriod;
+
+ int numVoices;
+ } _tRetune;
+
+ typedef _tRetune* tRetune;
+
+ void tRetune_init (tRetune* const, int numVoices, int bufSize, int frameSize);
+ void tRetune_free (tRetune* const);
+ void tRetune_initToPool (tRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
+ void tRetune_freeFromPool (tRetune* const, tMempool* const);
+
+ float* tRetune_tick (tRetune* const, float sample);
+ void tRetune_setNumVoices (tRetune* const, int numVoices);
+ void tRetune_setPitchFactors (tRetune* const, float pf);
+ void tRetune_setPitchFactor (tRetune* const, float pf, int voice);
+ void tRetune_setTimeConstant (tRetune* const, float tc);
+ void tRetune_setHopSize (tRetune* const, int hs);
+ void tRetune_setWindowSize (tRetune* const, int ws);
+ void tRetune_setFidelityThreshold(tRetune* const, float threshold);
+ float tRetune_getInputPeriod (tRetune* const);
+ float tRetune_getInputFreq (tRetune* const);
+
+ // Autotune
+ typedef struct _tAutotune
+ {
+ tPeriodDetection pd;
+ tPitchShift* ps;
+
+ float* inBuffer;
+ float** outBuffers;
+ float* tickOutput;
+ int frameSize;
+ int bufSize;
+
+ uint16_t hopSize;
+ uint16_t windowSize;
+ uint8_t fba;
+
+ float* freq;
+ float timeConstant;
+ float radius;
+
+ float inputPeriod;
+
+ int numVoices;
+ } _tAutotune;
+
+ typedef _tAutotune* tAutotune;
+
+ void tAutotune_init (tAutotune* const, int numVoices, int bufSize, int frameSize);
+ void tAutotune_free (tAutotune* const);
+ void tAutotune_initToPool (tAutotune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
+ void tAutotune_freeFromPool (tAutotune* const, tMempool* const);
+
+ float* tAutotune_tick (tAutotune* const, float sample);
+ void tAutotune_setNumVoices (tAutotune* const, int numVoices);
+ void tAutotune_setFreqs (tAutotune* const, float f);
+ void tAutotune_setFreq (tAutotune* const, float f, int voice);
+ void tAutotune_setTimeConstant (tAutotune* const, float tc);
+ void tAutotune_setHopSize (tAutotune* const, int hs);
+ void tAutotune_setWindowSize (tAutotune* const, int ws);
+ void tAutotune_setFidelityThreshold (tAutotune* const, float threshold);
+ void tAutotune_setAlpha (tAutotune* const, float alpha);
+ void tAutotune_setTolerance (tAutotune* const, float tolerance);
+ float tAutotune_getInputPeriod (tAutotune* const);
+ float tAutotune_getInputFreq (tAutotune* const);
+
+ //==============================================================================
+
+
+ typedef struct _tFormantShifter
+ {
+ int ford;
+ float falph;
+ float flamb;
+ float* fk;
+ float* fb;
+ float* fc;
+ float* frb;
+ float* frc;
+ float* fsig;
+ float* fsmooth;
+ float fhp;
+ float flp;
+ float flpa;
+ float* fbuff;
+ float* ftvec;
+ float fmute;
+ float fmutealph;
+ unsigned int cbi;
+ float shiftFactor;
+ float intensity, invIntensity;
+ tHighpass hp;
+ tHighpass hp2;
+ tFeedbackLeveler fbl1;
+ tFeedbackLeveler fbl2;
+
+ } _tFormantShifter;
+
+ typedef _tFormantShifter* tFormantShifter;
+
+ void tFormantShifter_init (tFormantShifter* const, int order);
+ void tFormantShifter_free (tFormantShifter* const);
+ void tFormantShifter_initToPool (tFormantShifter* const, int order, tMempool* const);
+ void tFormantShifter_freeFromPool (tFormantShifter* const, tMempool* const);
+
+ float tFormantShifter_tick (tFormantShifter* const, float input);
+ float tFormantShifter_remove (tFormantShifter* const, float input);
+ float tFormantShifter_add (tFormantShifter* const, float input);
+ void tFormantShifter_ioSamples (tFormantShifter* const, float* in, float* out, int size, float fwarp);
+ void tFormantShifter_setShiftFactor (tFormantShifter* const, float shiftFactor);
+ void tFormantShifter_setIntensity (tFormantShifter* const, float intensity);
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_EFFECTS_H_INCLUDED
+
+//==============================================================================
--- /dev/null
+++ b/leaf/Inc/leaf-electrical.h
@@ -1,0 +1,103 @@
+/*
+ * leaf-electrical.h
+ *
+ * Created on: Sep 25, 2019
+ * Author: jeffsnyder
+ */
+
+#ifndef LEAF_INC_LEAF_ELECTRICAL_H_
+#define LEAF_INC_LEAF_ELECTRICAL_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ typedef enum WDFComponentType
+ {
+ SeriesAdaptor = 0,
+ ParallelAdaptor,
+ Resistor,
+ Capacitor,
+ Inductor,
+ Inverter,
+ ResistiveSource,
+ IdealSource,
+ Diode,
+ DiodePair,
+ RootNil,
+ WDFComponentNil
+ } WDFComponentType;
+
+ typedef struct _tWDF _tWDF; // needed to allow tWDF pointers in struct
+ typedef _tWDF* tWDF;
+ struct _tWDF
+ {
+ WDFComponentType type;
+ float port_resistance_up;
+ float port_resistance_left;
+ float port_resistance_right;
+ float port_conductance_up;
+ float port_conductance_left;
+ float port_conductance_right;
+ float incident_wave_up;
+ float incident_wave_left;
+ float incident_wave_right;
+ float reflected_wave_up;
+ float reflected_wave_left;
+ float reflected_wave_right;
+ float gamma_zero;
+ float sample_rate;
+ float value;
+ tWDF* child_left;
+ tWDF* child_right;
+ float (*get_port_resistance)(tWDF* const);
+ float (*get_reflected_wave_up)(tWDF* const, float);
+ float (*get_reflected_wave_down)(tWDF* const, float, float);
+ void (*set_incident_wave)(tWDF* const, float, float);
+ };
+
+ //WDF Linear Components
+ void tWDF_init (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR);
+ void tWDF_free (tWDF* const);
+ void tWDF_initToPool (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, tMempool* const);
+ void tWDF_freeFromPool (tWDF* const, tMempool* const);
+
+ float tWDF_tick (tWDF* const, float sample, tWDF* const outputPoint, uint8_t paramsChanged);
+
+ void tWDF_setValue (tWDF* const, float value);
+ void tWDF_setSampleRate (tWDF* const, float sample_rate);
+ uint8_t tWDF_isLeaf (tWDF* const);
+
+ float tWDF_getPortResistance (tWDF* const);
+ float tWDF_getReflectedWaveUp (tWDF* const, float input); //for tree, only uses input for resistive source
+ float tWDF_getReflectedWaveDown (tWDF* const, float input, float incident_wave); //for roots
+ void tWDF_setIncidentWave (tWDF* const, float incident_wave, float input);
+
+ float tWDF_getVoltage (tWDF* const);
+ float tWDF_getCurrent (tWDF* const);
+
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LEAF_INC_LEAF_ELECTRICAL_H_ */
+
--- /dev/null
+++ b/leaf/Inc/leaf-envelopes.h
@@ -1,0 +1,366 @@
+/*
+ ==============================================================================
+
+ leaf-envelopes.h
+ Created: 20 Jan 2017 12:02:17pm
+ Author: Michael R Mulshine
+
+ ==============================================================================
+ */
+
+#ifndef LEAF_ENVELOPES_H_INCLUDED
+#define LEAF_ENVELOPES_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-filters.h"
+#include "leaf-delay.h"
+#include "leaf-analysis.h"
+#include "leaf-envelopes.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Attack-Decay envelope */
+ typedef struct _tEnvelope {
+
+ const float *exp_buff;
+ const float *inc_buff;
+ uint32_t buff_size;
+
+ float next;
+
+ float attackInc, decayInc, rampInc;
+
+ int inAttack, inDecay, inRamp;
+
+ int loop;
+
+ float gain, rampPeak;
+
+ float attackPhase, decayPhase, rampPhase;
+
+ } _tEnvelope;
+
+ typedef _tEnvelope* tEnvelope;
+
+ void tEnvelope_init (tEnvelope* const, float attack, float decay, int loop);
+ void tEnvelope_free (tEnvelope* const);
+ void tEnvelope_initToPool (tEnvelope* const, float attack, float decay, int loop, tMempool* const);
+ void tEnvelope_freeFromPool (tEnvelope* const, tMempool* const);
+
+ float tEnvelope_tick (tEnvelope* const);
+ void tEnvelope_setAttack (tEnvelope* const, float attack);
+ void tEnvelope_setDecay (tEnvelope* const, float decay);
+ void tEnvelope_loop (tEnvelope* const, int loop);
+ void tEnvelope_on (tEnvelope* const, float velocity);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+
+
+ /* Exponential Smoother */
+ typedef struct _tExpSmooth {
+ float factor, oneminusfactor;
+ float curr,dest;
+
+ } _tExpSmooth;
+
+ typedef _tExpSmooth* tExpSmooth;
+
+ void tExpSmooth_init (tExpSmooth* const, float val, float factor);
+ void tExpSmooth_free (tExpSmooth* const);
+ void tExpSmooth_initToPool (tExpSmooth* const, float val, float factor, tMempool* const);
+ void tExpSmooth_freeFromPool (tExpSmooth* const, tMempool* const);
+
+ float tExpSmooth_tick (tExpSmooth* const);
+ float tExpSmooth_sample (tExpSmooth* const);
+ void tExpSmooth_setFactor (tExpSmooth* const, float factor);
+ void tExpSmooth_setDest (tExpSmooth* const, float dest);
+ void tExpSmooth_setVal (tExpSmooth* const, float val);
+ void tExpSmooth_setValAndDest(tExpSmooth* const expsmooth, float val);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+
+ /* ADSR */
+ typedef struct _tADSR
+ {
+ const float *exp_buff;
+ const float *inc_buff;
+ uint32_t buff_size;
+
+ float next;
+
+ float attackInc, decayInc, releaseInc, rampInc;
+
+ oBool inAttack, inDecay, inSustain, inRelease, inRamp;
+
+ float sustain, gain, rampPeak, releasePeak;
+
+ float attackPhase, decayPhase, releasePhase, rampPhase;
+
+ float leakFactor;
+
+
+ } _tADSR;
+
+ typedef _tADSR* tADSR;
+
+ void tADSR_init (tADSR* const adsrenv, float attack, float decay, float sustain, float release);
+ void tADSR_free (tADSR* const);
+ void tADSR_initToPool (tADSR* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp);
+ void tADSR_freeFromPool (tADSR* const, tMempool* const);
+
+ float tADSR_tick (tADSR* const);
+ void tADSR_setAttack (tADSR* const, float attack);
+ void tADSR_setDecay (tADSR* const, float decay);
+ void tADSR_setSustain (tADSR* const, float sustain);
+ void tADSR_setRelease (tADSR* const, float release);
+ void tADSR_setLeakFactor (tADSR* const, float leakFactor);
+ void tADSR_on (tADSR* const, float velocity);
+ void tADSR_off (tADSR* const);
+
+
+
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+
+
+ /* ADSR2 */
+ typedef struct _tADSR2
+ {
+ float sampleRateInMs;
+ float attack;
+ float decay;
+ float release;
+ float attackLambda;
+ float decayLambda;
+ float releaseLambda;
+ float sustain;
+ float leakGain;
+ float leakFactor;
+ float targetGainSquared;
+ float factor;
+ float oneMinusFactor;
+ float gain;
+ uint8_t attacking;
+ uint8_t gate;
+ float env;
+ float envTarget;
+ } _tADSR2;
+
+ typedef _tADSR2* tADSR2;
+
+ void tADSR2_init (tADSR2* const, float attack, float decay, float sustain, float release);
+ void tADSR2_free (tADSR2* const);
+ void tADSR2_initToPool (tADSR2* const, float attack, float decay, float sustain, float release, tMempool* const);
+ void tADSR2_freeFromPool (tADSR2* const, tMempool* const);
+
+ float tADSR2_tick (tADSR2* const);
+ void tADSR2_setAttack (tADSR2* const, float attack);
+ void tADSR2_setDecay (tADSR2* const, float decay);
+ void tADSR2_setSustain (tADSR2* const, float sustain);
+ void tADSR2_setRelease (tADSR2* const, float release);
+ void tADSR2_setLeakFactor (tADSR2* const, float leakFactor);
+ void tADSR2_on (tADSR2* const, float velocity);
+ void tADSR2_off (tADSR2* const);
+
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+ enum envState {
+ env_idle = 0,
+ env_attack,
+ env_decay,
+ env_sustain,
+ env_release,
+ env_ramp
+ };
+
+ /* ADSR3 */
+ typedef struct _tADSR3
+ {
+ float sampleRateInMs;
+ int state;
+ float output;
+ float attackRate;
+ float decayRate;
+ float releaseRate;
+ float attackCoef;
+ float decayCoef;
+ float releaseCoef;
+ float sustainLevel;
+ float targetRatioA;
+ float targetRatioDR;
+ float attackBase;
+ float decayBase;
+ float releaseBase;
+ float leakFactor;
+ float targetGainSquared;
+ float factor;
+ float oneMinusFactor;
+ float gain;
+
+ } _tADSR3;
+
+ typedef _tADSR3* tADSR3;
+
+ void tADSR3_init (tADSR3* const, float attack, float decay, float sustain, float release);
+ void tADSR3_free (tADSR3* const);
+ void tADSR3_initToPool (tADSR3* const, float attack, float decay, float sustain, float release, tMempool* const);
+ void tADSR3_freeFromPool (tADSR3* const, tMempool* const);
+
+ float tADSR3_tick (tADSR3* const);
+ void tADSR3_setAttack (tADSR3* const, float attack);
+ void tADSR3_setDecay (tADSR3* const, float decay);
+ void tADSR3_setSustain (tADSR3* const, float sustain);
+ void tADSR3_setRelease (tADSR3* const, float release);
+ void tADSR3_setLeakFactor (tADSR3* const, float leakFactor);
+ void tADSR3_on (tADSR3* const, float velocity);
+ void tADSR3_off (tADSR3* const);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ //ADSR4
+
+
+ typedef struct _tADSR4
+ {
+ const float *exp_buff;
+ uint32_t buff_size;
+ uint32_t buff_sizeMinusOne;
+ float bufferSizeDividedBySampleRateInMs;
+ float next;
+
+ float attackInc, decayInc, releaseInc, rampInc;
+
+ uint32_t whichStage;
+
+ float sustain, gain, rampPeak, releasePeak;
+
+ float attackPhase, decayPhase, releasePhase, rampPhase;
+
+ float leakFactor;
+
+
+ } _tADSR4;
+
+ typedef _tADSR4* tADSR4;
+
+ void tADSR4_init (tADSR4* const, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize);
+ void tADSR4_free (tADSR4* const);
+ void tADSR4_initToPool (tADSR4* const, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize, tMempool* const);
+ void tADSR4_freeFromPool (tADSR4* const, tMempool* const);
+
+ float tADSR4_tick (tADSR4* const);
+ float tADSR4_tickNoInterp (tADSR4* const adsrenv);
+ void tADSR4_setAttack (tADSR4* const, float attack);
+ void tADSR4_setDecay (tADSR4* const, float decay);
+ void tADSR4_setSustain (tADSR4* const, float sustain);
+ void tADSR4_setRelease (tADSR4* const, float release);
+ void tADSR4_setLeakFactor (tADSR4* const, float leakFactor);
+ void tADSR4_on (tADSR4* const, float velocity);
+ void tADSR4_off (tADSR4* const);
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Ramp */
+ typedef struct _tRamp {
+ float inc;
+ float inv_sr_ms;
+ float minimum_time;
+ float curr,dest;
+ float time;
+ float factor;
+ int samples_per_tick;
+
+ } _tRamp;
+
+ typedef _tRamp* tRamp;
+
+ void tRamp_init (tRamp* const, float time, int samplesPerTick);
+ void tRamp_free (tRamp* const);
+ void tRamp_initToPool (tRamp* const, float time, int samplesPerTick, tMempool* const);
+ void tRamp_freeFromPool (tRamp* const, tMempool* const);
+
+ float tRamp_tick (tRamp* const);
+ float tRamp_sample (tRamp* const);
+ void tRamp_setTime (tRamp* const, float time);
+ void tRamp_setDest (tRamp* const, float dest);
+ void tRamp_setVal (tRamp* const, float val);
+
+ ///=============
+ /* Ramp Updown*/
+ typedef struct _tRampUpDown {
+ float upInc;
+ float downInc;
+ float inv_sr_ms;
+ float minimum_time;
+ float curr,dest;
+ float upTime;
+ float downTime;
+ int samples_per_tick;
+
+ } _tRampUpDown;
+
+ typedef _tRampUpDown* tRampUpDown;
+
+ void tRampUpDown_init (tRampUpDown* const, float upTime, float downTime, int samplesPerTick);
+ void tRampUpDown_free (tRampUpDown* const);
+ void tRampUpDown_initToPool (tRampUpDown* const, float upTime, float downTime, int samplesPerTick, tMempool* const);
+ void tRampUpDown_freeFromPool (tRampUpDown* const, tMempool* const);
+
+ float tRampUpDown_tick (tRampUpDown* const);
+ float tRampUpDown_sample (tRampUpDown* const);
+ void tRampUpDown_setUpTime (tRampUpDown* const, float upTime);
+ void tRampUpDown_setDownTime (tRampUpDown* const, float downTime);
+ void tRampUpDown_setDest (tRampUpDown* const, float dest);
+ void tRampUpDown_setVal (tRampUpDown* const, float val);
+
+
+ ///=========================
+ //Slide (based on Max/MSP's slide~)
+ typedef struct _tSlide {
+ float prevOut;
+ float currentOut;
+ float prevIn;
+ float invUpSlide;
+ float invDownSlide;
+
+ } _tSlide;
+
+ typedef _tSlide* tSlide;
+
+ void tSlide_init (tSlide* const, float upSlide, float downSlide);
+ void tSlide_free (tSlide* const);
+ void tSlide_initToPool (tSlide* const, float upSlide, float downSlide, tMempool* const);
+ void tSlide_freeFromPool (tSlide* const, tMempool* const);
+
+ float tSlide_tick (tSlide* const, float in);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_ENVELOPES_H_INCLUDED
+
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-filters.h
@@ -1,0 +1,486 @@
+/*==============================================================================
+
+ leaf-filters.h
+ Created: 20 Jan 2017 12:01:10pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#ifndef LEAF_FILTERS_H_INCLUDED
+#define LEAF_FILTERS_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-delay.h"
+#include "leaf-tables.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */
+ typedef struct _tAllpass
+ {
+ float gain;
+
+ tLinearDelay delay;
+
+ float lastOut;
+
+ } _tAllpass;
+
+ typedef _tAllpass* tAllpass;
+
+ void tAllpass_init (tAllpass* const, float initDelay, uint32_t maxDelay);
+ void tAllpass_free (tAllpass* const);
+ void tAllpass_initToPool (tAllpass* const, float initDelay, uint32_t maxDelay, tMempool* const);
+ void tAllpass_freeFromPool (tAllpass* const, tMempool* const);
+
+ float tAllpass_tick (tAllpass* const, float input);
+ void tAllpass_setGain (tAllpass* const, float gain);
+ void tAllpass_setDelay (tAllpass* const, float delay);
+
+
+ //==============================================================================
+
+ /* tOnePole: OnePole filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tOnePole
+ {
+ float gain;
+ float a0,a1;
+ float b0,b1;
+ float lastIn, lastOut;
+
+
+ } _tOnePole;
+
+ typedef _tOnePole* tOnePole;
+
+ void tOnePole_init (tOnePole* const, float thePole);
+ void tOnePole_free (tOnePole* const);
+ void tOnePole_initToPool (tOnePole* const, float thePole, tMempool* const);
+ void tOnePole_freeFromPool (tOnePole* const, tMempool* const);
+
+ float tOnePole_tick (tOnePole* const, float input);
+ void tOnePole_setB0 (tOnePole* const, float b0);
+ void tOnePole_setA1 (tOnePole* const, float a1);
+ void tOnePole_setPole (tOnePole* const, float thePole);
+ void tOnePole_setFreq (tOnePole* const, float freq);
+ void tOnePole_setCoefficients(tOnePole* const, float b0, float a1);
+ void tOnePole_setGain (tOnePole* const, float gain);
+
+ //==============================================================================
+
+ /* TwoPole filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tTwoPole
+ {
+ float gain;
+ float a0, a1, a2;
+ float b0;
+
+ float radius, frequency;
+ oBool normalize;
+
+ float lastOut[2];
+
+ } _tTwoPole;
+
+ typedef _tTwoPole* tTwoPole;
+
+ void tTwoPole_init (tTwoPole* const);
+ void tTwoPole_free (tTwoPole* const);
+ void tTwoPole_initToPool (tTwoPole* const, tMempool* const);
+ void tTwoPole_freeFromPool (tTwoPole* const, tMempool* const);
+
+ float tTwoPole_tick (tTwoPole* const, float input);
+ void tTwoPole_setB0 (tTwoPole* const, float b0);
+ void tTwoPole_setA1 (tTwoPole* const, float a1);
+ void tTwoPole_setA2 (tTwoPole* const, float a2);
+ void tTwoPole_setResonance (tTwoPole* const, float freq, float radius, oBool normalize);
+ void tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2);
+ void tTwoPole_setGain (tTwoPole* const, float gain);
+
+ //==============================================================================
+
+ /* OneZero filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tOneZero
+ {
+ float gain;
+ float b0,b1;
+ float lastIn, lastOut, frequency;
+
+ } _tOneZero;
+
+ typedef _tOneZero* tOneZero;
+
+ void tOneZero_init (tOneZero* const, float theZero);
+ void tOneZero_free (tOneZero* const);
+ void tOneZero_initToPool (tOneZero* const, float theZero, tMempool* const);
+ void tOneZero_freeFromPool (tOneZero* const, tMempool* const);
+
+ float tOneZero_tick (tOneZero* const, float input);
+ void tOneZero_setB0 (tOneZero* const, float b0);
+ void tOneZero_setB1 (tOneZero* const, float b1);
+ void tOneZero_setZero (tOneZero* const, float theZero);
+ void tOneZero_setCoefficients(tOneZero* const, float b0, float b1);
+ void tOneZero_setGain (tOneZero* const, float gain);
+ float tOneZero_getPhaseDelay (tOneZero *f, float frequency );
+
+ //==============================================================================
+
+ /* TwoZero filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tTwoZero
+ {
+ float gain;
+ float b0, b1, b2;
+
+ float frequency, radius;
+
+ float lastIn[2];
+
+ } _tTwoZero;
+
+ typedef _tTwoZero* tTwoZero;
+
+ void tTwoZero_init (tTwoZero* const);
+ void tTwoZero_free (tTwoZero* const);
+ void tTwoZero_initToPool (tTwoZero* const, tMempool* const);
+ void tTwoZero_freeFromPool (tTwoZero* const, tMempool* const);
+
+ float tTwoZero_tick (tTwoZero* const, float input);
+ void tTwoZero_setB0 (tTwoZero* const, float b0);
+ void tTwoZero_setB1 (tTwoZero* const, float b1);
+ void tTwoZero_setB2 (tTwoZero* const, float b2);
+ void tTwoZero_setNotch (tTwoZero* const, float frequency, float radius);
+ void tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2);
+ void tTwoZero_setGain (tTwoZero* const, float gain);
+
+ //==============================================================================
+
+ /* PoleZero filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tPoleZero
+ {
+ float gain;
+ float a0,a1;
+ float b0,b1;
+
+ float lastIn, lastOut;
+
+ } _tPoleZero;
+
+ typedef _tPoleZero* tPoleZero;
+
+ void tPoleZero_init (tPoleZero* const);
+ void tPoleZero_free (tPoleZero* const);
+ void tPoleZero_initToPool (tPoleZero* const, tMempool* const);
+ void tPoleZero_freeFromPool (tPoleZero* const, tMempool* const);
+
+ float tPoleZero_tick (tPoleZero* const, float input);
+ void tPoleZero_setB0 (tPoleZero* const, float b0);
+ void tPoleZero_setB1 (tPoleZero* const, float b1);
+ void tPoleZero_setA1 (tPoleZero* const, float a1);
+ void tPoleZero_setCoefficients (tPoleZero* const, float b0, float b1, float a1);
+ void tPoleZero_setAllpass (tPoleZero* const, float coeff);
+ void tPoleZero_setBlockZero (tPoleZero* const, float thePole);
+ void tPoleZero_setGain (tPoleZero* const, float gain);
+
+ //==============================================================================
+
+ /* BiQuad filter, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tBiQuad
+ {
+ float gain;
+ float a0, a1, a2;
+ float b0, b1, b2;
+
+ float lastIn[2];
+ float lastOut[2];
+
+ float frequency, radius;
+ oBool normalize;
+ } _tBiQuad;
+
+ typedef _tBiQuad* tBiQuad;
+
+ void tBiQuad_init (tBiQuad* const);
+ void tBiQuad_free (tBiQuad* const);
+ void tBiQuad_initToPool (tBiQuad* const, tMempool* const);
+ void tBiQuad_freeFromPool (tBiQuad* const, tMempool* const);
+
+ float tBiQuad_tick (tBiQuad* const, float input);
+ void tBiQuad_setB0 (tBiQuad* const, float b0);
+ void tBiQuad_setB1 (tBiQuad* const, float b1);
+ void tBiQuad_setB2 (tBiQuad* const, float b2);
+ void tBiQuad_setA1 (tBiQuad* const, float a1);
+ void tBiQuad_setA2 (tBiQuad* const, float a2);
+ void tBiQuad_setNotch (tBiQuad* const, float freq, float radius);
+ void tBiQuad_setResonance (tBiQuad* const, float freq, float radius, oBool normalize);
+ void tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2);
+ void tBiQuad_setGain (tBiQuad* const, float gain);
+
+ //==============================================================================
+
+/* State Variable Filter, algorithm from Andy Simper. */
+ typedef enum SVFType
+ {
+ SVFTypeHighpass = 0,
+ SVFTypeLowpass,
+ SVFTypeBandpass,
+ SVFTypeNotch,
+ SVFTypePeak,
+ SVFTypeLowShelf,
+ SVFTypeHighShelf
+ } SVFType;
+
+ typedef struct _tSVF
+ {
+ SVFType type;
+ float cutoff, Q;
+ float ic1eq,ic2eq;
+ float g,k,a1,a2,a3,cH,cB,cL,cBK;
+
+
+ } _tSVF;
+
+ typedef _tSVF* tSVF;
+
+ void tSVF_init (tSVF* const, SVFType type, float freq, float Q);
+ void tSVF_free (tSVF* const);
+ void tSVF_initToPool (tSVF* const, SVFType type, float freq, float Q, tMempool* const);
+ void tSVF_freeFromPool (tSVF* const, tMempool* const);
+
+ float tSVF_tick (tSVF* const, float v0);
+ void tSVF_setFreq (tSVF* const, float freq);
+ void tSVF_setQ (tSVF* const, float Q);
+ void tSVF_setFreqAndQ (tSVF* const svff, float freq, float Q);
+ //==============================================================================
+
+ /* Efficient State Variable Filter for 14-bit control input, [0, 4096). */
+ typedef struct _tEfficientSVF
+ {
+ SVFType type;
+ float cutoff, Q;
+ float ic1eq,ic2eq;
+ float g,k,a1,a2,a3;
+
+ } _tEfficientSVF;
+
+ typedef _tEfficientSVF* tEfficientSVF;
+
+ void tEfficientSVF_init (tEfficientSVF* const, SVFType type, uint16_t input, float Q);
+ void tEfficientSVF_free (tEfficientSVF* const);
+ void tEfficientSVF_initToPool (tEfficientSVF* const, SVFType type, uint16_t input, float Q, tMempool* const);
+ void tEfficientSVF_freeFromPool (tEfficientSVF* const, tMempool* const);
+
+ float tEfficientSVF_tick (tEfficientSVF* const, float v0);
+ void tEfficientSVF_setFreq (tEfficientSVF* const, uint16_t controlFreq);
+ void tEfficientSVF_setQ (tEfficientSVF* const, float Q);
+
+ //==============================================================================
+
+ /* Simple Highpass filter. */
+ typedef struct _tHighpass
+ {
+ float xs, ys, R;
+ float frequency;
+
+ } _tHighpass;
+
+ typedef _tHighpass* tHighpass;
+
+ void tHighpass_init (tHighpass* const, float freq);
+ void tHighpass_free (tHighpass* const);
+ void tHighpass_initToPool (tHighpass* const, float freq, tMempool* const);
+ void tHighpass_freeFromPool (tHighpass* const, tMempool* const);
+
+ float tHighpass_tick (tHighpass* const, float x);
+ void tHighpass_setFreq (tHighpass* const, float freq);
+ float tHighpass_getFreq (tHighpass* const);
+
+ //==============================================================================
+
+ // Butterworth Filter
+#define NUM_SVF_BW 16
+ typedef struct _tButterworth
+ {
+ float gain;
+
+ int N;
+
+ tSVF low[NUM_SVF_BW];
+ tSVF high[NUM_SVF_BW];
+
+ float f1,f2;
+
+ } _tButterworth;
+
+ typedef _tButterworth* tButterworth;
+
+ void tButterworth_init (tButterworth* const, int N, float f1, float f2);
+ void tButterworth_free (tButterworth* const);
+ void tButterworth_initToPool (tButterworth* const, int N, float f1, float f2, tMempool* const);
+ void tButterworth_freeFromPool (tButterworth* const, tMempool* const);
+
+ float tButterworth_tick (tButterworth* const, float input);
+ void tButterworth_setF1 (tButterworth* const, float in);
+ void tButterworth_setF2 (tButterworth* const, float in);
+ void tButterworth_setFreqs (tButterworth* const, float f1, float f2);
+
+ //==============================================================================
+
+ typedef struct _tFIR
+ {
+ float* past;
+ float* coeff;
+ int numTaps;
+ } _tFIR;
+
+ typedef _tFIR* tFIR;
+
+ void tFIR_init (tFIR* const, float* coeffs, int numTaps);
+ void tFIR_free (tFIR* const);
+ void tFIR_initToPool (tFIR* const, float* coeffs, int numTaps, tMempool* const);
+ void tFIR_freeFromPool (tFIR* const, tMempool* const);
+
+ float tFIR_tick (tFIR* const, float input);
+
+
+ //==============================================================================
+
+
+ typedef struct _tMedianFilter
+ {
+ float* val;
+ int* age;
+ int m;
+ int size;
+ int middlePosition;
+ int last;
+ int pos;
+ } _tMedianFilter;
+
+ typedef _tMedianFilter* tMedianFilter;
+
+ void tMedianFilter_init (tMedianFilter* const, int size);
+ void tMedianFilter_free (tMedianFilter* const);
+ void tMedianFilter_initToPool (tMedianFilter* const, int size, tMempool* const);
+ void tMedianFilter_freeFromPool (tMedianFilter* const, tMempool* const);
+
+ float tMedianFilter_tick (tMedianFilter* const, float input);
+
+
+
+
+
+ //Vadim Zavalishin style from VA book (from implementation in RSlib posted to kvr forum)
+
+ typedef enum VZFilterType
+ {
+ Highpass = 0,
+ Lowpass,
+ BandpassSkirt,
+ BandpassPeak,
+ BandReject,
+ Bell,
+ Lowshelf,
+ Highshelf,
+ Morph,
+ Bypass,
+ Allpass
+ } VZFilterType;
+
+
+ typedef struct _tVZFilter
+ {
+ VZFilterType type;
+ // state:
+ float s1, s2;
+
+ // filter coefficients:
+ float g; // embedded integrator gain
+ float R2; // twice the damping coefficient (R2 == 2*R == 1/Q)
+ float h; // factor for feedback (== 1/(1+2*R*g+g*g))
+ float cL, cB, cH; // coefficients for low-, band-, and highpass signals
+
+ // parameters:
+ float fs; // sample-rate
+ float fc; // characteristic frequency
+ float G; // gain
+ float invG; //1/gain
+ float B; // bandwidth (in octaves)
+ float m; // morph parameter (0...1)
+
+ float sr; //local sampling rate of filter (may be different from leaf sr if oversampled)
+ float inv_sr;
+
+ } _tVZFilter;
+
+ typedef _tVZFilter* tVZFilter;
+
+ void tVZFilter_init (tVZFilter* const, VZFilterType type, float freq, float Q);
+ void tVZFilter_free (tVZFilter* const);
+ void tVZFilter_initToPool (tVZFilter* const, VZFilterType type, float freq, float Q, tMempool* const);
+ void tVZFilter_freeFromPool (tVZFilter* const, tMempool* const);
+ void tVZFilter_setSampleRate (tVZFilter* const, float sampleRate);
+ float tVZFilter_tick (tVZFilter* const, float input);
+ float tVZFilter_tickEfficient (tVZFilter* const vf, float in);
+ void tVZFilter_calcCoeffs (tVZFilter* const);
+ void tVZFilter_setBandwidth (tVZFilter* const, float bandWidth);
+ void tVZFilter_setFreq (tVZFilter* const, float freq);
+ void tVZFilter_setFreqAndBandwidth (tVZFilter* const vf, float freq, float bw);
+ void tVZFilter_setGain (tVZFilter* const, float gain);
+ void tVZFilter_setType (tVZFilter* const, VZFilterType type);
+ float tVZFilter_BandwidthToR (tVZFilter* const vf, float B);
+
+
+
+
+ //diode ladder filter
+ typedef struct _tDiodeFilter
+ {
+
+ float f;
+ float r;
+ float Vt;
+ float n;
+ float gamma;
+ float zi;
+ float g0inv;
+ float g1inv;
+ float g2inv;
+ float s0, s1, s2, s3;
+
+ } _tDiodeFilter;
+
+ typedef _tDiodeFilter* tDiodeFilter;
+
+ void tDiodeFilter_init (tDiodeFilter* const, float freq, float Q);
+ void tDiodeFilter_free (tDiodeFilter* const);
+ void tDiodeFilter_initToPool (tDiodeFilter* const, float freq, float Q, tMempool* const);
+ void tDiodeFilter_freeFromPool (tDiodeFilter* const, tMempool* const);
+
+ float tDiodeFilter_tick (tDiodeFilter* const, float input);
+ void tDiodeFilter_setFreq (tDiodeFilter* const vf, float cutoff);
+ void tDiodeFilter_setQ (tDiodeFilter* const vf, float resonance);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_FILTERS_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-global.h
@@ -1,0 +1,52 @@
+/*
+ ==============================================================================
+
+ leaf-global.h
+ Created: 24 Oct 2019 2:24:38pm
+ Author: Matthew Wang
+
+ ==============================================================================
+ */
+
+#ifndef LEAF_GLOBAL_H_INCLUDED
+#define LEAF_GLOBAL_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "leaf-mempool.h"
+
+ /*!
+ * @ingroup leaf
+ * @brief The struct of the global LEAF instance `leaf`. Contains global variables and settings.
+ */
+ struct LEAF
+ {
+ ///@{
+ float sampleRate; //!< The current audio sample rate. Set with LEAF_setSampleRate().
+ float invSampleRate; //!< The inverse of the current sample rate.
+ int blockSize; //!< The audio block size.
+ float twoPiTimesInvSampleRate; //!< Two-pi times the inverse of the current sample rate.
+ float (*random)(void); //!< A pointer to the random() function provided on initialization.
+ int clearOnAllocation; //!< A flag that determines whether memory allocated from the LEAF memory pool will be cleared.
+ tMempool mempool; //!< The default LEAF mempool object.
+ _tMempool _mempool;
+ size_t header_size; //!< The size in bytes of memory region headers within mempools.
+ ///@}
+ };
+ typedef struct LEAF LEAF;
+
+ extern LEAF leaf;
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_GLOBAL_H_INCLUDED
+
+//==============================================================================
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-instruments.h
@@ -1,0 +1,209 @@
+/*==============================================================================
+
+ leaf-instruments.h
+ Created: 30 Nov 2018 10:24:44am
+ Author: airship
+
+ ==============================================================================*/
+
+#ifndef LEAF_INSTRUMENTS_H_INCLUDED
+#define LEAF_INSTRUMENTS_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-oscillators.h"
+#include "leaf-filters.h"
+#include "leaf-envelopes.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ // 808 Cowbell
+ typedef struct _t808Cowbell {
+
+ tSquare p[2];
+ tNoise stick;
+ tSVF bandpassOsc;
+ tSVF bandpassStick;
+ tEnvelope envGain;
+ tEnvelope envStick;
+ tEnvelope envFilter;
+ tHighpass highpass;
+ float oscMix;
+ float filterCutoff;
+ uint8_t useStick;
+
+ } _t808Cowbell;
+
+ typedef _t808Cowbell* t808Cowbell;
+
+ void t808Cowbell_init (t808Cowbell* const, int useStick);
+ void t808Cowbell_free (t808Cowbell* const);
+ void t808Cowbell_initToPool (t808Cowbell* const, int useStick, tMempool* const);
+ void t808Cowbell_freeFromPool (t808Cowbell* const, tMempool* const);
+
+ float t808Cowbell_tick (t808Cowbell* const);
+ void t808Cowbell_on (t808Cowbell* const, float vel);
+ void t808Cowbell_setDecay (t808Cowbell* const, float decay);
+ void t808Cowbell_setHighpassFreq (t808Cowbell* const, float freq);
+ void t808Cowbell_setBandpassFreq (t808Cowbell* const, float freq);
+ void t808Cowbell_setFreq (t808Cowbell* const, float freq);
+ void t808Cowbell_setOscMix (t808Cowbell* const, float oscMix);
+ void t808Cowbell_setStick (t808Cowbell* const, int useStick);
+
+ //==============================================================================
+
+ // 808 Hihat
+ typedef struct _t808Hihat {
+
+ // 6 Square waves
+ tSquare p[6];
+ tNoise n;
+ tSVF bandpassOsc;
+ tSVF bandpassStick;
+ tEnvelope envGain;
+ tEnvelope envStick;
+ tEnvelope noiseFMGain;
+ tHighpass highpass;
+ tNoise stick;
+
+ float freq;
+ float stretch;
+ float FM_amount;
+ float oscNoiseMix;
+
+ } _t808Hihat;
+
+ typedef _t808Hihat* t808Hihat;
+
+ void t808Hihat_init (t808Hihat* const);
+ void t808Hihat_free (t808Hihat* const);
+ void t808Hihat_initToPool (t808Hihat* const, tMempool* const);
+ void t808Hihat_freeFromPool (t808Hihat* const, tMempool* const);
+
+ float t808Hihat_tick (t808Hihat* const);
+ void t808Hihat_on (t808Hihat* const, float vel);
+ void t808Hihat_setOscNoiseMix (t808Hihat* const, float oscNoiseMix);
+ void t808Hihat_setDecay (t808Hihat* const, float decay);
+ void t808Hihat_setHighpassFreq (t808Hihat* const, float freq);
+ void t808Hihat_setOscBandpassFreq (t808Hihat* const, float freq);
+ void t808Hihat_setOscBandpassQ (t808Hihat* const hihat, float Q);
+ void t808Hihat_setStickBandPassFreq (t808Hihat* const, float freq);
+ void t808Hihat_setStickBandPassQ (t808Hihat* const hihat, float Q);
+ void t808Hihat_setOscFreq (t808Hihat* const, float freq);
+ void t808Hihat_setStretch (t808Hihat* const hihat, float stretch);
+ void t808Hihat_setFM (t808Hihat* const hihat, float FM_amount);
+
+ //==============================================================================
+
+ // 808 Snare
+ typedef struct _t808Snare {
+
+ // Tone 1, Tone 2, Noise
+ tTriangle tone[2]; // Tri (not yet antialiased or wavetabled)
+ tNoise noiseOsc;
+ tSVF toneLowpass[2];
+ tSVF noiseLowpass; // Lowpass from SVF filter
+ tEnvelope toneEnvOsc[2];
+ tEnvelope toneEnvGain[2];
+ tEnvelope noiseEnvGain;
+ tEnvelope toneEnvFilter[2];
+ tEnvelope noiseEnvFilter;
+
+ float toneGain[2];
+ float noiseGain;
+
+ float toneNoiseMix;
+
+ float tone1Freq, tone2Freq;
+
+ float noiseFilterFreq;
+
+ } _t808Snare;
+
+ typedef _t808Snare* t808Snare;
+
+ void t808Snare_init (t808Snare* const);
+ void t808Snare_free (t808Snare* const);
+ void t808Snare_initToPool (t808Snare* const, tMempool* const);
+ void t808Snare_freeFromPool (t808Snare* const, tMempool* const);
+
+ float t808Snare_tick (t808Snare* const);
+ void t808Snare_on (t808Snare* const, float vel);
+ void t808Snare_setTone1Freq (t808Snare* const, float freq);
+ void t808Snare_setTone2Freq (t808Snare* const, float freq);
+ void t808Snare_setTone1Decay (t808Snare* const, float decay);
+ void t808Snare_setTone2Decay (t808Snare* const, float decay);
+ void t808Snare_setNoiseDecay (t808Snare* const, float decay);
+ void t808Snare_setToneNoiseMix (t808Snare* const, float toneNoiseMix);
+ void t808Snare_setNoiseFilterFreq (t808Snare* const, float noiseFilterFreq);
+ void t808Snare_setNoiseFilterQ (t808Snare* const, float noiseFilterQ);
+
+ //==============================================================================
+
+ // 808 Kick
+ typedef struct _t808Kick {
+
+
+ tCycle tone; // Tri
+ tNoise noiseOsc;
+ tSVF toneLowpass;
+ tEnvelope toneEnvOscChirp;
+ tEnvelope toneEnvOscSigh;
+ tEnvelope toneEnvGain;
+ tEnvelope noiseEnvGain;
+ tEnvelope toneEnvFilter;
+
+ float toneGain;
+ float noiseGain;
+
+ float toneInitialFreq;
+ float sighAmountInHz;
+ float chirpRatioMinusOne;
+ float noiseFilterFreq;
+
+ } _t808Kick;
+
+ typedef _t808Kick* t808Kick;
+
+ void t808Kick_init (t808Kick* const);
+ void t808Kick_free (t808Kick* const);
+ void t808Kick_initToPool (t808Kick* const, tMempool* const);
+ void t808Kick_freeFromPool (t808Kick* const, tMempool* const);
+
+ float t808Kick_tick (t808Kick* const);
+ void t808Kick_on (t808Kick* const, float vel);
+ void t808Kick_setToneFreq (t808Kick* const, float freq);
+ void t808Kick_setToneDecay (t808Kick* const, float decay);
+ void t808Kick_setNoiseDecay (t808Kick* const, float decay);
+ void t808Kick_setSighAmount (t808Kick* const, float sigh);
+ void t808Kick_setChirpAmount (t808Kick* const, float chirp);
+ void t808Kick_setToneNoiseMix (t808Kick* const, float toneNoiseMix);
+ void t808Kick_setNoiseFilterFreq (t808Kick* const, float noiseFilterFreq);
+ void t808Kick_setNoiseFilterQ (t808Kick* const, float noiseFilterQ);
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_INSTRUMENTS_H_INCLUDED
+
+//==============================================================================
+
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-math.h
@@ -1,0 +1,212 @@
+/*==============================================================================
+
+ leaf-math.h
+ Created: 22 Jan 2017 7:02:56pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#ifndef LEAF_MATH_H_INCLUDED
+#define LEAF_MATH_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "leaf-global.h"
+#include "math.h"
+#include "stdint.h"
+#include "stdlib.h"
+
+ //==============================================================================
+
+ //==============================================================================
+
+ typedef enum oBool
+ {
+ OTRUE = 1,
+ OFALSE = 0
+ }oBool;
+
+ // Allows for bitwise operations on floats
+ union unholy_t { /* a union between a float and an integer */
+ float f;
+ int i;
+ };
+
+#define SQRT8 2.82842712475f
+#define WSCALE 1.30612244898f
+#define PI (3.14159265358979f)
+#define TWO_PI (6.28318530717958f)
+#define HALF_PI (1.570796326794897f)
+
+#define VSF 1.0e-38f
+
+#define MAX_DELAY 8192
+#define INV_128 0.0078125f
+
+#define INV_20 0.05f
+#define INV_40 0.025f
+#define INV_80 0.0125f
+#define INV_160 0.00625f
+#define INV_320 0.003125f
+#define INV_640 0.0015625f
+#define INV_1280 0.00078125f
+#define INV_2560 0.000390625f
+#define INV_5120 0.0001953125f
+#define INV_10240 0.00009765625f
+#define INV_20480 0.000048828125f
+
+
+#define INV_TWELVE 0.0833333333f
+#define INV_440 0.0022727273f
+
+#define LOG2 0.3010299957f
+#define INV_LOG2 3.321928095f
+
+#define SOS_M 343.0f
+#define TWO_TO_5 32.0f
+#define INV_TWO_TO_5 0.03125f
+#define TWO_TO_7 128.f
+#define INV_TWO_TO_7 0.0078125f
+#define TWO_TO_8 256.f
+#define INV_TWO_TO_8 0.00390625f
+#define TWO_TO_9 512.f
+#define INV_TWO_TO_9 0.001953125f
+#define TWO_TO_10 1024.f
+#define INV_TWO_TO_10 0.0009765625f
+#define TWO_TO_11 2048.f
+#define INV_TWO_TO_11 0.00048828125f
+#define TWO_TO_12 4096.f
+#define INV_TWO_TO_12 0.00024414062f
+#define TWO_TO_15 32768.f
+#define TWO_TO_16 65536.f
+#define INV_TWO_TO_15 0.00003051757f
+#define INV_TWO_TO_16 0.00001525878f
+#define TWO_TO_16_MINUS_ONE 65535.0f
+#define TWO_TO_23 8388608.0f
+#define INV_TWO_TO_23 0.00000011920929f
+#define TWO_TO_31 2147483648.0f
+#define INV_TWO_TO_31 0.000000000465661f
+#define TWO_TO_32 4294967296.0f
+#define INV_TWO_TO_32 0.000000000232831f
+
+#define ONE_OVER_SQRT2 0.707106781186548f
+
+#define LOGTEN 2.302585092994
+
+ // Jones shaper
+ float LEAF_shaper (float input, float m_drive);
+ float LEAF_reedTable (float input, float offset, float slope);
+
+ float LEAF_reduct (float input, float ratio);
+ float LEAF_round (float input, float rnd);
+ float LEAF_bitwise_xor(float input, uint32_t op);
+
+ float LEAF_reduct (float input, float ratio);
+ float LEAF_round (float input, float rnd);
+ float LEAF_bitwise_xor(float input, uint32_t op);
+
+ float LEAF_clip (float min, float val, float max);
+ int LEAF_clipInt (int min, int val, int max);
+ float LEAF_softClip (float val, float thresh);
+ oBool LEAF_isPrime (uint64_t number );
+
+ float LEAF_midiToFrequency (float f);
+ float LEAF_frequencyToMidi(float f);
+
+ void LEAF_generate_sine (float* buffer, int size);
+ void LEAF_generate_sawtooth (float* buffer, float basefreq, int size);
+ void LEAF_generate_triangle (float* buffer, float basefreq, int size);
+ void LEAF_generate_square (float* buffer, float basefreq, int size);
+
+ // dope af
+ float LEAF_chebyshevT(float in, int n);
+ float LEAF_CompoundChebyshevT(float in, int n, float* amps);
+
+ // Hermite interpolation
+ float LEAF_interpolate_hermite (float A, float B, float C, float D, float t);
+ float LEAF_interpolate_hermite_x(float yy0, float yy1, float yy2, float yy3, float xx);
+ float LEAF_interpolation_linear (float A, float B, float t);
+
+ float interpolate3max(float *buf, const int peakindex);
+ float interpolate3phase(float *buf, const int peakindex);
+
+ // alternative implementation for abs()
+ // REQUIRES: 32 bit integers
+ int fastabs_int(int in);
+
+ // alternative implementation for abs()
+ // REQUIRES: 32 bit floats
+ float fastabsf(float f);
+
+ float fastexp2f(float f);
+
+ float fastPowf(float a, float b) ;
+ double fastPow(double a, double b);
+
+
+ void LEAF_crossfade(float fade, float* volumes);
+
+
+ float LEAF_tanh(float x);
+ void LEAF_generate_sine(float* buffer, int size);
+ void LEAF_generate_sawtooth(float* buffer, float basefreq, int size);
+ void LEAF_generate_triangle(float* buffer, float basefreq, int size);
+ void LEAF_generate_square(float* buffer, float basefreq, int size);
+
+ //0.001 base gives a good curve that goes from 1 to near zero
+ //1000 gives a good curve from -1.0 to 0.0
+ void LEAF_generate_exp(float* buffer, float base, float start, float end, float offset, int size);
+
+ float LEAF_poly_blep(float t, float dt);
+ float LEAF_midiToFrequency(float f);
+
+
+ float fast_mtof(float f);
+
+ double fastexp(double x);
+
+ float fastexpf(float x);
+
+ double fasterexp(double x);
+
+ float fasterexpf(float x);
+
+ float mtof(float f);
+
+ float fast_mtof(float f);
+
+ float faster_mtof(float f);
+
+ float ftom(float f);
+
+ float powtodb(float f);
+
+ float rmstodb(float f);
+
+ float dbtopow(float f);
+
+ float dbtorms(float f);
+
+ float atodb(float a);
+
+ float dbtoa(float db);
+
+ float fastdbtoa(float db);
+
+ float maximum (float num1, float num2);
+
+ float minimum (float num1, float num2);
+
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_MATH_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-mempool.h
@@ -1,0 +1,159 @@
+/*==============================================================================
+
+ In short, mpool is distributed under so called "BSD license",
+
+ Copyright (c) 2009-2010 Tatsuhiko Kubo <cubicdaiya@gmail.com>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the authors nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ written by C99 style
+ ==============================================================================*/
+
+#ifndef LEAF_MPOOL_H_INCLUDED
+#define LEAF_MPOOL_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+ //==============================================================================
+
+#define MPOOL_ALIGN_SIZE (8)
+
+ //#define size_t unsigned long
+
+ /*!
+ * @defgroup tmempool tMempool
+ * @ingroup mempool
+ * An object that can contain an additional mempool for the allocation of LEAF objects.
+ * @{
+ */
+
+ // node of free list
+ typedef struct mpool_node_t {
+ char *pool; // memory pool field
+ struct mpool_node_t *next; // next node pointer
+ struct mpool_node_t *prev; // prev node pointer
+ size_t size;
+ } mpool_node_t;
+
+ typedef struct _tMempool
+ {
+ char* mpool; // start of the mpool
+ size_t usize; // used size of the pool
+ size_t msize; // max size of the pool
+ mpool_node_t* head; // first node of memory pool free list
+ } _tMempool;
+
+ typedef _tMempool* tMempool;
+
+ //! Initialize a tMempool for a given memory location and size to the default LEAF mempool.
+ /*!
+ @param pool A pointer to the tMempool to be initialized.
+ @param memory A pointer to the chunk of memory to be used as a mempool.
+ @param size The size of the chunk of memory to be used as a mempool.
+ */
+ void tMempool_init (tMempool* const pool, char* memory, size_t size);
+
+
+ //! Free a tMempool from the default LEAF mempool.
+ /*!
+ @param pool A pointer to the tMempool to be freed.
+ */
+ void tMempool_free (tMempool* const pool);
+
+
+ //! Initialize a tMempool for a given memory location and size to a specified mempool.
+ /*!
+ @param pool A pointer to the tMempool to be initialized.
+ @param memory A pointer to the chunk of memory to be used as a mempool.
+ @param size The size of the chuck of memory to be used as a mempool.
+ @param poolTo A pointer to the tMempool to which a tMempool should be initialized.
+ */
+ void tMempool_initToPool (tMempool* const pool, char* memory, size_t size, tMempool* const poolTo);
+
+
+ //! Free a tMempool from a specified mempool.
+ /*!
+ @param pool A pointer to the tMempool to be freed from the default LEAF mempool.
+ @param poolFrom A pointer to the tMempool from which a tMempool should be freed.
+ */
+ void tMempool_freeFromPool (tMempool* const pool, tMempool* const poolFrom);
+
+ /*! @} */
+
+ //==============================================================================
+
+ // typedef struct mpool_t {
+ // char* mpool; // start of the mpool
+ // size_t usize; // used size of the pool
+ // size_t msize; // max size of the pool
+ // mpool_node_t* head; // first node of memory pool free list
+ // } mpool_t;
+
+ void mpool_create (char* memory, size_t size, _tMempool* pool);
+
+ char* mpool_alloc(size_t size, _tMempool* pool);
+ char* mpool_calloc(size_t asize, _tMempool* pool);
+
+ void mpool_free(char* ptr, _tMempool* pool);
+
+ size_t mpool_get_size(_tMempool* pool);
+ size_t mpool_get_used(_tMempool* pool);
+
+ void leaf_pool_init(char* memory, size_t size);
+
+ char* leaf_alloc(size_t size);
+ char* leaf_calloc(size_t size);
+
+ void leaf_free(char* ptr);
+
+ size_t leaf_pool_get_size(void);
+ size_t leaf_pool_get_used(void);
+
+ char* leaf_pool_get_pool(void);
+
+ void leaf_mempool_overrun(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_MPOOL_H
+
+//==============================================================================
+
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-midi.h
@@ -1,0 +1,510 @@
+/*==============================================================================
+
+ leaf-midi.h
+ Created: 30 Nov 2018 11:29:26am
+ Author: airship
+
+ ==============================================================================*/
+
+#ifndef LEAF_MIDI_H_INCLUDED
+#define LEAF_MIDI_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-mempool.h"
+#include "leaf-math.h"
+#include "leaf-envelopes.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /*!
+ * @defgroup tstack tStack
+ * @ingroup midi
+ * @brief A basic stack of integers with a fixed max size of 128, used by tPoly to keep track of MIDI notes.
+ * @{
+ */
+
+ // STACK implementation (fixed size)
+#define STACK_SIZE 128
+ typedef struct _tStack
+ {
+ int data[STACK_SIZE];
+ uint16_t pos;
+ uint16_t size;
+ uint16_t capacity;
+ oBool ordered;
+
+ } _tStack;
+
+ typedef _tStack* tStack;
+
+ //! Initialize a tStack to the default LEAF mempool.
+ /*!
+ @param stack A pointer to the tStack to be initialized.
+ */
+ void tStack_init (tStack* const stack);
+
+
+ //! Free a tStack from the default LEAF mempool.
+ /*!
+ @param stack A pointer to the tStack to be freed.
+ */
+ void tStack_free (tStack* const stack);
+
+
+ //! Initialize a tStack to a specified mempool.
+ /*!
+ @param stack A pointer to the tStack to be initialized.
+ @param pool A pointer to the tMempool to which the tStack should be initialized.
+ */
+ void tStack_initToPool (tStack* const stack, tMempool* const pool);
+
+
+ //! Free a tStack from a specified mempool.
+ /*!
+ @param stack A pointer to the tStack to be freed.
+ @param pool A pointer to the tMempool from which the tStack should be freed.
+ */
+ void tStack_freeFromPool (tStack* const stack, tMempool* const pool);
+
+ //! Set the capacity of the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param cap The new capacity.
+ */
+ void tStack_setCapacity (tStack* const stack, uint16_t cap);
+
+
+ //! Add a value to the stack only if that value is not already in the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param item The value to be added.
+ */
+ int tStack_addIfNotAlreadyThere (tStack* const stack, uint16_t item);
+
+
+ //! Add a value to the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param item The value to be added.
+ */
+ void tStack_add (tStack* const stack, uint16_t item);
+
+
+ //! Remove a single instance of a value from the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param item The value to be removed.
+ */
+ int tStack_remove (tStack* const stack, uint16_t item);
+
+
+ //! Clear the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ */
+ void tStack_clear (tStack* const stack);
+
+
+ //! Get the first value in the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @return The first value in the stack.
+ */
+ int tStack_first (tStack* const stack);
+
+
+ //! Get the current size of the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @return The current size of the stack.
+ */
+ int tStack_getSize (tStack* const stack);
+
+ //! Check if the stack contains a value, and if it does, get the index of that value.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param item The value to check against the stack.
+ @return The index of the value or -1 if the stack does not contain the value.
+ */
+ int tStack_contains (tStack* const stack, uint16_t item);
+
+ //! Get the next value in the stack, starting from the earliest added values.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @return The next value in the stack or -1 if there are no values in the stack.
+ */
+ int tStack_next (tStack* const stack);
+
+ //! Get the value at a given index of the stack.
+ /*!
+ @param stack A pointer to the relevant tStack.
+ @param index The index of the stack from which to get a value.
+ @return The value at the given index.
+ */
+ int tStack_get (tStack* const stack, int index);
+
+ /*! @} */
+
+ /*!
+ * @defgroup tpoly tPoly
+ * @ingroup midi
+ * @brief An object for polyphonic handling.
+ * @{
+ */
+
+ /* tPoly */
+ typedef struct _tPoly
+ {
+ tStack stack;
+ tStack orderStack;
+
+ tRamp* ramps;
+ float* rampVals;
+ oBool* firstReceived;
+ float glideTime;
+ oBool pitchGlideIsActive;
+
+ int numVoices;
+ int maxNumVoices;
+
+ //int voices[POLY_NUM_MAX_VOICES][2];
+ int** voices;
+
+ int notes[128][2];
+
+ int CCs[128];
+
+ uint8_t CCsRaw[128];
+
+ int lastVoiceToChange;
+
+ float pitchBend;
+ tRamp pitchBendRamp;
+
+ int currentNote;
+ int currentVoice;
+ int currentVelocity;
+ int maxLength;
+
+ } _tPoly;
+
+ typedef _tPoly* tPoly;
+
+ /* MPoly*/
+ //! Initialize a tPoly to the default LEAF mempool.
+ /*!
+ @param poly A pointer to the tPoly to be initialized.
+ @param maxNumVoices The maximum number of voices this tPoly can handle at once.
+ */
+ void tPoly_init (tPoly* const poly, int maxNumVoices);
+
+
+ //! Free a tPoly from the default LEAF mempool.
+ /*!
+ @param poly A pointer to the tPoly to be freed.
+ */
+ void tPoly_free (tPoly* const poly);
+
+
+ //! Initialize a tPoly to a specified mempool.
+ /*!
+ @param poly A pointer to the tPoly to be initialized.
+ @param pool A pointer to the tMempool to which the tPoly should be initialized.
+ */
+ void tPoly_initToPool (tPoly* const poly, int maxNumVoices, tMempool* const pool);
+
+
+ //! Free a tPoly from a specified mempool.
+ /*!
+ @param poly A pointer to the tPoly to be freed.
+ @param pool A pointer to the tMempool from which the tPoly should be freed.
+ */
+ void tPoly_freeFromPool (tPoly* const poly, tMempool* const pool);
+
+ //! Add a note with a given velocity to the poly handler.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param note The MIDI note number to add.
+ @param vel The MIDI velocity of the note to add.
+ @return The voice that will play the note.
+ */
+ int tPoly_noteOn (tPoly* const poly, int note, uint8_t vel);
+
+
+ //! Remove a note from the poly handler.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param note The MIDI note number to remove.
+ @return The voice that was playing the removed note.
+ */
+ int tPoly_noteOff (tPoly* const poly, uint8_t note);
+
+ void tPoly_orderedAddToStack (tPoly* const poly, uint8_t note);
+
+
+ //! Set the number of voices available to play notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param numVoices The new number of available voices. Cannot be greater than the max number voices given in tPoly_init().
+ */
+ void tPoly_setNumVoices (tPoly* const poly, uint8_t numVoices);
+
+ //! Set whether pitch glide over note changes in voices is active.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param isActive Whether pitch glide should be active or not.
+ */
+ void tPoly_setPitchGlideActive (tPoly* const poly, oBool isActive);
+
+ //! Set how long pitch glide over note changes in voices takes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param t The time to glide in milliseconds.
+ */
+ void tPoly_setPitchGlideTime (tPoly* const poly, float t);
+
+ //! Set the amount of pitch bend
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param pitchBend The new amount of pitch bend.
+ */
+ void tPoly_setPitchBend (tPoly* const poly, float pitchBend);
+ void tPoly_setBendGlideTime (tPoly* const poly, float t);
+ void tPoly_setBendSamplesPerTick (tPoly* const poly, float t);
+
+
+ //! Execute all tick-rate changes in the poly handler's pitch, including glide and bend.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ */
+ void tPoly_tickPitch (tPoly* const poly);
+
+
+ //! Execute the tick-rate change of the poly handler's pitch glide.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ */
+ void tPoly_tickPitchGlide (tPoly* const poly);
+
+
+ //! Execute the tick-rate change of the poly handler's pitch bend.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ */
+ void tPoly_tickPitchBend (tPoly* const poly);
+
+
+ //! Get the current number of voices available to play notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @return The current number of voices available to play notes.
+ */
+ int tPoly_getNumVoices (tPoly* const poly);
+
+ //! Get the number of voices currently playing notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @return The number of voices currently playing notes.
+ */
+ int tPoly_getNumActiveVoices (tPoly* const poly);
+
+ //! Get the current pitch of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the pitch of.
+ @return The current pitch of the given voice as a fractional MIDI note number.
+ */
+ float tPoly_getPitch (tPoly* const poly, uint8_t voice);
+
+
+ //! Get the current MIDI note number of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the MIDI note number of.
+ @return The MIDI note number of the given voice.
+ */
+ int tPoly_getKey (tPoly* const poly, uint8_t voice);
+
+
+ //! Get the current MIDI velocity of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the MIDI velocity of.
+ @return The current MIDI velocity of the given voice.
+ */
+ int tPoly_getVelocity (tPoly* const poly, uint8_t voice);
+
+
+ //! Get the current play state of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the state of.
+ @return The current play state of the given voice.
+ */
+ int tPoly_isOn (tPoly* const poly, uint8_t voice);
+
+ /*! @} */
+
+ //==============================================================================
+
+
+ /* tPoly */
+ typedef struct _tSimplePoly
+ {
+ tStack stack;
+
+ int numVoices;
+ int maxNumVoices;
+ int** voices;
+ int stealing_on;
+ int recover_stolen;
+
+ int notes[128][2];
+ } _tSimplePoly;
+
+ typedef _tSimplePoly* tSimplePoly;
+
+ //! Initialize a tPoly to the default LEAF mempool.
+ /*!
+ @param poly A pointer to the tPoly to be initialized.
+ @param maxNumVoices The maximum number of voices this tPoly can handle at once.
+ */
+ void tSimplePoly_init (tSimplePoly* const poly, int maxNumVoices);
+
+
+ //! Free a tPoly from the default LEAF mempool.
+ /*!
+ @param poly A pointer to the tPoly to be freed.
+ */
+ void tSimplePoly_free (tSimplePoly* const poly);
+
+
+ //! Initialize a tPoly to a specified mempool.
+ /*!
+ @param poly A pointer to the tPoly to be initialized.
+ @param pool A pointer to the tMempool to which the tPoly should be initialized.
+ */
+ void tSimplePoly_initToPool (tSimplePoly* const poly, int maxNumVoices, tMempool* const pool);
+
+
+ //! Free a tPoly from a specified mempool.
+ /*!
+ @param poly A pointer to the tPoly to be freed.
+ @param pool A pointer to the tMempool from which the tPoly should be freed.
+ */
+ void tSimplePoly_freeFromPool (tSimplePoly* const poly, tMempool* const pool);
+
+ //! Add a note with a given velocity to the poly handler.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param note The MIDI note number to add.
+ @param vel The MIDI velocity of the note to add.
+ @return The voice that will play the note.
+ */
+ int tSimplePoly_noteOn (tSimplePoly* const poly, int note, uint8_t vel);
+
+
+ //! Remove a note from the poly handler.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param note The MIDI note number to remove.
+ @return The voice that was playing the removed note.
+ */
+ int tSimplePoly_noteOff (tSimplePoly* const poly, uint8_t note);
+
+
+
+ void tSimplePoly_deactivateVoice(tSimplePoly* const polyh, uint8_t voice);
+
+ int tSimplePoly_markPendingNoteOff(tSimplePoly* const polyh, uint8_t note);
+
+
+ //find if there is a voice with that note -- useful for note offs where you want to wait to remove it from the poly until the release phase of the envelope is finished
+ int tSimplePoly_findVoiceAssignedToNote(tSimplePoly* const polyh, uint8_t note);
+
+ //! Set the number of voices available to play notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param numVoices The new number of available voices. Cannot be greater than the max number voices given in tPoly_init().
+ */
+ void tSimplePoly_setNumVoices (tSimplePoly* const poly, uint8_t numVoices);
+
+ //! Set whether pitch glide over note changes in voices is active.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param isActive Whether pitch glide should be active or not.
+ */
+
+ //! Get the current number of voices available to play notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @return The current number of voices available to play notes.
+ */
+ int tSimplePoly_getNumVoices (tSimplePoly* const poly);
+
+ //! Get the number of voices currently playing notes.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @return The number of voices currently playing notes.
+ */
+ int tSimplePoly_getNumActiveVoices (tSimplePoly* const poly);
+
+ //! Get the current MIDI note number of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the MIDI note number of.
+ @return The MIDI note number of the given voice.
+ */
+
+ int tSimplePoly_getPitch (tSimplePoly* const poly, uint8_t voice);
+
+
+ //this one returns negative one if the voice is inactive
+ int tSimplePoly_getPitchAndCheckActive(tSimplePoly* const polyh, uint8_t voice);
+
+
+ //! Get the current MIDI velocity of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the MIDI velocity of.
+ @return The current MIDI velocity of the given voice.
+ */
+ int tSimplePoly_getVelocity (tSimplePoly* const poly, uint8_t voice);
+
+
+ //! Get the current play state of a given voice.
+ /*!
+ @param poly A pointer to the relevant tPoly.
+ @param voice The voice to get the state of.
+ @return The current play state of the given voice.
+ */
+ int tSimplePoly_isOn (tSimplePoly* const poly, uint8_t voice);
+
+ /*! @} */
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_MIDI_H_INCLUDED
+
+//==============================================================================
+
+
--- /dev/null
+++ b/leaf/Inc/leaf-oscillators.h
@@ -1,0 +1,1143 @@
+/*==============================================================================
+ leaf-oscillators.h
+ Created: 20 Jan 2017 12:00:58pm
+ Author: Michael R Mulshine
+ ==============================================================================*/
+
+#ifndef LEAF_OSCILLATORS_H_INCLUDED
+#define LEAF_OSCILLATORS_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-tables.h"
+#include "leaf-filters.h"
+
+ /*!
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ typedef struct _tCycle
+ {
+ // Underlying phasor
+ float phase;
+ float inc,freq;
+ } _tCycle;
+
+ typedef _tCycle* tCycle;
+
+ /*!
+ * @defgroup tcycle tCycle
+ * @ingroup oscillators
+ * @brief A cycle/sine waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tCycle to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tCycle to be initialized.
+ */
+ void tCycle_init (tCycle* const osc);
+
+
+ //! Free a tCycle from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tCycle to be freed.
+ */
+ void tCycle_free (tCycle* const osc);
+
+
+ //! Initialize a tCycle to a specified mempool.
+ /*!
+ @param osc A pointer to the tCycle to be initialized.
+ @param pool A pointer to the tMempool to which the tCycle should be initialized.
+ */
+ void tCycle_initToPool (tCycle* const osc, tMempool* const pool);
+
+
+ //! Free a tCycle from a specified mempool.
+ /*!
+ @param osc A pointer to the tCycle to be freed.
+ @param pool A pointer to the tMempool from which the tCycle should be freed.
+ */
+ void tCycle_freeFromPool (tCycle* const osc, tMempool* const pool);
+
+
+ //! Tick a tCycle oscillator.
+ /*!
+ @param osc A pointer to the relevant tCycle.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tCycle_tick (tCycle* const osc);
+
+
+ //! Set the frequency of a tCycle oscillator.
+ /*!
+ @param osc A pointer to the relevant tCycle.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tCycle_setFreq (tCycle* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tTriangle: Anti-aliased Triangle waveform using wavetable interpolation. Wavetables constructed from sine components. */
+ typedef struct _tTriangle
+ {
+ // Underlying phasor
+ float phase;
+ float inc,freq;
+ int oct;
+ float w;
+ } _tTriangle;
+
+ typedef _tTriangle* tTriangle;
+
+ /*!
+ * @defgroup ttriangle tTriangle
+ * @ingroup oscillators
+ * @brief An anti-aliased triangle waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tTriangle to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tTriangle to be initialized.
+ */
+ void tTriangle_init (tTriangle* const osc);
+
+
+ //! Free a tTriangle from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tTriangle to be freed.
+ */
+ void tTriangle_free (tTriangle* const osc);
+
+
+ //! Initialize a tTriangle to a specified mempool.
+ /*!
+ @param osc A pointer to the tTriangle to be initialized.
+ @param pool A pointer to the tMempool to which the tTriangle should be initialized.
+ */
+ void tTriangle_initToPool (tTriangle* const osc, tMempool* const pool);
+
+
+ //! Free a tTriangle from a specified mempool.
+ /*!
+ @param osc A pointer to the tTriangle to be freed.
+ @param pool A pointer to the tMempool from which the tTriangle should be freed.
+ */
+ void tTriangle_freeFromPool (tTriangle* const osc, tMempool* const pool);
+
+
+ //! Tick a tTriangle oscillator.
+ /*!
+ @param osc A pointer to the relevant tTriangle.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tTriangle_tick (tTriangle* const osc);
+
+
+ //! Set the frequency of a tTriangle oscillator.
+ /*!
+ @param osc A pointer to the relevant tTriangle.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tTriangle_setFreq (tTriangle* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tSquare: Anti-aliased Square waveform using wavetable interpolation. Wavetables constructed from sine components. */
+ typedef struct _tSquare
+ {
+ // Underlying phasor
+ float phase;
+ float inc,freq;
+ int oct;
+ float w;
+ } _tSquare;
+
+ typedef _tSquare* tSquare;
+
+ /*!
+ * @defgroup tsquare tSquare
+ * @ingroup oscillators
+ * @brief An anti-aliased square waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tSquare to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSquare to be initialized.
+ */
+ void tSquare_init (tSquare* const osc);
+
+
+ //! Free a tSquare from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSquare to be freed.
+ */
+ void tSquare_free (tSquare* const osc);
+
+
+ //! Initialize a tSquare to a specified mempool.
+ /*!
+ @param osc A pointer to the tSquare to be initialized.
+ @param pool A pointer to the tMempool to which the tSquare should be initialized.
+ */
+ void tSquare_initToPool (tSquare* const osc, tMempool* const);
+
+
+ //! Free a tSquare from a specified mempool.
+ /*!
+ @param osc A pointer to the tSquare to be freed.
+ @param pool A pointer to the tMempool from which the tSquare should be freed.
+ */
+ void tSquare_freeFromPool(tSquare* const osc, tMempool* const);
+
+
+ //! Tick a tSquare oscillator.
+ /*!
+ @param osc A pointer to the relevant tSquare.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tSquare_tick (tSquare* const osc);
+
+
+ //! Set the frequency of a tSquare oscillator.
+ /*!
+ @param osc A pointer to the relevant tSquare.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tSquare_setFreq (tSquare* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tSawtooth: Anti-aliased Sawtooth waveform using wavetable interpolation. Wavetables constructed from sine components. */
+ typedef struct _tSawtooth
+ {
+ // Underlying phasor
+ float phase;
+ float inc,freq;
+ int oct;
+ float w;
+ } _tSawtooth;
+
+ typedef _tSawtooth* tSawtooth;
+
+ /*!
+ * @defgroup tsawtooth tSawtooth
+ * @ingroup oscillators
+ * @brief An anti-aliased sawtooth waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tSawtooth to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSawtooth to be initialized.
+ */
+ void tSawtooth_init (tSawtooth* const osc);
+
+
+ //! Free a tSawtooth from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSawtooth to be freed.
+ */
+ void tSawtooth_free (tSawtooth* const osc);
+
+
+ //! Initialize a tSawtooth to a specified mempool.
+ /*!
+ @param osc A pointer to the tSawtooth to be initialized.
+ @param pool A pointer to the tMempool to which the tSawtooth should be initialized.
+ */
+ void tSawtooth_initToPool (tSawtooth* const osc, tMempool* const pool);
+
+
+ //! Free a tSawtooth from a specified mempool.
+ /*!
+ @param osc A pointer to the tSawtooth to be freed.
+ @param pool A pointer to the tMempool from which the tSawtooth should be freed.
+ */
+ void tSawtooth_freeFromPool (tSawtooth* const osc, tMempool* const pool);
+
+
+ //! Tick a tSawtooth oscillator.
+ /*!
+ @param osc A pointer to the relevant tSawtooth.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tSawtooth_tick (tSawtooth* const osc);
+
+
+ //! Set the frequency of a tSawtooth oscillator.
+ /*!
+ @param osc A pointer to the relevant tSawtooth.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tSawtooth_setFreq (tSawtooth* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ typedef struct _tSine
+ {
+ float* sine;
+ int size;
+ float phase;
+ float inc,freq;
+ } _tSine;
+
+ typedef _tSine* tSine;
+
+ /*!
+ * @defgroup tsine tSine
+ * @ingroup oscillators
+ * @brief A cycle/sine waveform oscillator.
+ * @{
+ */
+
+ //! Initialize a tSine to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSine to be initialized.
+ */
+ void tSine_init (tSine* const osc, int size);
+
+
+ //! Free a tSine from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSine to be freed.
+ */
+ void tSine_free (tSine* const osc);
+
+
+ //! Initialize a tSine to a specified mempool.
+ /*!
+ @param osc A pointer to the tSine to be initialized.
+ @param pool A pointer to the tMempool to which the tSine should be initialized.
+ */
+ void tSine_initToPool (tSine* const osc, int size, tMempool* const pool);
+
+
+ //! Free a tSine from a specified mempool.
+ /*!
+ @param osc A pointer to the tSine to be freed.
+ @param pool A pointer to the tMempool from which the tSine should be freed.
+ */
+ void tSine_freeFromPool (tSine* const osc, tMempool* const pool);
+
+
+ //! Tick a tSine oscillator.
+ /*!
+ @param osc A pointer to the relevant tSine.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tSine_tick (tSine* const osc);
+
+
+ //! Set the frequency of a tSine oscillator.
+ /*!
+ @param osc A pointer to the relevant tSine.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tSine_setFreq (tSine* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tTri: Anti-aliased Triangle waveform using wavetable interpolation. */
+ typedef struct _tTri
+ {
+ float phase;
+ float inc,freq;
+ float skew;
+ float lastOut;
+ } _tTri;
+
+ typedef _tTri* tTri;
+
+ /*!
+ * @defgroup tTri tTri
+ * @ingroup oscillators
+ * @brief An anti-aliased triangle waveform oscillator.
+ * @{
+ */
+
+ //! Initialize a tTri to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tTri to be initialized.
+ */
+ void tTri_init (tTri* const osc);
+
+
+ //! Free a tTri from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tTri to be freed.
+ */
+ void tTri_free (tTri* const osc);
+
+
+ //! Initialize a tTri to a specified mempool.
+ /*!
+ @param osc A pointer to the tTri to be initialized.
+ @param pool A pointer to the tMempool to which the tTri should be initialized.
+ */
+ void tTri_initToPool (tTri* const osc, tMempool* const pool);
+
+
+ //! Free a tTri from a specified mempool.
+ /*!
+ @param osc A pointer to the tTri to be freed.
+ @param pool A pointer to the tMempool from which the tTri should be freed.
+ */
+ void tTri_freeFromPool (tTri* const osc, tMempool* const pool);
+
+
+ //! Tick a tTri oscillator.
+ /*!
+ @param osc A pointer to the relevant tTri.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tTri_tick (tTri* const osc);
+
+
+ //! Set the frequency of a tTri oscillator.
+ /*!
+ @param osc A pointer to the relevant tTriangle.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tTri_setFreq (tTri* const osc, float freq);
+
+ void tTri_setSkew (tTri* const osc, float skew);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tPulse: Anti-aliased Square waveform. */
+ typedef struct _tPulse
+ {
+ float phase;
+ float inc,freq;
+ float width;
+ } _tPulse;
+
+ typedef _tPulse* tPulse;
+
+ /*!
+ * @defgroup tPulse tPulse
+ * @ingroup oscillators
+ * @brief An anti-aliased pulse waveform oscillator with changeable pulse width.
+ * @{
+ */
+
+ //! Initialize a tPulse to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tPulse to be initialized.
+ */
+ void tPulse_init (tPulse* const osc);
+
+
+ //! Free a tPulse from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tPulse to be freed.
+ */
+ void tPulse_free (tPulse* const osc);
+
+
+ //! Initialize a tPulse to a specified mempool.
+ /*!
+ @param osc A pointer to the tPulse to be initialized.
+ @param pool A pointer to the tMempool to which the tPulse should be initialized.
+ */
+ void tPulse_initToPool (tPulse* const osc, tMempool* const);
+
+
+ //! Free a tPulse from a specified mempool.
+ /*!
+ @param osc A pointer to the tPulse to be freed.
+ @param pool A pointer to the tMempool from which the tPulse should be freed.
+ */
+ void tPulse_freeFromPool(tPulse* const osc, tMempool* const);
+
+
+ //! Tick a tPulse oscillator.
+ /*!
+ @param osc A pointer to the relevant tPulse.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tPulse_tick (tPulse* const osc);
+
+
+ //! Set the frequency of a tPulse oscillator.
+ /*!
+ @param osc A pointer to the relevant tPulse.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tPulse_setFreq (tPulse* const osc, float freq);
+
+ void tPulse_setWidth (tPulse* const osc, float width);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tSawtooth: Anti-aliased Sawtooth waveform. */
+ typedef struct _tSaw
+ {
+ float phase;
+ float inc,freq;
+ } _tSaw;
+
+ typedef _tSaw* tSaw;
+
+ /*!
+ * @defgroup tsaw tSaw
+ * @ingroup oscillators
+ * @brief An anti-aliased sawtooth waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tSaw to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSaw to be initialized.
+ */
+ void tSaw_init (tSaw* const osc);
+
+
+ //! Free a tSaw from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tSaw to be freed.
+ */
+ void tSaw_free (tSaw* const osc);
+
+
+ //! Initialize a tSaw to a specified mempool.
+ /*!
+ @param osc A pointer to the tSaw to be initialized.
+ @param pool A pointer to the tMempool to which the tSaw should be initialized.
+ */
+ void tSaw_initToPool (tSaw* const osc, tMempool* const pool);
+
+
+ //! Free a tSaw from a specified mempool.
+ /*!
+ @param osc A pointer to the tSaw to be freed.
+ @param pool A pointer to the tMempool from which the tSaw should be freed.
+ */
+ void tSaw_freeFromPool (tSaw* const osc, tMempool* const pool);
+
+
+ //! Tick a tSaw oscillator.
+ /*!
+ @param osc A pointer to the relevant tSaw.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tSaw_tick (tSaw* const osc);
+
+
+ //! Set the frequency of a tSaw oscillator.
+ /*!
+ @param osc A pointer to the relevant tSaw.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tSaw_setFreq (tSaw* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tPhasor: Aliasing phasor [0.0, 1.0) */
+ typedef struct _tPhasor
+ {
+ float phase;
+ float inc,freq;
+ uint8_t phaseDidReset;
+
+ } _tPhasor;
+
+ typedef _tPhasor* tPhasor;
+
+ /*!
+ * @defgroup tphasor Phasor
+ * @ingroup oscillators
+ * @brief An aliasing phasor.
+ * @{
+ */
+
+ //! Initialize a tPhasor to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tPhasor to be initialized.
+ */
+ void tPhasor_init (tPhasor* const osc);
+
+
+ //! Free a tPhasor from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tPhasor to be freed.
+ */
+ void tPhasor_free (tPhasor* const osc);
+
+
+ //! Initialize a tPhasor to a specified mempool.
+ /*!
+ @param osc A pointer to the tPhasor to be initialized.
+ @param pool A pointer to the tMempool to which the tPhasor should be initialized.
+ */
+ void tPhasor_initToPool (tPhasor* const osc, tMempool* const);
+
+
+ //! Free a tPhasor from a specified mempool.
+ /*!
+ @param osc A pointer to the tPhasor to be freed.
+ @param pool A pointer to the tMempool from which the tPhasor should be freed.
+ */
+ void tPhasor_freeFromPool(tPhasor* const osc, tMempool* const);
+
+
+ //! Tick a tPhasor oscillator.
+ /*!
+ @param osc A pointer to the relevant tPhasor.
+ @return The ticked sample as a float from 0 to 1.
+ */
+ float tPhasor_tick (tPhasor* const osc);
+
+
+ //! Set the frequency of a tPhasor oscillator.
+ /*!
+ @param osc A pointer to the relevant tPhasor.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tPhasor_setFreq (tPhasor* const osc, float freq);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /*!
+ * @defgroup tnoise tNoise
+ * @ingroup oscillators
+ * @brief A noise generator.
+ * @{
+ */
+
+ /* tNoise. WhiteNoise, PinkNoise. */
+ /*!
+ * Noise types
+ */
+ enum NoiseType
+ {
+ WhiteNoise, //!< White noise. Full spectrum.
+ PinkNoise, //!< Pink noise. Inverse frequency-proportional spectrum.
+ NoiseTypeNil,
+ };
+
+ typedef enum NoiseType NoiseType;
+
+ typedef struct _tNoise
+ {
+ NoiseType type;
+ float pinkb0, pinkb1, pinkb2;
+ float(*rand)(void);
+
+ } _tNoise;
+
+ typedef _tNoise* tNoise;
+
+ //! Initialize a tNoise to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tNoise to be initialized.
+ */
+ void tNoise_init (tNoise* const noise, NoiseType type);
+
+
+ //! Free a tNoise from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tNoise to be freed.
+ */
+ void tNoise_free (tNoise* const noise);
+
+
+ //! Initialize a tNoise to a specified mempool.
+ /*!
+ @param osc A pointer to the tNoise to be initialized.
+ @param pool A pointer to the tMempool to which the tNoise should be initialized.
+ */
+ void tNoise_initToPool (tNoise* const noise, NoiseType type, tMempool* const);
+
+
+ //! Free a tNoise from a specified mempool.
+ /*!
+ @param osc A pointer to the tNoise to be freed.
+ @param pool A pointer to the tMempool from which the tNoise should be freed.
+ */
+ void tNoise_freeFromPool (tNoise* const noise, tMempool* const);
+
+
+ //! Tick a tNoise oscillator.
+ /*!
+ @param osc A pointer to the relevant tNoise.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tNoise_tick (tNoise* const noise);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /*!
+ * @defgroup tneuron tNeuron
+ * @ingroup oscillators
+ * @brief A model of a neuron, adapted to act as an oscillator.
+ * @{
+ */
+
+ /*!
+ * Neuron modes
+ */
+ enum NeuronMode
+ {
+ NeuronNormal, //!< Normal operation
+ NeuronTanh, //!< Tanh voltage shaping
+ NeuronAaltoShaper, //!< Aalto voltage shaping
+ NeuronModeNil
+ };
+ typedef enum NeuronMode NeuronMode;
+
+ typedef struct _tNeuron
+ {
+ tPoleZero f;
+
+ NeuronMode mode;
+
+ float voltage, current;
+ float timeStep;
+
+ float alpha[3];
+ float beta[3];
+ float rate[3];
+ float V[3];
+ float P[3];
+ float gK, gN, gL, C;
+ } _tNeuron;
+
+ typedef _tNeuron* tNeuron;
+
+ //! Initialize a tNeuron to the default LEAF mempool.
+ /*!
+ @param neuron A pointer to the tNeuron to be initialized.
+ */
+ void tNeuron_init (tNeuron* const neuron);
+
+
+ //! Free a tNeuron from the default LEAF mempool.
+ /*!
+ @param neuron A pointer to the tNeuron to be freed.
+ */
+ void tNeuron_free (tNeuron* const neuron);
+
+
+ //! Initialize a tNeuron to a specified mempool.
+ /*!
+ @param neuron A pointer to the tNeuron to be initialized.
+ @param pool A pointer to the tMempool to which the tNeuron should be initialized.
+ */
+ void tNeuron_initToPool (tNeuron* const neuron, tMempool* const pool);
+
+
+ //! Free a tNeuron from a specified mempool.
+ /*!
+ @param neuron A pointer to the tNeuron to be freed.
+ @param pool A pointer to the tMempool from which the tNeuron should be freed.
+ */
+ void tNeuron_freeFromPool(tNeuron* const neuron, tMempool* const pool);
+
+
+ //! Reset the neuron model.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ */
+ void tNeuron_reset (tNeuron* const neuron);
+
+
+ //! Tick a tNeuron oscillator.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tNeuron_tick (tNeuron* const neuron);
+
+
+ //! Set the tNeuron shaping mode.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param mode The mode to set the tNeuron to.
+ */
+ void tNeuron_setMode (tNeuron* const neuron, NeuronMode mode);
+
+
+ //! Set the current.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param current The new current.
+ */
+ void tNeuron_setCurrent (tNeuron* const neuron, float current);
+
+
+ //! Set the potassium value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param K The new potassium.
+ */
+ void tNeuron_setK (tNeuron* const neuron, float K);
+
+
+ //! Set the chloride value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param L The new chloride value.
+ */
+ void tNeuron_setL (tNeuron* const neuron, float L);
+
+
+ //! Set the sodium value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param N The new sodium value.
+ */
+ void tNeuron_setN (tNeuron* const neuron, float N);
+
+
+ //! Set the calcium value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param C The new calcium.
+ */
+ void tNeuron_setC (tNeuron* const neuron, float C);
+
+
+ //! Set the V1 value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param V1 The new V1.
+ */
+ void tNeuron_setV1 (tNeuron* const neuron, float V1);
+
+
+ //! Set the V2 value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param V2 The new V2.
+ */
+ void tNeuron_setV2 (tNeuron* const neuron, float V2);
+
+
+ //! Set the V3 value.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param V3 The new V3.
+ */
+ void tNeuron_setV3 (tNeuron* const neuron, float V3);
+
+
+ //! Set the time step.
+ /*!
+ @param neuron A pointer to the relevant tNeuron.
+ @param timestep The new time step
+ */
+ void tNeuron_setTimeStep (tNeuron* const neuron, float timestep);
+
+ /*! @} */
+
+ //==============================================================================
+
+ typedef struct _tMinBLEP
+ {
+ float coeffs[6];
+
+ // FilterState
+ float* x1, x2, y1, y2;
+
+ float ratio, lastRatio;
+
+ float overSamplingRatio;
+ int zeroCrossings;
+
+ float lastValue;
+ float lastDelta; // previous derivative ...
+
+ // Tweaking the Blep F
+ float proportionalBlepFreq;
+ uint8_t returnDerivative; // set this to return the FIRST DERIVATIVE of the blep (for first der. discontinuities)
+
+ int blepIndex;
+ int numActiveBleps;
+ //currentActiveBlepOffsets;
+ float* offset;
+ float* freqMultiple;
+ float* pos_change_magnitude;
+ float* vel_change_magnitude;
+
+ int minBlepSize;
+ float* minBlepArray;
+ float* minBlepDerivArray;
+ } _tMinBLEP;
+
+ typedef _tMinBLEP* tMinBLEP;
+
+ void tMinBLEP_init (tMinBLEP* const minblep, int zeroCrossings, int oversamplerRatio);
+ void tMinBLEP_free (tMinBLEP* const minblep);
+ void tMinBLEP_initToPool (tMinBLEP* const minblep, int zeroCrossings, int oversamplerRatio, tMempool* const pool);
+ void tMinBLEP_freeFromPool (tMinBLEP* const minblep, tMempool* const pool);
+
+ // pass in audio, identify discontinuities and return the audio with minbleps inserted
+ float tMinBLEP_tick (tMinBLEP* const minblep, float input);
+ void tMinBLEP_buildBLEP (tMinBLEP* const minblep);
+ void tMinBLEP_addBLEP (tMinBLEP* const minblep, float offset, float posChange, float velChange);
+
+ void tMinBLEP_setOversamplingRatio (tMinBLEP* const minblep, float ratio);
+ void tMinBLEP_setNumZeroCrossings (tMinBLEP* const minblep, int numCrossings);
+
+ //==============================================================================
+
+ /* tMBTriangle: Anti-aliased Triangle waveform using wavetable interpolation. */
+ typedef struct _tMBTriangle
+ {
+ float phase;
+ float inc,freq;
+ float skew;
+ float lastOut;
+
+ tMinBLEP minBlep;
+ tHighpass dcBlock;
+ } _tMBTriangle;
+
+ typedef _tMBTriangle* tMBTriangle;
+
+ /*!
+ * @defgroup tMBTriangle tMBTriangle
+ * @ingroup oscillators
+ * @brief An anti-aliased triangle waveform oscillator.
+ * @{
+ */
+
+ //! Initialize a tMBTriangle to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBTriangle to be initialized.
+ */
+ void tMBTriangle_init (tMBTriangle* const osc);
+
+
+ //! Free a tMBTriangle from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBTriangle to be freed.
+ */
+ void tMBTriangle_free (tMBTriangle* const osc);
+
+
+ //! Initialize a tMBTriangle to a specified mempool.
+ /*!
+ @param osc A pointer to the tMBTriangle to be initialized.
+ @param pool A pointer to the tMempool to which the tMBTriangle should be initialized.
+ */
+ void tMBTriangle_initToPool (tMBTriangle* const osc, tMempool* const pool);
+
+
+ //! Free a tMBTriangle from a specified mempool.
+ /*!
+ @param osc A pointer to the tMBTriangle to be freed.
+ @param pool A pointer to the tMempool from which the tMBTriangle should be freed.
+ */
+ void tMBTriangle_freeFromPool (tMBTriangle* const osc, tMempool* const pool);
+
+
+ //! Tick a tMBTriangle oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBTriangle.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tMBTriangle_tick (tMBTriangle* const osc);
+
+
+ //! Set the frequency of a tMBTriangle oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBTriangleangle.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tMBTriangle_setFreq (tMBTriangle* const osc, float freq);
+
+ void tMBTriangle_setSkew (tMBTriangle* const osc, float skew);
+
+ void tMBTriangle_sync (tMBTriangle* const osc, float phase);
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tMBPulse: Anti-aliased Square waveform. */
+ typedef struct _tMBPulse
+ {
+ float phase;
+ float inc,freq;
+ float width;
+
+ tMinBLEP minBlep;
+ tHighpass dcBlock;
+ } _tMBPulse;
+
+ typedef _tMBPulse* tMBPulse;
+
+ /*!
+ * @defgroup tMBPulse tMBPulse
+ * @ingroup oscillators
+ * @brief An anti-aliased pulse waveform oscillator with changeable pulse width.
+ * @{
+ */
+
+ //! Initialize a tMBPulse to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBPulse to be initialized.
+ */
+ void tMBPulse_init (tMBPulse* const osc);
+
+
+ //! Free a tMBPulse from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBPulse to be freed.
+ */
+ void tMBPulse_free (tMBPulse* const osc);
+
+
+ //! Initialize a tMBPulse to a specified mempool.
+ /*!
+ @param osc A pointer to the tMBPulse to be initialized.
+ @param pool A pointer to the tMempool to which the tMBPulse should be initialized.
+ */
+ void tMBPulse_initToPool (tMBPulse* const osc, tMempool* const);
+
+
+ //! Free a tMBPulse from a specified mempool.
+ /*!
+ @param osc A pointer to the tMBPulse to be freed.
+ @param pool A pointer to the tMempool from which the tMBPulse should be freed.
+ */
+ void tMBPulse_freeFromPool(tMBPulse* const osc, tMempool* const);
+
+
+ //! Tick a tMBPulse oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBPulse.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tMBPulse_tick (tMBPulse* const osc);
+
+
+ //! Set the frequency of a tMBPulse oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBPulse.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tMBPulse_setFreq (tMBPulse* const osc, float freq);
+
+ void tMBPulse_setWidth (tMBPulse* const osc, float width);
+
+ void tMBPulse_sync (tMBPulse* const osc, float phase);
+
+
+ /*! @} */
+
+ //==============================================================================
+
+ /* tMBSawtooth: Anti-aliased Sawtooth waveform. */
+ typedef struct _tMBSaw
+ {
+ float phase;
+ float inc,freq;
+
+ tMinBLEP minBlep;
+ tHighpass dcBlock;
+ } _tMBSaw;
+
+ typedef _tMBSaw* tMBSaw;
+
+ /*!
+ * @defgroup tMBSaw tMBSaw
+ * @ingroup oscillators
+ * @brief An anti-aliased sawtooth waveform oscillator. Uses wavetable synthesis.
+ * @{
+ */
+
+ //! Initialize a tMBSaw to the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBSaw to be initialized.
+ */
+ void tMBSaw_init (tMBSaw* const osc);
+
+
+ //! Free a tMBSaw from the default LEAF mempool.
+ /*!
+ @param osc A pointer to the tMBSaw to be freed.
+ */
+ void tMBSaw_free (tMBSaw* const osc);
+
+
+ //! Initialize a tMBSaw to a specified mempool.
+ /*!
+ @param osc A pointer to the tMBSaw to be initialized.
+ @param pool A pointer to the tMempool to which the tMBSaw should be initialized.
+ */
+ void tMBSaw_initToPool (tMBSaw* const osc, tMempool* const pool);
+
+
+ //! Free a tMBSaw from a specified mempool.
+ /*!
+ @param osc A pointer to the tMBSaw to be freed.
+ @param pool A pointer to the tMempool from which the tMBSaw should be freed.
+ */
+ void tMBSaw_freeFromPool (tMBSaw* const osc, tMempool* const pool);
+
+
+ //! Tick a tMBSaw oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBSaw.
+ @return The ticked sample as a float from -1 to 1.
+ */
+ float tMBSaw_tick (tMBSaw* const osc);
+
+
+ //! Set the frequency of a tMBSaw oscillator.
+ /*!
+ @param osc A pointer to the relevant tMBSaw.
+ @param freq The frequency to set the oscillator to.
+ */
+ void tMBSaw_setFreq (tMBSaw* const osc, float freq);
+
+ void tMBSaw_sync (tMBSaw* const osc, float phase);
+
+ /*! @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_OSCILLATORS_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-physical.h
@@ -1,0 +1,259 @@
+/*
+ ==============================================================================
+
+ leaf-physical.h
+ Created: 30 Nov 2018 10:41:55am
+ Author: airship
+
+ ==============================================================================
+ */
+
+#ifndef LEAF_PHYSICAL_H_INCLUDED
+#define LEAF_PHYSICAL_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-delay.h"
+#include "leaf-filters.h"
+#include "leaf-oscillators.h"
+#include "leaf-envelopes.h"
+#include "leaf-dynamics.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* Karplus Strong model */
+ typedef struct _tPluck
+ {
+ tAllpassDelay delayLine; // Allpass or Linear?? big difference...
+ tOneZero loopFilter;
+ tOnePole pickFilter;
+ tNoise noise;
+
+ float lastOut;
+ float loopGain;
+ float lastFreq;
+
+ float sr;
+
+ } _tPluck;
+
+ typedef _tPluck* tPluck;
+
+ void tPluck_init (tPluck* const, float lowestFrequency); //float delayBuff[DELAY_LENGTH]);
+ void tPluck_free (tPluck* const);
+ void tPluck_initToPool (tPluck* const, float lowestFrequency, tMempool* const);
+ void tPluck_freeFromPool (tPluck* const, tMempool* const);
+
+ float tPluck_tick (tPluck* const);
+
+ // Pluck the string.
+ void tPluck_pluck (tPluck* const, float amplitude);
+
+ // Start a note with the given frequency and amplitude.;
+ void tPluck_noteOn (tPluck* const, float frequency, float amplitude );
+
+ // Stop a note with the given amplitude (speed of decay).
+ void tPluck_noteOff (tPluck* const, float amplitude );
+
+ // Set instrument parameters for a particular frequency.
+ void tPluck_setFrequency (tPluck* const, float frequency );
+
+ // Perform the control change specified by \e number and \e value (0.0 - 128.0).
+ void tPluck_controlChange (tPluck* const, int number, float value);
+
+ // tPluck Utilities.
+ float tPluck_getLastOut (tPluck* const);
+
+ //==============================================================================
+
+ typedef enum SKControlType
+ {
+ SKPickPosition = 0,
+ SKStringDamping,
+ SKDetune,
+ SKControlTypeNil
+ } SKControlType;
+
+ /* Stif Karplus Strong model */
+ typedef struct _tKarplusStrong
+ {
+ tAllpassDelay delayLine;
+ tLinearDelay combDelay;
+ tOneZero filter;
+ tNoise noise;
+ tBiQuad biquad[4];
+
+ uint32_t length;
+ float loopGain;
+ float baseLoopGain;
+ float lastFrequency;
+ float lastLength;
+ float stretching;
+ float pluckAmplitude;
+ float pickupPosition;
+
+ float lastOut;
+
+ } _tKarplusStrong;
+
+ typedef _tKarplusStrong* tKarplusStrong;
+
+ void tKarplusStrong_init (tKarplusStrong* const, float lowestFrequency); // float delayBuff[2][DELAY_LENGTH]);
+ void tKarplusStrong_free (tKarplusStrong* const);
+ void tKarplusStrong_initToPool (tKarplusStrong* const, float lowestFrequency, tMempool* const);
+ void tKarplusStrong_freeFromPool (tKarplusStrong* const, tMempool* const);
+
+ float tKarplusStrong_tick (tKarplusStrong* const);
+
+ // Pluck the string.
+ void tKarplusStrong_pluck (tKarplusStrong* const, float amplitude);
+
+ // Start a note with the given frequency and amplitude.;
+ void tKarplusStrong_noteOn (tKarplusStrong* const, float frequency, float amplitude );
+
+ // Stop a note with the given amplitude (speed of decay).
+ void tKarplusStrong_noteOff (tKarplusStrong* const, float amplitude );
+
+ // Set instrument parameters for a particular frequency.
+ void tKarplusStrong_setFrequency (tKarplusStrong* const, float frequency );
+
+ // Perform the control change specified by \e number and \e value (0.0 - 128.0).
+ // Use SKPickPosition, SKStringDamping, or SKDetune for type.
+ void tKarplusStrong_controlChange (tKarplusStrong* const, SKControlType type, float value);
+
+ // Set the stretch "factor" of the string (0.0 - 1.0).
+ void tKarplusStrong_setStretch (tKarplusStrong* const, float stretch );
+
+ // Set the pluck or "excitation" position along the string (0.0 - 1.0).
+ void tKarplusStrong_setPickupPosition (tKarplusStrong* const, float position );
+
+ // Set the base loop gain.
+ void tKarplusStrong_setBaseLoopGain (tKarplusStrong* const, float aGain );
+
+ // tKarplusStrong utilities.
+ float tKarplusStrong_getLastOut (tKarplusStrong* const);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Simple Living String */
+ typedef struct _tSimpleLivingString {
+ float freq, waveLengthInSamples; // the frequency of the string, determining delay length
+ float dampFreq; // frequency for the bridge LP filter, in Hz
+ float decay; // amplitude damping factor for the string (only active in mode 0)
+ float levMode;
+ float curr;
+ tLinearDelay delayLine;
+ tOnePole bridgeFilter;
+ tHighpass DCblocker;
+ tFeedbackLeveler fbLev;
+ tExpSmooth wlSmooth;
+ } _tSimpleLivingString;
+
+ typedef _tSimpleLivingString* tSimpleLivingString;
+
+ void tSimpleLivingString_init (tSimpleLivingString* const, float freq, float dampFreq,
+ float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode);
+ void tSimpleLivingString_free (tSimpleLivingString* const);
+ void tSimpleLivingString_initToPool (tSimpleLivingString* const, float freq, float dampFreq,
+ float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode, tMempool* const);
+ void tSimpleLivingString_freeFromPool (tSimpleLivingString* const, tMempool* const);
+
+ float tSimpleLivingString_tick (tSimpleLivingString* const, float input);
+ float tSimpleLivingString_sample (tSimpleLivingString* const);
+ void tSimpleLivingString_setFreq (tSimpleLivingString* const, float freq);
+ void tSimpleLivingString_setWaveLength (tSimpleLivingString* const, float waveLength); // in samples
+ void tSimpleLivingString_setDampFreq (tSimpleLivingString* const, float dampFreq);
+ void tSimpleLivingString_setDecay (tSimpleLivingString* const, float decay); // should be near 1.0
+ void tSimpleLivingString_setTargetLev (tSimpleLivingString* const, float targetLev);
+ void tSimpleLivingString_setLevSmoothFactor (tSimpleLivingString* const, float levSmoothFactor);
+ void tSimpleLivingString_setLevStrength (tSimpleLivingString* const, float levStrength);
+ void tSimpleLivingString_setLevMode (tSimpleLivingString* const, int levMode);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ /* Living String */
+ typedef struct _tLivingString {
+ float freq, waveLengthInSamples; // the frequency of the whole string, determining delay length
+ float pickPos; // the pick position, dividing the string in two, in ratio
+ float prepIndex; // the amount of pressure on the pickpoint of the string (near 0=soft obj, near 1=hard obj)
+ float dampFreq; // frequency for the bridge LP filter, in Hz
+ float decay; // amplitude damping factor for the string (only active in mode 0)
+ float levMode;
+ float curr;
+ tLinearDelay delLF,delUF,delUB,delLB; // delay for lower/upper/forward/backward part of the waveguide model
+ tOnePole bridgeFilter, nutFilter, prepFilterU, prepFilterL;
+ tHighpass DCblockerL, DCblockerU;
+ tFeedbackLeveler fbLevU, fbLevL;
+ tExpSmooth wlSmooth, ppSmooth;
+ } _tLivingString;
+
+ typedef _tLivingString* tLivingString;
+
+ void tLivingString_init (tLivingString* const, float freq, float pickPos, float prepIndex,
+ float dampFreq, float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode);
+ void tLivingString_free (tLivingString* const);
+ void tLivingString_initToPool (tLivingString* const, float freq, float pickPos, float prepIndex,
+ float dampFreq, float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode, tMempool* const);
+ void tLivingString_freeFromPool (tLivingString* const, tMempool* const);
+
+ float tLivingString_tick (tLivingString* const, float input);
+ float tLivingString_sample (tLivingString* const);
+ void tLivingString_setFreq (tLivingString* const, float freq);
+ void tLivingString_setWaveLength (tLivingString* const, float waveLength); // in samples
+ void tLivingString_setPickPos (tLivingString* const, float pickPos);
+ void tLivingString_setPrepIndex (tLivingString* const, float prepIndex);
+ void tLivingString_setDampFreq (tLivingString* const, float dampFreq);
+ void tLivingString_setDecay (tLivingString* const, float decay); // should be near 1.0
+ void tLivingString_setTargetLev (tLivingString* const, float targetLev);
+ void tLivingString_setLevSmoothFactor (tLivingString* const, float levSmoothFactor);
+ void tLivingString_setLevStrength (tLivingString* const, float levStrength);
+ void tLivingString_setLevMode (tLivingString* const, int levMode);
+
+ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+ //Reed Table - borrowed from STK
+ typedef struct _tReedTable {
+ float offset, slope;
+ } _tReedTable;
+
+ typedef _tReedTable* tReedTable;
+
+ void tReedTable_init (tReedTable* const, float offset, float slope);
+ void tReedTable_free (tReedTable* const);
+ void tReedTable_initToPool (tReedTable* const, float offset, float slope, tMempool* const);
+ void tReedTable_freeFromPool (tReedTable* const, tMempool* const);
+
+ float tReedTable_tick (tReedTable* const, float input);
+ float tReedTable_tanh_tick (tReedTable* const, float input); //tanh softclip version of reed table - replacing the hard clip in original stk code
+ void tReedTable_setOffset (tReedTable* const, float offset);
+ void tReedTable_setSlope (tReedTable* const, float slope);
+
+ //==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_PHYSICAL_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-reverb.h
@@ -1,0 +1,175 @@
+/*==============================================================================
+
+ leaf-reverb.h
+ Created: 20 Jan 2017 12:02:04pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#ifndef LEAF_REVERB_H_INCLUDED
+#define LEAF_REVERB_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-delay.h"
+#include "leaf-filters.h"
+#include "leaf-oscillators.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ /* PRCReverb: Reverb, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tPRCReverb
+ {
+ float mix, t60;
+
+ float inv_441;
+
+ tDelay allpassDelays[2];
+ tDelay combDelay;
+ float allpassCoeff;
+ float combCoeff;
+
+ float lastIn, lastOut;
+
+ } _tPRCReverb;
+
+ typedef _tPRCReverb* tPRCReverb;
+
+ void tPRCReverb_init (tPRCReverb* const, float t60);
+ void tPRCReverb_free (tPRCReverb* const);
+ void tPRCReverb_initToPool (tPRCReverb* const, float t60, tMempool* const);
+ void tPRCReverb_freeFromPool (tPRCReverb* const, tMempool* const);
+
+ void tPRCReverb_clear (tPRCReverb* const);
+ float tPRCReverb_tick (tPRCReverb* const, float input);
+
+ // Set reverb time in seconds.
+ void tPRCReverb_setT60 (tPRCReverb* const, float t60);
+
+ // Set mix between dry input and wet output signal.
+ void tPRCReverb_setMix (tPRCReverb* const, float mix);
+
+ //==============================================================================
+
+ /* NReverb: Reverb, reimplemented from STK (Cook and Scavone). */
+ typedef struct _tNReverb
+ {
+ float mix, t60;
+
+ float inv_sr, inv_441;
+
+ tLinearDelay allpassDelays[8];
+ tLinearDelay combDelays[6];
+ float allpassCoeff;
+ float combCoeffs[6];
+ float lowpassState;
+
+ float lastIn, lastOut;
+
+ } _tNReverb;
+
+ typedef _tNReverb* tNReverb;
+
+ void tNReverb_init (tNReverb* const, float t60);
+ void tNReverb_free (tNReverb* const);
+ void tNReverb_initToPool (tNReverb* const, float t60, tMempool* const);
+ void tNReverb_freeFromPool (tNReverb* const, tMempool* const);
+
+ void tNReverb_clear (tNReverb* const);
+ float tNReverb_tick (tNReverb* const, float input);
+ void tNReverb_tickStereo (tNReverb* const rev, float input, float* output);
+
+ // Set reverb time in seconds.
+ void tNReverb_setT60 (tNReverb* const, float t60);
+
+ // Set mix between dry input and wet output signal.
+ void tNReverb_setMix (tNReverb* const, float mix);
+
+ //==============================================================================
+
+ typedef struct _tDattorroReverb
+ {
+ float predelay;
+ float input_filter;
+ float feedback_filter;
+ float feedback_gain;
+ float mix;
+ uint32_t frozen;
+
+ float size, size_max, t;
+
+ float f1_delay_2_last,
+ f2_delay_2_last;
+
+ float f1_last,
+ f2_last;
+
+ // INPUT
+ tTapeDelay in_delay;
+ tOnePole in_filter;
+ tAllpass in_allpass[4];
+
+ // FEEDBACK 1
+ tAllpass f1_allpass;
+ tTapeDelay f1_delay_1;
+ tOnePole f1_filter;
+ tTapeDelay f1_delay_2;
+ tTapeDelay f1_delay_3;
+ tHighpass f1_hp;
+
+ tCycle f1_lfo;
+
+ // FEEDBACK 2
+ tAllpass f2_allpass;
+ tTapeDelay f2_delay_1;
+ tOnePole f2_filter;
+ tTapeDelay f2_delay_2;
+ tTapeDelay f2_delay_3;
+ tHighpass f2_hp;
+
+ tCycle f2_lfo;
+
+ } _tDattorroReverb;
+
+ typedef _tDattorroReverb* tDattorroReverb;
+
+ void tDattorroReverb_init (tDattorroReverb* const);
+ void tDattorroReverb_free (tDattorroReverb* const);
+ void tDattorroReverb_initToPool (tDattorroReverb* const, tMempool* const);
+ void tDattorroReverb_freeFromPool (tDattorroReverb* const, tMempool* const);
+
+ void tDattorroReverb_clear (tDattorroReverb* const);
+ float tDattorroReverb_tick (tDattorroReverb* const, float input);
+ void tDattorroReverb_tickStereo (tDattorroReverb* const rev, float input, float* output);
+ void tDattorroReverb_setMix (tDattorroReverb* const, float mix);
+ void tDattorroReverb_setFreeze (tDattorroReverb* const rev, uint32_t freeze);
+ void tDattorroReverb_setHP (tDattorroReverb* const, float freq);
+ void tDattorroReverb_setSize (tDattorroReverb* const, float size);
+ void tDattorroReverb_setInputDelay (tDattorroReverb* const, float preDelay);
+ void tDattorroReverb_setInputFilter (tDattorroReverb* const, float freq);
+ void tDattorroReverb_setFeedbackFilter (tDattorroReverb* const, float freq);
+ void tDattorroReverb_setFeedbackGain (tDattorroReverb* const, float gain);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_REVERB_H_INCLUDED
+
+//==============================================================================
+
--- /dev/null
+++ b/leaf/Inc/leaf-sampling.h
@@ -1,0 +1,188 @@
+/*==============================================================================
+
+ leaf-sampling.h
+ Created: 23 Jan 2019 11:22:09am
+ Author: Mike Mulshine
+
+ ==============================================================================*/
+
+
+#ifndef LEAF_SAMPLING_H_INCLUDED
+#define LEAF_SAMPLING_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ //==============================================================================
+
+#include "leaf-global.h"
+#include "leaf-math.h"
+#include "leaf-mempool.h"
+#include "leaf-envelopes.h"
+#include "leaf-mempool.h"
+#include "leaf-analysis.h"
+
+ /*!
+ * @internal
+ * Header.
+ * @include basic-oscillators.h
+ * @example basic-oscillators.c
+ * An example.
+ */
+
+ //==============================================================================
+
+ typedef enum RecordMode
+ {
+ RecordOneShot = 0,
+ RecordLoop,
+ RecordModeNil
+ } RecordMode;
+
+ typedef struct _tBuffer
+ {
+ float* buff;
+
+ uint32_t idx;
+ uint32_t bufferLength;
+ uint32_t recordedLength;
+ RecordMode mode;
+
+ int active;
+
+ } _tBuffer;
+
+ typedef _tBuffer* tBuffer;
+
+ void tBuffer_init (tBuffer* const, uint32_t length);
+ void tBuffer_free (tBuffer* const);
+ void tBuffer_initToPool (tBuffer* const, uint32_t length, tMempool* const);
+ void tBuffer_freeFromPool (tBuffer* const, tMempool* const);
+
+ void tBuffer_tick (tBuffer* const, float sample);
+
+ void tBuffer_read (tBuffer* const, float* buff, uint32_t len);
+
+ float tBuffer_get (tBuffer* const, int idx);
+
+ void tBuffer_record (tBuffer* const);
+ void tBuffer_stop (tBuffer* const);
+ int tBuffer_getRecordPosition (tBuffer* const);
+
+ void tBuffer_setRecordMode (tBuffer* const, RecordMode mode);
+
+ void tBuffer_clear (tBuffer* const);
+
+ uint32_t tBuffer_getBufferLength (tBuffer* const);
+ uint32_t tBuffer_getRecordedLength (tBuffer* const sb);
+
+ //==============================================================================
+
+ typedef enum PlayMode
+ {
+ PlayNormal,
+ PlayLoop,
+ PlayBackAndForth,
+ PlayModeNil
+ } PlayMode;
+
+ typedef struct _tSampler
+ {
+ tBuffer samp;
+
+ tRamp gain;
+
+ float idx;
+ float inc;
+ float last;
+ float iinc;
+ int8_t dir;
+ int8_t flip;
+ int8_t bnf;
+
+ int32_t start, targetstart;
+ int32_t end, targetend;
+
+ uint32_t len;
+ uint32_t cfxlen;
+ float numticks;
+ PlayMode mode;
+ int retrigger;
+
+ int active;
+
+ uint8_t inCrossfade;
+
+ float flipStart;
+ float flipIdx;
+
+ } _tSampler;
+
+ typedef _tSampler* tSampler;
+
+ void tSampler_init (tSampler* const, tBuffer* const);
+ void tSampler_free (tSampler* const);
+ void tSampler_initToPool (tSampler* const, tBuffer* const, tMempool* const);
+ void tSampler_freeFromPool (tSampler* const, tMempool* const);
+
+ float tSampler_tick (tSampler* const);
+
+ void tSampler_setSample (tSampler* const, tBuffer* const);
+
+ void tSampler_setMode (tSampler* const, PlayMode mode);
+
+ void tSampler_play (tSampler* const);
+ void tSampler_stop (tSampler* const);
+
+ void tSampler_setStart (tSampler* const, int32_t start);
+ void tSampler_setEnd (tSampler* const, int32_t end);
+ void tSampler_setLength (tSampler* const, int32_t length);
+
+ void tSampler_setCrossfadeLength (tSampler* const sp, uint32_t length);
+
+ void tSampler_setRate (tSampler* const, float rate);
+
+ //==============================================================================
+
+ typedef struct _tAutoSampler
+ {
+ tSampler sampler;
+ tEnvelopeFollower ef;
+ uint32_t windowSize;
+ float threshold;
+ float previousPower;
+ uint32_t sampleCounter;
+ uint32_t powerCounter;
+ uint8_t sampleTriggered;
+ } _tAutoSampler;
+
+ typedef _tAutoSampler* tAutoSampler;
+
+ void tAutoSampler_init (tAutoSampler* const, tBuffer* const);
+ void tAutoSampler_free (tAutoSampler* const);
+ void tAutoSampler_initToPool (tAutoSampler* const, tBuffer* const, tMempool* const);
+ void tAutoSampler_freeFromPool (tAutoSampler* const, tMempool* const);
+
+ float tAutoSampler_tick (tAutoSampler* const, float input);
+
+ void tAutoSampler_setBuffer (tAutoSampler* const, tBuffer* const);
+
+ void tAutoSampler_setMode (tAutoSampler* const, PlayMode mode);
+
+ void tAutoSampler_play (tAutoSampler* const);
+ void tAutoSampler_stop (tAutoSampler* const);
+
+ void tAutoSampler_setThreshold (tAutoSampler* const, float thresh);
+ void tAutoSampler_setWindowSize (tAutoSampler* const, uint32_t size);
+ void tAutoSampler_setCrossfadeLength (tAutoSampler* const, uint32_t length);
+
+ void tAutoSampler_setRate (tAutoSampler* const, float rate);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_SAMPLING_H_INCLUDED
+
+//==============================================================================
--- /dev/null
+++ b/leaf/Inc/leaf-tables.h
@@ -1,0 +1,104 @@
+/*==============================================================================
+
+ leaf-tables.h
+ Created: 4 Dec 2016 9:42:41pm
+ Author: Michael R Mulshine
+
+==============================================================================*/
+
+#ifndef LEAF_TABLES_H_INCLUDED
+#define LEAF_TABLES_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//==============================================================================
+
+#include "leaf-math.h"
+
+//==============================================================================
+
+#define USE_SAWTOOTH_TABLE 1
+#define USE_SQUARE_TABLE 1
+#define USE_TRIANGLE_TABLE 1
+#define USE_SHAPER_TABLE 1
+
+#define SINE_TABLE_SIZE 2048
+#define SAW_TABLE_SIZE 2048
+#define SQR_TABLE_SIZE 2048
+#define TRI_TABLE_SIZE 2048
+#define EXP_DECAY_TABLE_SIZE 65536
+#define ATTACK_DECAY_INC_TABLE_SIZE 65536
+#define TANH1_TABLE_SIZE 65536
+#define DECAY_COEFF_TABLE_SIZE 4096
+#define MTOF1_TABLE_SIZE 4096
+#define FILTERTAN_TABLE_SIZE 4096
+
+#define SHAPER1_TABLE_SIZE 65536
+extern const float __leaf_table_shaper1[SHAPER1_TABLE_SIZE];
+
+#define COEFFS_SIZE 32
+extern const float* __leaf_tableref_firCoeffs[COEFFS_SIZE];
+extern const float __leaf_tablesize_firNumTaps[COEFFS_SIZE];
+extern const float __leaf_table_fir2XLow[32];
+extern const float __leaf_table_fir4XLow[64];
+extern const float __leaf_table_fir8XLow[64];
+extern const float __leaf_table_fir16XLow[128];
+extern const float __leaf_table_fir32XLow[256];
+extern const float __leaf_table_fir64XLow[256];
+extern const float __leaf_table_fir2XHigh[128];
+extern const float __leaf_table_fir4XHigh[256];
+extern const float __leaf_table_fir8XHigh[256];
+extern const float __leaf_table_fir16XHigh[512];
+extern const float __leaf_table_fir32XHigh[512];
+extern const float __leaf_table_fir64XHigh[1024];
+
+typedef enum TableName
+{
+ T20 = 0,
+ T40,
+ T80,
+ T160,
+ T320,
+ T640,
+ T1280,
+ T2560,
+ T5120,
+ T10240,
+ T20480,
+ TableNameNil
+} TableName;
+
+// mtof lookup table based on input range [0.0,1.0) in 4096 increments - midi frequency values scaled between m25 and m134 (from the Snyderphonics DrumBox code)
+
+extern const float __leaf_table_exp_decay[EXP_DECAY_TABLE_SIZE];
+extern const float __leaf_table_attack_decay_inc[ATTACK_DECAY_INC_TABLE_SIZE];
+
+extern const float __leaf_table_filtertan[FILTERTAN_TABLE_SIZE];
+
+extern const float __leaf_table_mtof1[MTOF1_TABLE_SIZE];
+extern const float __leaf_table_decayCoeffTable[DECAY_COEFF_TABLE_SIZE];
+
+extern const float __leaf_table_tanh1[TANH1_TABLE_SIZE];
+
+//==============================================================================
+
+/* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */
+extern const float __leaf_table_sinewave[SINE_TABLE_SIZE];
+
+extern const float __leaf_table_sawtooth[11][SAW_TABLE_SIZE];
+
+extern const float __leaf_table_triangle[11][TRI_TABLE_SIZE];
+
+extern const float __leaf_table_squarewave[11][SQR_TABLE_SIZE];
+
+//==============================================================================
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEAF_TABLES_H_INCLUDED
+
+//==============================================================================
--- /dev/null
+++ b/leaf/Src/leaf-analysis.c
@@ -1,0 +1,1054 @@
+/*==============================================================================
+
+ leaf-analysis.c
+ Created: 30 Nov 2018 11:56:49am
+ Author: airship
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-analysis.h"
+#include "..\Externals\d_fft_mayer.h"
+
+#else
+
+#include "../Inc/leaf-analysis.h"
+#include "../Externals/d_fft_mayer.h"
+
+#endif
+
+//===========================================================================
+/* Envelope Follower */
+//===========================================================================
+
+void tEnvelopeFollower_init(tEnvelopeFollower* const ef, float attackThreshold, float decayCoeff)
+{
+ _tEnvelopeFollower* e = *ef = (_tEnvelopeFollower*) leaf_alloc(sizeof(_tEnvelopeFollower));
+
+ e->y = 0.0f;
+ e->a_thresh = attackThreshold;
+ e->d_coeff = decayCoeff;
+}
+
+void tEnvelopeFollower_free(tEnvelopeFollower* const ef)
+{
+ _tEnvelopeFollower* e = *ef;
+
+ leaf_free((char*)e);
+}
+
+void tEnvelopeFollower_initToPool (tEnvelopeFollower* const ef, float attackThreshold, float decayCoeff, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvelopeFollower* e = *ef = (_tEnvelopeFollower*) mpool_alloc(sizeof(_tEnvelopeFollower), m);
+
+ e->y = 0.0f;
+ e->a_thresh = attackThreshold;
+ e->d_coeff = decayCoeff;
+}
+
+void tEnvelopeFollower_freeFromPool (tEnvelopeFollower* const ef, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvelopeFollower* e = *ef;
+
+ mpool_free((char*)e, m);
+}
+
+float tEnvelopeFollower_tick(tEnvelopeFollower* const ef, float x)
+{
+ _tEnvelopeFollower* e = *ef;
+
+ if (x < 0.0f ) x = -x; /* Absolute value. */
+
+ if ((x >= e->y) && (x > e->a_thresh)) e->y = x; /* If we hit a peak, ride the peak to the top. */
+ else e->y = e->y * e->d_coeff; /* Else, exponential decay of output. */
+
+ //ef->y = envelope_pow[(uint16_t)(ef->y * (float)UINT16_MAX)] * ef->d_coeff; //not quite the right behavior - too much loss of precision?
+ //ef->y = powf(ef->y, 1.000009f) * ef->d_coeff; // too expensive
+
+ if( e->y < VSF) e->y = 0.0f;
+
+ return e->y;
+}
+
+int tEnvelopeFollower_decayCoeff(tEnvelopeFollower* const ef, float decayCoeff)
+{
+ _tEnvelopeFollower* e = *ef;
+ return e->d_coeff = decayCoeff;
+}
+
+int tEnvelopeFollower_attackThresh(tEnvelopeFollower* const ef, float attackThresh)
+{
+ _tEnvelopeFollower* e = *ef;
+ return e->a_thresh = attackThresh;
+}
+
+
+
+
+
+// zero crossing detector
+
+void tZeroCrossing_init (tZeroCrossing* const zc, int maxWindowSize)
+{
+ tZeroCrossing_initToPool (zc, maxWindowSize, &leaf.mempool);
+}
+void tZeroCrossing_free (tZeroCrossing* const zc)
+{
+ tZeroCrossing_freeFromPool (zc, &leaf.mempool);
+}
+void tZeroCrossing_initToPool (tZeroCrossing* const zc, int maxWindowSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tZeroCrossing* z = *zc = (_tZeroCrossing*) mpool_alloc(sizeof(_tZeroCrossing), m);
+
+ z->count = 0;
+ z->maxWindowSize = maxWindowSize;
+ z->currentWindowSize = maxWindowSize;
+ z->invCurrentWindowSize = 1.0f / maxWindowSize;
+ z->position = 0;
+ z->prevPosition = maxWindowSize;
+ z->inBuffer = (float*) mpool_calloc(sizeof(float) * maxWindowSize, m);
+ z->countBuffer = (uint16_t*) mpool_calloc(sizeof(uint16_t) * maxWindowSize, m);
+}
+
+void tZeroCrossing_freeFromPool (tZeroCrossing* const zc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tZeroCrossing* z = *zc;
+ mpool_free((char*)z->inBuffer, m);
+ mpool_free((char*)z->countBuffer, m);
+ mpool_free((char*)z, m);
+}
+
+//returns proportion of zero crossings within window size (0.0 would be none in window, 1.0 would be all zero crossings)
+float tZeroCrossing_tick (tZeroCrossing* const zc, float input)
+{
+ _tZeroCrossing* z = *zc;
+
+ z->inBuffer[z->position] = input;
+ int futurePosition = ((z->position + 1) % z->currentWindowSize);
+ float output = 0.0f;
+
+ //add new value to count
+ if ((z->inBuffer[z->position] * z->inBuffer[z->prevPosition]) < 0.0f)
+ {
+ //zero crossing happened, add it to the count array
+ z->countBuffer[z->position] = 1;
+ z->count++;
+ }
+ else
+ {
+ z->countBuffer[z->position] = 0;
+ }
+
+ //remove oldest value from count
+ if (z->countBuffer[futurePosition] > 0)
+ {
+ z->count--;
+ if (z->count < 0)
+ {
+ z->count = 0;
+ }
+ }
+
+ z->prevPosition = z->position;
+ z->position = futurePosition;
+
+ output = z->count * z->invCurrentWindowSize;
+
+ return output;
+}
+
+
+void tZeroCrossing_setWindow (tZeroCrossing* const zc, float windowSize)
+{
+ _tZeroCrossing* z = *zc;
+ if (windowSize <= z->maxWindowSize)
+ {
+ z->currentWindowSize = windowSize;
+ }
+ else
+ {
+ z->currentWindowSize = z->maxWindowSize;
+ }
+ z->invCurrentWindowSize = 1.0f / z->currentWindowSize;
+}
+
+
+
+
+
+//===========================================================================
+/* Power Follower */
+//===========================================================================
+void tPowerFollower_init(tPowerFollower* const pf, float factor)
+{
+ _tPowerFollower* p = *pf = (_tPowerFollower*) leaf_alloc(sizeof(_tPowerFollower));
+
+ p->curr=0.0f;
+ p->factor=factor;
+ p->oneminusfactor=1.0f-factor;
+}
+
+void tPowerFollower_free(tPowerFollower* const pf)
+{
+ _tPowerFollower* p = *pf;
+
+ leaf_free((char*)p);
+}
+
+void tPowerFollower_initToPool (tPowerFollower* const pf, float factor, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPowerFollower* p = *pf = (_tPowerFollower*) mpool_alloc(sizeof(_tPowerFollower), m);
+
+ p->curr=0.0f;
+ p->factor=factor;
+ p->oneminusfactor=1.0f-factor;
+}
+
+void tPowerFollower_freeFromPool (tPowerFollower* const pf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPowerFollower* p = *pf;
+
+ mpool_free((char*)p, m);
+}
+
+int tPowerFollower_setFactor(tPowerFollower* const pf, float factor)
+{
+ _tPowerFollower* p = *pf;
+
+ if (factor<0) factor=0;
+ if (factor>1) factor=1;
+ p->factor=factor;
+ p->oneminusfactor=1.0f-factor;
+ return 0;
+}
+
+float tPowerFollower_tick(tPowerFollower* const pf, float input)
+{
+ _tPowerFollower* p = *pf;
+ p->curr = p->factor*input*input+p->oneminusfactor*p->curr;
+ return p->curr;
+}
+
+float tPowerFollower_sample(tPowerFollower* const pf)
+{
+ _tPowerFollower* p = *pf;
+ return p->curr;
+}
+
+
+
+
+//===========================================================================
+/* ---------------- env~ - simple envelope follower. ----------------- */
+//===========================================================================
+
+void tEnvPD_init(tEnvPD* const xpd, int ws, int hs, int bs)
+{
+ _tEnvPD* x = *xpd = (_tEnvPD*) leaf_calloc(sizeof(_tEnvPD));
+
+ int period = hs, npoints = ws;
+
+ int i;
+
+ if (npoints < 1) npoints = 1024;
+ if (period < 1) period = npoints/2;
+ if (period < npoints / MAXOVERLAP + 1)
+ period = npoints / MAXOVERLAP + 1;
+
+ x->x_npoints = npoints;
+ x->x_phase = 0;
+ x->x_period = period;
+
+ x->windowSize = npoints;
+ x->hopSize = period;
+ x->blockSize = bs;
+
+ for (i = 0; i < MAXOVERLAP; i++) x->x_sumbuf[i] = 0.0f;
+ for (i = 0; i < npoints; i++)
+ x->buf[i] = (1.0f - cosf((TWO_PI * i) / npoints))/npoints;
+ for (; i < npoints+INITVSTAKEN; i++) x->buf[i] = 0.0f;
+
+ x->x_f = 0.0f;
+
+ x->x_allocforvs = INITVSTAKEN;
+
+ // ~ ~ ~ dsp ~ ~ ~
+ if (x->x_period % x->blockSize)
+ {
+ x->x_realperiod = x->x_period + x->blockSize - (x->x_period % x->blockSize);
+ }
+ else
+ {
+ x->x_realperiod = x->x_period;
+ }
+ // ~ ~ ~ ~ ~ ~ ~ ~
+}
+
+void tEnvPD_free (tEnvPD* const xpd)
+{
+ _tEnvPD* x = *xpd;
+
+ leaf_free((char*)x);
+}
+
+void tEnvPD_initToPool (tEnvPD* const xpd, int ws, int hs, int bs, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvPD* x = *xpd = (_tEnvPD*) mpool_calloc(sizeof(_tEnvPD), m);
+
+ int period = hs, npoints = ws;
+
+ int i;
+
+ if (npoints < 1) npoints = 1024;
+ if (period < 1) period = npoints/2;
+ if (period < npoints / MAXOVERLAP + 1)
+ period = npoints / MAXOVERLAP + 1;
+
+ x->x_npoints = npoints;
+ x->x_phase = 0;
+ x->x_period = period;
+
+ x->windowSize = npoints;
+ x->hopSize = period;
+ x->blockSize = bs;
+
+ for (i = 0; i < MAXOVERLAP; i++) x->x_sumbuf[i] = 0;
+ for (i = 0; i < npoints; i++)
+ x->buf[i] = (1.0f - cosf((2 * PI * i) / npoints))/npoints;
+ for (; i < npoints+INITVSTAKEN; i++) x->buf[i] = 0;
+
+ x->x_f = 0;
+
+ x->x_allocforvs = INITVSTAKEN;
+
+ // ~ ~ ~ dsp ~ ~ ~
+ if (x->x_period % x->blockSize)
+ {
+ x->x_realperiod = x->x_period + x->blockSize - (x->x_period % x->blockSize);
+ }
+ else
+ {
+ x->x_realperiod = x->x_period;
+ }
+ // ~ ~ ~ ~ ~ ~ ~ ~
+}
+
+void tEnvPD_freeFromPool (tEnvPD* const xpd, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvPD* x = *xpd;
+
+ mpool_free((char*)x, m);
+}
+
+float tEnvPD_tick (tEnvPD* const xpd)
+{
+ _tEnvPD* x = *xpd;
+ return powtodb(x->x_result);
+}
+
+void tEnvPD_processBlock(tEnvPD* const xpd, float* in)
+{
+ _tEnvPD* x = *xpd;
+
+ int n = x->blockSize;
+
+ int count;
+ t_sample *sump;
+ in += n;
+ for (count = x->x_phase, sump = x->x_sumbuf;
+ count < x->x_npoints; count += x->x_realperiod, sump++)
+ {
+ t_sample *hp = x->buf + count;
+ t_sample *fp = in;
+ t_sample sum = *sump;
+ int i;
+
+ for (i = 0; i < n; i++)
+ {
+ fp--;
+ sum += *hp++ * (*fp * *fp);
+ }
+ *sump = sum;
+ }
+ sump[0] = 0;
+ x->x_phase -= n;
+ if (x->x_phase < 0)
+ {
+ x->x_result = x->x_sumbuf[0];
+ for (count = x->x_realperiod, sump = x->x_sumbuf;
+ count < x->x_npoints; count += x->x_realperiod, sump++)
+ sump[0] = sump[1];
+ sump[0] = 0;
+ x->x_phase = x->x_realperiod - n;
+ }
+}
+
+//===========================================================================
+// ATTACKDETECTION
+//===========================================================================
+/********Private function prototypes**********/
+static void atkdtk_init(tAttackDetection* const a, int blocksize, int atk, int rel);
+static void atkdtk_envelope(tAttackDetection* const a, float *in);
+
+/********Constructor/Destructor***************/
+
+void tAttackDetection_init(tAttackDetection* const ad, int blocksize, int atk, int rel)
+{
+ *ad = (_tAttackDetection*) leaf_alloc(sizeof(_tAttackDetection));
+
+ atkdtk_init(ad, blocksize, atk, rel);
+}
+
+void tAttackDetection_free(tAttackDetection* const ad)
+{
+ _tAttackDetection* a = *ad;
+
+ leaf_free((char*)a);
+}
+
+void tAttackDetection_initToPool (tAttackDetection* const ad, int blocksize, int atk, int rel, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ *ad = (_tAttackDetection*) mpool_alloc(sizeof(_tAttackDetection), m);
+
+ atkdtk_init(ad, blocksize, atk, rel);
+}
+
+void tAttackDetection_freeFromPool (tAttackDetection* const ad, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAttackDetection* a = *ad;
+
+ mpool_free((char*)a, m);
+}
+
+/*******Public Functions***********/
+
+
+void tAttackDetection_setBlocksize(tAttackDetection* const ad, int size)
+{
+ _tAttackDetection* a = *ad;
+
+ if(!((size==64)|(size==128)|(size==256)|(size==512)|(size==1024)|(size==2048)))
+ size = DEFBLOCKSIZE;
+ a->blocksize = size;
+
+ return;
+
+}
+
+void tAttackDetection_setSamplerate(tAttackDetection* const ad, int inRate)
+{
+ _tAttackDetection* a = *ad;
+
+ a->samplerate = inRate;
+
+ //Reset atk and rel to recalculate coeff
+ tAttackDetection_setAttack(ad, a->atk);
+ tAttackDetection_setRelease(ad, a->rel);
+}
+
+void tAttackDetection_setThreshold(tAttackDetection* const ad, float thres)
+{
+ _tAttackDetection* a = *ad;
+ a->threshold = thres;
+}
+
+void tAttackDetection_setAttack(tAttackDetection* const ad, int inAtk)
+{
+ _tAttackDetection* a = *ad;
+ a->atk = inAtk;
+ a->atk_coeff = pow(0.01, 1.0/(a->atk * a->samplerate * 0.001));
+}
+
+void tAttackDetection_setRelease(tAttackDetection* const ad, int inRel)
+{
+ _tAttackDetection* a = *ad;
+ a->rel = inRel;
+ a->rel_coeff = pow(0.01, 1.0/(a->rel * a->samplerate * 0.001));
+}
+
+
+int tAttackDetection_detect(tAttackDetection* const ad, float *in)
+{
+ _tAttackDetection* a = *ad;
+
+ int result;
+
+ atkdtk_envelope(ad, in);
+
+ if(a->env >= a->prevAmp*2) //2 times greater = 6dB increase
+ result = 1;
+ else
+ result = 0;
+
+ a->prevAmp = a->env;
+
+ return result;
+}
+
+/*******Private Functions**********/
+
+static void atkdtk_init(tAttackDetection* const ad, int blocksize, int atk, int rel)
+{
+ _tAttackDetection* a = *ad;
+
+ a->env = 0;
+ a->blocksize = blocksize;
+ a->threshold = DEFTHRESHOLD;
+ a->samplerate = leaf.sampleRate;
+ a->prevAmp = 0;
+
+ a->env = 0;
+
+ tAttackDetection_setAttack(ad, atk);
+ tAttackDetection_setRelease(ad, rel);
+}
+
+static void atkdtk_envelope(tAttackDetection* const ad, float *in)
+{
+ _tAttackDetection* a = *ad;
+
+ int i = 0;
+ float tmp;
+ for(i = 0; i < a->blocksize; ++i){
+ tmp = fastabsf(in[i]);
+
+ if(tmp > a->env)
+ a->env = a->atk_coeff * (a->env - tmp) + tmp;
+ else
+ a->env = a->rel_coeff * (a->env - tmp) + tmp;
+ }
+
+}
+
+//===========================================================================
+// SNAC
+//===========================================================================
+/******************************************************************************/
+/***************************** private procedures *****************************/
+/******************************************************************************/
+
+#define REALFFT mayer_realfft
+#define REALIFFT mayer_realifft
+
+static void snac_analyzeframe(tSNAC* const s);
+static void snac_autocorrelation(tSNAC* const s);
+static void snac_normalize(tSNAC* const s);
+static void snac_pickpeak(tSNAC* const s);
+static void snac_periodandfidelity(tSNAC* const s);
+static void snac_biasbuf(tSNAC* const s);
+static float snac_spectralpeak(tSNAC* const s, float periodlength);
+
+
+/******************************************************************************/
+/******************************** constructor, destructor *********************/
+/******************************************************************************/
+
+
+void tSNAC_init(tSNAC* const snac, int overlaparg)
+{
+ _tSNAC* s = *snac = (_tSNAC*) leaf_calloc(sizeof(_tSNAC));
+
+ s->biasfactor = DEFBIAS;
+ s->timeindex = 0;
+ s->periodindex = 0;
+ s->periodlength = 0.;
+ s->fidelity = 0.;
+ s->minrms = DEFMINRMS;
+ s->framesize = SNAC_FRAME_SIZE;
+
+ s->inputbuf = (float*) leaf_calloc(sizeof(float) * SNAC_FRAME_SIZE);
+ s->processbuf = (float*) leaf_calloc(sizeof(float) * (SNAC_FRAME_SIZE * 2));
+ s->spectrumbuf = (float*) leaf_calloc(sizeof(float) * (SNAC_FRAME_SIZE / 2));
+ s->biasbuf = (float*) leaf_calloc(sizeof(float) * SNAC_FRAME_SIZE);
+
+ snac_biasbuf(snac);
+ tSNAC_setOverlap(snac, overlaparg);
+}
+
+void tSNAC_free(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ leaf_free((char*)s->inputbuf);
+ leaf_free((char*)s->processbuf);
+ leaf_free((char*)s->spectrumbuf);
+ leaf_free((char*)s->biasbuf);
+ leaf_free((char*)s);
+}
+
+void tSNAC_initToPool (tSNAC* const snac, int overlaparg, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSNAC* s = *snac = (_tSNAC*) mpool_alloc(sizeof(_tSNAC), m);
+
+ s->biasfactor = DEFBIAS;
+ s->timeindex = 0;
+ s->periodindex = 0;
+ s->periodlength = 0.;
+ s->fidelity = 0.;
+ s->minrms = DEFMINRMS;
+ s->framesize = SNAC_FRAME_SIZE;
+
+ s->inputbuf = (float*) mpool_calloc(sizeof(float) * SNAC_FRAME_SIZE, m);
+ s->processbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE * 2), m);
+ s->spectrumbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE / 2), m);
+ s->biasbuf = (float*) mpool_calloc(sizeof(float) * SNAC_FRAME_SIZE, m);
+
+ snac_biasbuf(snac);
+ tSNAC_setOverlap(snac, overlaparg);
+}
+
+void tSNAC_freeFromPool (tSNAC* const snac, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSNAC* s = *snac;
+
+ mpool_free((char*)s->inputbuf, m);
+ mpool_free((char*)s->processbuf, m);
+ mpool_free((char*)s->spectrumbuf, m);
+ mpool_free((char*)s->biasbuf, m);
+ mpool_free((char*)s, m);
+}
+
+/******************************************************************************/
+/************************** public access functions****************************/
+/******************************************************************************/
+
+
+void tSNAC_ioSamples(tSNAC* const snac, float *in, float *out, int size)
+{
+ _tSNAC* s = *snac;
+
+ int timeindex = s->timeindex;
+ int mask = s->framesize - 1;
+ int outindex = 0;
+ float *inputbuf = s->inputbuf;
+ float *processbuf = s->processbuf;
+
+ // call analysis function when it is time
+ if(!(timeindex & (s->framesize / s->overlap - 1))) snac_analyzeframe(snac);
+
+ while(size--)
+ {
+ inputbuf[timeindex] = *in++;
+ out[outindex++] = processbuf[timeindex++];
+ timeindex &= mask;
+ }
+ s->timeindex = timeindex;
+}
+
+void tSNAC_setOverlap(tSNAC* const snac, int lap)
+{
+ _tSNAC* s = *snac;
+ if(!((lap==1)|(lap==2)|(lap==4)|(lap==8))) lap = DEFOVERLAP;
+ s->overlap = lap;
+}
+
+
+void tSNAC_setBias(tSNAC* const snac, float bias)
+{
+ _tSNAC* s = *snac;
+ if(bias > 1.) bias = 1.;
+ if(bias < 0.) bias = 0.;
+ s->biasfactor = bias;
+ snac_biasbuf(snac);
+ return;
+}
+
+
+void tSNAC_setMinRMS(tSNAC* const snac, float rms)
+{
+ _tSNAC* s = *snac;
+ if(rms > 1.) rms = 1.;
+ if(rms < 0.) rms = 0.;
+ s->minrms = rms;
+ return;
+}
+
+
+float tSNAC_getPeriod(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+ return(s->periodlength);
+}
+
+
+float tSNAC_getFidelity(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+ return(s->fidelity);
+}
+
+
+/******************************************************************************/
+/***************************** private procedures *****************************/
+/******************************************************************************/
+
+
+// main analysis function
+static void snac_analyzeframe(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ int n, tindex = s->timeindex;
+ int framesize = s->framesize;
+ int mask = framesize - 1;
+ float norm = 1. / sqrt((float)(framesize * 2));
+
+ float *inputbuf = s->inputbuf;
+ float *processbuf = s->processbuf;
+
+ // copy input to processing buffers
+ for(n=0; n<framesize; n++)
+ {
+ processbuf[n] = inputbuf[tindex] * norm;
+ tindex++;
+ tindex &= mask;
+ }
+
+ // zeropadding
+ for(n=framesize; n<(framesize<<1); n++) processbuf[n] = 0.;
+
+ // call analysis procedures
+ snac_autocorrelation(snac);
+ snac_normalize(snac);
+ snac_pickpeak(snac);
+ snac_periodandfidelity(snac);
+}
+
+
+static void snac_autocorrelation(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ int n, m;
+ int framesize = s->framesize;
+ int fftsize = framesize * 2;
+ float *processbuf = s->processbuf;
+ float *spectrumbuf = s->spectrumbuf;
+
+ REALFFT(fftsize, processbuf);
+
+ // compute power spectrum
+ processbuf[0] *= processbuf[0]; // DC
+ processbuf[framesize] *= processbuf[framesize]; // Nyquist
+
+ for(n=1; n<framesize; n++)
+ {
+ processbuf[n] = processbuf[n] * processbuf[n]
+ + processbuf[fftsize-n] * processbuf[fftsize-n]; // imag coefficients appear reversed
+ processbuf[fftsize-n] = 0.;
+ }
+
+ // store power spectrum up to SR/4 for possible later use
+ for(m=0; m<(framesize>>1); m++)
+ {
+ spectrumbuf[m] = processbuf[m];
+ }
+
+ // transform power spectrum to autocorrelation function
+ REALIFFT(fftsize, processbuf);
+ return;
+}
+
+
+static void snac_normalize(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ int framesize = s->framesize;
+ int framesizeplustimeindex = s->framesize + s->timeindex;
+ int timeindexminusone = s->timeindex - 1;
+ int n, m;
+ int mask = framesize - 1;
+ int seek = framesize * SEEK;
+ float *inputbuf = s->inputbuf;
+ float *processbuf= s->processbuf;
+ float signal1, signal2;
+
+ // minimum RMS implemented as minimum autocorrelation at index 0
+ // functionally equivalent to white noise floor
+ float rms = s->minrms / sqrt(1.0f / (float)framesize);
+ float minrzero = rms * rms;
+ float rzero = processbuf[0];
+ if(rzero < minrzero) rzero = minrzero;
+ double normintegral = (double)rzero * 2.;
+
+ // normalize biased autocorrelation function
+ // inputbuf is circular buffer: timeindex may be non-zero when overlap > 1
+ processbuf[0] = 1;
+ for(n=1, m=s->timeindex+1; n<seek; n++, m++)
+ {
+ signal1 = inputbuf[(n + timeindexminusone)&mask];
+ signal2 = inputbuf[(framesizeplustimeindex - n)&mask];
+ normintegral -= (double)(signal1 * signal1 + signal2 * signal2);
+ processbuf[n] /= (float)normintegral * 0.5f;
+ }
+
+ // flush instable function tail
+ for(n = seek; n<framesize; n++) processbuf[n] = 0.;
+ return;
+}
+
+
+static void snac_periodandfidelity(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ float periodlength;
+
+ if(s->periodindex)
+ {
+ periodlength = (float)s->periodindex +
+ interpolate3phase(s->processbuf, s->periodindex);
+ if(periodlength < 8) periodlength = snac_spectralpeak(snac, periodlength);
+ s->periodlength = periodlength;
+ s->fidelity = interpolate3max(s->processbuf, s->periodindex);
+ }
+ return;
+}
+
+// select the peak which most probably represents period length
+static void snac_pickpeak(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ int n, peakindex=0;
+ int seek = s->framesize * SEEK;
+ float *processbuf= s->processbuf;
+ float maxvalue = 0.;
+ float biasedpeak;
+ float *biasbuf = s->biasbuf;
+
+ // skip main lobe
+ for(n=1; n<seek; n++)
+ {
+ if(processbuf[n] < 0.) break;
+ }
+
+ // find interpolated / biased maximum in SNAC function
+ // interpolation finds the 'real maximum'
+ // biasing favours the first candidate
+ for(; n<seek-1; n++)
+ {
+ if(processbuf[n] >= processbuf[n-1])
+ {
+ if(processbuf[n] > processbuf[n+1]) // we have a local peak
+ {
+ biasedpeak = interpolate3max(processbuf, n) * biasbuf[n];
+
+ if(biasedpeak > maxvalue)
+ {
+ maxvalue = biasedpeak;
+ peakindex = n;
+ }
+ }
+ }
+ }
+ s->periodindex = peakindex;
+ return;
+}
+
+
+// verify period length via frequency domain (up till SR/4)
+// frequency domain is more precise than lag domain for period lengths < 8
+// argument 'periodlength' is initial estimation from autocorrelation
+static float snac_spectralpeak(tSNAC* const snac, float periodlength)
+{
+ _tSNAC* s = *snac;
+
+ if(periodlength < 4.0f) return periodlength;
+
+ float max = 0.;
+ int n, startbin, stopbin, peakbin = 0;
+ int spectrumsize = s->framesize>>1;
+ float *spectrumbuf = s->spectrumbuf;
+ float peaklocation = (float)(s->framesize * 2.0f) / periodlength;
+
+ startbin = (int)(peaklocation * 0.8f + 0.5f);
+ if(startbin < 1) startbin = 1;
+ stopbin = (int)(peaklocation * 1.25f + 0.5f);
+ if(stopbin >= spectrumsize - 1) stopbin = spectrumsize - 1;
+
+ for(n=startbin; n<stopbin; n++)
+ {
+ if(spectrumbuf[n] >= spectrumbuf[n-1])
+ {
+ if(spectrumbuf[n] > spectrumbuf[n+1])
+ {
+ if(spectrumbuf[n] > max)
+ {
+ max = spectrumbuf[n];
+ peakbin = n;
+ }
+ }
+ }
+ }
+
+ // calculate amplitudes in peak region
+ for(n=(peakbin-1); n<(peakbin+2); n++)
+ {
+ spectrumbuf[n] = sqrtf(spectrumbuf[n]);
+ }
+
+ peaklocation = (float)peakbin + interpolate3phase(spectrumbuf, peakbin);
+ periodlength = (float)(s->framesize * 2.0f) / peaklocation;
+
+ return periodlength;
+}
+
+
+// modified logarithmic bias function
+static void snac_biasbuf(tSNAC* const snac)
+{
+ _tSNAC* s = *snac;
+
+ int n;
+ int maxperiod = (int)(s->framesize * (float)SEEK);
+ float bias = s->biasfactor / logf((float)(maxperiod - 4));
+ float *biasbuf = s->biasbuf;
+
+ for(n=0; n<5; n++) // periods < 5 samples can't be tracked
+ {
+ biasbuf[n] = 0.0f;
+ }
+
+ for(n=5; n<maxperiod; n++)
+ {
+ biasbuf[n] = 1.0f - (float)logf(n - 4) * bias;
+ }
+}
+
+//===========================================================================
+// PERIODDETECTION
+//===========================================================================
+void tPeriodDetection_init (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize)
+{
+ tPeriodDetection_initToPool(pd, in, out, bufSize, frameSize, &leaf.mempool);
+}
+
+void tPeriodDetection_free (tPeriodDetection* const pd)
+{
+ tPeriodDetection_freeFromPool(pd, &leaf.mempool);
+}
+
+void tPeriodDetection_initToPool (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPeriodDetection* p = *pd = (_tPeriodDetection*) mpool_calloc(sizeof(_tPeriodDetection), m);
+
+ p->inBuffer = in;
+ p->outBuffer = out;
+ p->bufSize = bufSize;
+ p->frameSize = frameSize;
+ p->framesPerBuffer = p->bufSize / p->frameSize;
+ p->curBlock = 1;
+ p->lastBlock = 0;
+ p->index = 0;
+
+ p->hopSize = DEFHOPSIZE;
+ p->windowSize = DEFWINDOWSIZE;
+ p->fba = FBA;
+
+ tEnvPD_initToPool(&p->env, p->windowSize, p->hopSize, p->frameSize, mp);
+
+ tSNAC_initToPool(&p->snac, DEFOVERLAP, mp);
+
+ p->timeConstant = DEFTIMECONSTANT;
+ p->radius = expf(-1000.0f * p->hopSize * leaf.invSampleRate / p->timeConstant);
+ p->fidelityThreshold = 0.95;
+}
+
+void tPeriodDetection_freeFromPool (tPeriodDetection* const pd, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPeriodDetection* p = *pd;
+
+ tEnvPD_freeFromPool(&p->env, mp);
+ tSNAC_freeFromPool(&p->snac, mp);
+ mpool_free((char*)p, m);
+}
+
+float tPeriodDetection_tick (tPeriodDetection* pd, float sample)
+{
+ _tPeriodDetection* p = *pd;
+
+ int i, iLast;
+
+ i = (p->curBlock*p->frameSize);
+ iLast = (p->lastBlock*p->frameSize)+p->index;
+
+ p->i = i;
+ p->iLast = iLast;
+
+ p->inBuffer[i+p->index] = sample;
+
+ p->index++;
+ p->indexstore = p->index;
+ if (p->index >= p->frameSize)
+ {
+ p->index = 0;
+
+ tEnvPD_processBlock(&p->env, &(p->inBuffer[i]));
+
+ tSNAC_ioSamples(&p->snac, &(p->inBuffer[i]), &(p->outBuffer[i]), p->frameSize);
+ float fidelity = tSNAC_getFidelity(&p->snac);
+ // Fidelity threshold recommended by Katja Vetters is 0.95 for most instruments/voices http://www.katjaas.nl/helmholtz/helmholtz.html
+ if (fidelity > p->fidelityThreshold) p->period = tSNAC_getPeriod(&p->snac);
+
+ p->curBlock++;
+ if (p->curBlock >= p->framesPerBuffer) p->curBlock = 0;
+ p->lastBlock++;
+ if (p->lastBlock >= p->framesPerBuffer) p->lastBlock = 0;
+ }
+
+ return p->period;
+}
+
+float tPeriodDetection_getPeriod(tPeriodDetection* pd)
+{
+ _tPeriodDetection* p = *pd;
+ return p->period;
+}
+
+void tPeriodDetection_setHopSize(tPeriodDetection* pd, int hs)
+{
+ _tPeriodDetection* p = *pd;
+ p->hopSize = hs;
+}
+
+void tPeriodDetection_setWindowSize(tPeriodDetection* pd, int ws)
+{
+ _tPeriodDetection* p = *pd;
+ p->windowSize = ws;
+}
+
+void tPeriodDetection_setFidelityThreshold(tPeriodDetection* pd, float threshold)
+{
+ _tPeriodDetection* p = *pd;
+ p->fidelityThreshold = threshold;
+}
+
+void tPeriodDetection_setAlpha (tPeriodDetection* pd, float alpha)
+{
+ _tPeriodDetection* p = *pd;
+ p->alpha = LEAF_clip(0.0f, alpha, 1.0f);
+}
+
+void tPeriodDetection_setTolerance (tPeriodDetection* pd, float tolerance)
+{
+ _tPeriodDetection* p = *pd;
+ if (tolerance < 0.0f) p->tolerance = 0.0f;
+ else p->tolerance = tolerance;
+}
--- /dev/null
+++ b/leaf/Src/leaf-delay.c
@@ -1,0 +1,928 @@
+/*==============================================================================
+
+ leaf-delay.c
+ Created: 20 Jan 2017 12:01:24pm
+ Author: Michael R Mulshine
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-delay.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-delay.h"
+#include "../leaf.h"
+
+#endif
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Delay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tDelay_init (tDelay* const dl, uint32_t delay, uint32_t maxDelay)
+{
+ tDelay_initToPool(dl, delay, maxDelay, &leaf.mempool);
+}
+
+void tDelay_free(tDelay* const dl)
+{
+ tDelay_freeFromPool(dl, &leaf.mempool);
+}
+
+void tDelay_initToPool (tDelay* const dl, uint32_t delay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tDelay* d = *dl = (_tDelay*) mpool_alloc(sizeof(_tDelay), m);
+
+ d->maxDelay = maxDelay;
+
+ d->delay = delay;
+
+ d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, m);
+
+ d->inPoint = 0;
+ d->outPoint = 0;
+
+ d->lastIn = 0.0f;
+ d->lastOut = 0.0f;
+
+ d->gain = 1.0f;
+
+ tDelay_setDelay(dl, d->delay);
+}
+
+void tDelay_freeFromPool (tDelay* const dl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tDelay* d = *dl;
+
+ mpool_free((char*)d->buff, m);
+ mpool_free((char*)d, m);
+}
+
+void tDelay_clear(tDelay* const dl)
+{
+ _tDelay* d = *dl;
+ for (int i = 0; i < d->maxDelay; i++)
+ {
+ d->buff[i] = 0;
+ }
+}
+
+float tDelay_tick (tDelay* const dl, float input)
+{
+ _tDelay* d = *dl;
+
+ // Input
+ d->lastIn = input;
+ d->buff[d->inPoint] = input * d->gain;
+ if (++(d->inPoint) == d->maxDelay) d->inPoint = 0;
+
+ // Output
+ d->lastOut = d->buff[d->outPoint];
+ if (++(d->outPoint) == d->maxDelay) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+int tDelay_setDelay (tDelay* const dl, uint32_t delay)
+{
+ _tDelay* d = *dl;
+
+ d->delay = LEAF_clip(0.0f, delay, d->maxDelay);
+
+ // read chases write
+ if ( d->inPoint >= delay ) d->outPoint = d->inPoint - d->delay;
+ else d->outPoint = d->maxDelay + d->inPoint - d->delay;
+
+ return 0;
+}
+
+float tDelay_tapOut (tDelay* const dl, uint32_t tapDelay)
+{
+ _tDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return d->buff[tap];
+
+}
+
+void tDelay_tapIn (tDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ d->buff[tap] = value;
+}
+
+float tDelay_addTo (tDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return (d->buff[tap] += value);
+}
+
+uint32_t tDelay_getDelay (tDelay* const dl)
+{
+ _tDelay* d = *dl;
+ return d->delay;
+}
+
+float tDelay_getLastOut (tDelay* const dl)
+{
+ _tDelay* d = *dl;
+ return d->lastOut;
+}
+
+float tDelay_getLastIn (tDelay* const dl)
+{
+ _tDelay* d = *dl;
+ return d->lastIn;
+}
+
+void tDelay_setGain (tDelay* const dl, float gain)
+{
+ _tDelay* d = *dl;
+ if (gain < 0.0f) d->gain = 0.0f;
+ else d->gain = gain;
+}
+
+float tDelay_getGain (tDelay* const dl)
+{
+ _tDelay* d = *dl;
+ return d->gain;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ LinearDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tLinearDelay_init (tLinearDelay* const dl, float delay, uint32_t maxDelay)
+{
+ tLinearDelay_initToPool(dl, delay, maxDelay, &leaf.mempool);
+}
+
+void tLinearDelay_free(tLinearDelay* const dl)
+{
+ tLinearDelay_freeFromPool(dl, &leaf.mempool);
+}
+
+void tLinearDelay_initToPool (tLinearDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLinearDelay* d = *dl = (_tLinearDelay*) mpool_alloc(sizeof(_tLinearDelay), m);
+
+ d->maxDelay = maxDelay;
+
+ if (delay > maxDelay) d->delay = maxDelay;
+ else if (delay < 0.0f) d->delay = 0.0f;
+ else d->delay = delay;
+
+ d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, m);
+
+ d->gain = 1.0f;
+
+ d->lastIn = 0.0f;
+ d->lastOut = 0.0f;
+
+ d->inPoint = 0;
+ d->outPoint = 0;
+
+ tLinearDelay_setDelay(dl, d->delay);
+}
+
+void tLinearDelay_freeFromPool(tLinearDelay* const dl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLinearDelay* d = *dl;
+
+ mpool_free((char*)d->buff, m);
+ mpool_free((char*)d, m);
+}
+
+void tLinearDelay_clear(tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+ for (int i = 0; i < d->maxDelay; i++)
+ {
+ d->buff[i] = 0;
+ }
+}
+
+float tLinearDelay_tick (tLinearDelay* const dl, float input)
+{
+ _tLinearDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+
+ uint32_t idx = (uint32_t) d->outPoint;
+ // First 1/2 of interpolation
+ d->lastOut = d->buff[idx] * d->omAlpha;
+ // Second 1/2 of interpolation
+ if ((idx + 1) < d->maxDelay)
+ d->lastOut += d->buff[idx+1] * d->alpha;
+ else
+ d->lastOut += d->buff[0] * d->alpha;
+
+ // Increment output pointer modulo length
+ if ( (++d->outPoint) >= d->maxDelay ) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+void tLinearDelay_tickIn (tLinearDelay* const dl, float input)
+{
+ _tLinearDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+}
+
+float tLinearDelay_tickOut (tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+
+ uint32_t idx = (uint32_t) d->outPoint;
+ // First 1/2 of interpolation
+ d->lastOut = d->buff[idx] * d->omAlpha;
+ // Second 1/2 of interpolation
+ if ((idx + 1) < d->maxDelay)
+ d->lastOut += d->buff[idx+1] * d->alpha;
+ else
+ d->lastOut += d->buff[0] * d->alpha;
+
+ // Increment output pointer modulo length
+ if ( (++d->outPoint) >= d->maxDelay ) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+int tLinearDelay_setDelay (tLinearDelay* const dl, float delay)
+{
+ _tLinearDelay* d = *dl;
+
+ d->delay = LEAF_clip(0.0f, delay, d->maxDelay);
+
+ float outPointer = d->inPoint - d->delay;
+
+ while ( outPointer < 0 )
+ outPointer += d->maxDelay; // modulo maximum length
+
+ d->outPoint = (uint32_t) outPointer; // integer part
+
+ d->alpha = outPointer - d->outPoint; // fractional part
+ d->omAlpha = 1.0f - d->alpha;
+
+ if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
+
+ return 0;
+}
+
+float tLinearDelay_tapOut (tLinearDelay* const dl, uint32_t tapDelay)
+{
+ _tLinearDelay* d = *dl;
+
+ uint32_t tap = d->inPoint - tapDelay - 1;
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return d->buff[tap];
+}
+
+void tLinearDelay_tapIn (tLinearDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tLinearDelay* d = *dl;
+
+ uint32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ d->buff[tap] = value;
+}
+
+float tLinearDelay_addTo (tLinearDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tLinearDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return (d->buff[tap] += value);
+}
+
+float tLinearDelay_getDelay (tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+ return d->delay;
+}
+
+float tLinearDelay_getLastOut (tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+ return d->lastOut;
+}
+
+float tLinearDelay_getLastIn (tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+ return d->lastIn;
+}
+
+void tLinearDelay_setGain (tLinearDelay* const dl, float gain)
+{
+ _tLinearDelay* d = *dl;
+ if (gain < 0.0f) d->gain = 0.0f;
+ else d->gain = gain;
+}
+
+float tLinearDelay_getGain (tLinearDelay* const dl)
+{
+ _tLinearDelay* d = *dl;
+ return d->gain;
+}
+
+
+
+
+
+/// Hermite Interpolated Delay
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ LinearDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay)
+{
+ tHermiteDelay_initToPool(dl, delay, maxDelay, &leaf.mempool);
+}
+
+void tHermiteDelay_free(tHermiteDelay* const dl)
+{
+ tHermiteDelay_freeFromPool(dl, &leaf.mempool);
+}
+
+void tHermiteDelay_initToPool (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tHermiteDelay* d = *dl = (_tHermiteDelay*) mpool_alloc(sizeof(_tHermiteDelay), m);
+
+ d->maxDelay = maxDelay;
+
+ if (delay > maxDelay) d->delay = maxDelay;
+ else if (delay < 0.0f) d->delay = 0.0f;
+ else d->delay = delay;
+
+ d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, m);
+
+ d->gain = 1.0f;
+
+ d->lastIn = 0.0f;
+ d->lastOut = 0.0f;
+
+ d->inPoint = 0;
+ d->outPoint = 0;
+
+ tHermiteDelay_setDelay(dl, d->delay);
+}
+
+void tHermiteDelay_freeFromPool(tHermiteDelay* const dl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tHermiteDelay* d = *dl;
+
+ mpool_free((char*)d->buff, m);
+ mpool_free((char*)d, m);
+}
+
+
+void tHermiteDelay_clear(tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+ for (int i = 0; i < d->maxDelay; i++)
+ {
+ d->buff[i] = 0;
+ }
+}
+
+float tHermiteDelay_tick (tHermiteDelay* const dl, float input)
+{
+ _tHermiteDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+
+
+ uint32_t idx = (uint32_t) d->outPoint;
+ d->lastOut = LEAF_interpolate_hermite (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
+ d->buff[idx],
+ d->buff[(idx + 1) % d->maxDelay],
+ d->buff[(idx + 2) % d->maxDelay],
+ d->alpha);
+
+ // Increment output pointer modulo length
+ if ( (++d->outPoint) >= d->maxDelay ) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+void tHermiteDelay_tickIn (tHermiteDelay* const dl, float input)
+{
+ _tHermiteDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+}
+
+float tHermiteDelay_tickOut (tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+
+ uint32_t idx = (uint32_t) d->outPoint;
+
+
+
+ d->lastOut = LEAF_interpolate_hermite (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
+ d->buff[idx],
+ d->buff[(idx + 1) % d->maxDelay],
+ d->buff[(idx + 2) % d->maxDelay],
+ d->alpha);
+
+ // Increment output pointer modulo length
+ if ( (++d->outPoint) >= d->maxDelay ) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
+{
+ _tHermiteDelay* d = *dl;
+
+ d->delay = LEAF_clip(0.0f, delay, d->maxDelay);
+
+ float outPointer = d->inPoint - d->delay;
+
+ while ( outPointer < 0 )
+ outPointer += d->maxDelay; // modulo maximum length
+
+ d->outPoint = (uint32_t) outPointer; // integer part
+
+ d->alpha = outPointer - d->outPoint; // fractional part
+ d->omAlpha = 1.0f - d->alpha;
+
+ if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
+
+ return 0;
+}
+
+float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)
+{
+ _tHermiteDelay* d = *dl;
+
+ uint32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return d->buff[tap];
+
+}
+
+void tHermiteDelay_tapIn (tHermiteDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tHermiteDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ d->buff[tap] = value;
+}
+
+float tHermiteDelay_addTo (tHermiteDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tHermiteDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return (d->buff[tap] += value);
+}
+
+float tHermiteDelay_getDelay (tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+ return d->delay;
+}
+
+float tHermiteDelay_getLastOut (tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+ return d->lastOut;
+}
+
+float tHermiteDelay_getLastIn (tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+ return d->lastIn;
+}
+
+void tHermiteDelay_setGain (tHermiteDelay* const dl, float gain)
+{
+ _tHermiteDelay* d = *dl;
+ if (gain < 0.0f) d->gain = 0.0f;
+ else d->gain = gain;
+}
+
+float tHermiteDelay_getGain (tHermiteDelay* const dl)
+{
+ _tHermiteDelay* d = *dl;
+ return d->gain;
+}
+
+
+
+
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ AllpassDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tAllpassDelay_init (tAllpassDelay* const dl, float delay, uint32_t maxDelay)
+{
+ tAllpassDelay_initToPool(dl, delay, maxDelay, &leaf.mempool);
+}
+
+void tAllpassDelay_free(tAllpassDelay* const dl)
+{
+ tAllpassDelay_freeFromPool(dl, &leaf.mempool);
+}
+
+void tAllpassDelay_initToPool (tAllpassDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAllpassDelay* d = *dl = (_tAllpassDelay*) mpool_alloc(sizeof(_tAllpassDelay), m);
+
+ d->maxDelay = maxDelay;
+
+ if (delay > maxDelay) d->delay = maxDelay;
+ else if (delay < 0.0f) d->delay = 0.0f;
+ else d->delay = delay;
+
+ d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, m);
+
+ d->gain = 1.0f;
+
+ d->lastIn = 0.0f;
+ d->lastOut = 0.0f;
+
+ d->inPoint = 0;
+ d->outPoint = 0;
+
+ tAllpassDelay_setDelay(dl, d->delay);
+
+ d->apInput = 0.0f;
+}
+
+void tAllpassDelay_freeFromPool(tAllpassDelay* const dl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAllpassDelay* d = *dl;
+
+ mpool_free((char*)d->buff, m);
+ mpool_free((char*)d, m);
+}
+
+void tAllpassDelay_clear(tAllpassDelay* const dl)
+{
+ _tAllpassDelay* d = *dl;
+ for (int i = 0; i < d->maxDelay; i++)
+ {
+ d->buff[i] = 0;
+ }
+}
+
+float tAllpassDelay_tick (tAllpassDelay* const dl, float input)
+{
+ _tAllpassDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if ( ++(d->inPoint) >= d->maxDelay ) d->inPoint = 0;
+
+ // Do allpass interpolation delay.
+ float out = d->lastOut * -d->coeff;
+ out += d->apInput + ( d->coeff * d->buff[d->outPoint] );
+ d->lastOut = out;
+
+ // Save allpass input
+ d->apInput = d->buff[d->outPoint];
+
+ // Increment output pointer modulo length.
+ if (++(d->outPoint) >= d->maxDelay ) d->outPoint = 0;
+
+ return d->lastOut;
+}
+
+int tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)
+{
+ _tAllpassDelay* d = *dl;
+
+ d->delay = LEAF_clip(0.5f, delay, d->maxDelay);
+
+ // outPoint chases inPoint
+ float outPointer = (float)d->inPoint - d->delay + 1.0f;
+
+ while ( outPointer < 0 ) outPointer += d->maxDelay; // mod max length
+
+ d->outPoint = (uint32_t) outPointer; // integer part
+
+ if ( d->outPoint >= d->maxDelay ) d->outPoint = 0;
+
+ d->alpha = 1.0f + (float)d->outPoint - outPointer; // fractional part
+
+ if ( d->alpha < 0.5f )
+ {
+ // The optimal range for alpha is about 0.5 - 1.5 in order to
+ // achieve the flattest phase delay response.
+
+ d->outPoint += 1;
+
+ if ( d->outPoint >= d->maxDelay ) d->outPoint -= d->maxDelay;
+
+ d->alpha += 1.0f;
+ }
+
+ d->coeff = (1.0f - d->alpha) / (1.0f + d->alpha); // coefficient for allpass
+
+ return 0;
+}
+
+float tAllpassDelay_tapOut (tAllpassDelay* const dl, uint32_t tapDelay)
+{
+ _tAllpassDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return d->buff[tap];
+
+}
+
+void tAllpassDelay_tapIn (tAllpassDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tAllpassDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ d->buff[tap] = value;
+}
+
+float tAllpassDelay_addTo (tAllpassDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tAllpassDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return (d->buff[tap] += value);
+}
+
+float tAllpassDelay_getDelay (tAllpassDelay* const dl)
+{
+ _tAllpassDelay* d = *dl;
+ return d->delay;
+}
+
+float tAllpassDelay_getLastOut (tAllpassDelay* const dl)
+{
+ _tAllpassDelay* d = *dl;
+ return d->lastOut;
+}
+
+float tAllpassDelay_getLastIn (tAllpassDelay* const dl)
+{
+ _tAllpassDelay* d = *dl;
+ return d->lastIn;
+}
+
+void tAllpassDelay_setGain (tAllpassDelay* const dl, float gain)
+{
+ _tAllpassDelay* d = *dl;
+ if (gain < 0.0f) d->gain = 0.0f;
+ else d->gain = gain;
+}
+
+float tAllpassDelay_getGain (tAllpassDelay* const dl)
+{
+ _tAllpassDelay* d = *dl;
+ return d->gain;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TapeDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tTapeDelay_init (tTapeDelay* const dl, float delay, uint32_t maxDelay)
+{
+ tTapeDelay_initToPool(dl, delay, maxDelay, &leaf.mempool);
+}
+
+void tTapeDelay_free(tTapeDelay* const dl)
+{
+ tTapeDelay_freeFromPool(dl, &leaf.mempool);
+}
+
+void tTapeDelay_initToPool (tTapeDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTapeDelay* d = *dl = (_tTapeDelay*) mpool_alloc(sizeof(_tTapeDelay), m);
+
+ d->maxDelay = maxDelay;
+
+ d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, m);
+
+ d->gain = 1.0f;
+
+ d->lastIn = 0.0f;
+ d->lastOut = 0.0f;
+
+ d->idx = 0.0f;
+ d->inc = 1.0f;
+ d->inPoint = 0;
+
+ tTapeDelay_setDelay(dl, delay);
+}
+
+void tTapeDelay_freeFromPool(tTapeDelay* const dl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTapeDelay* d = *dl;
+
+ mpool_free((char*)d->buff, m);
+ mpool_free((char*)d, m);
+}
+
+void tTapeDelay_clear(tTapeDelay* const dl)
+{
+ _tTapeDelay* d = *dl;
+ for (int i = 0; i < d->maxDelay; i++)
+ {
+ d->buff[i] = 0;
+ }
+}
+
+//#define SMOOTH_FACTOR 10.f
+
+float tTapeDelay_tick (tTapeDelay* const dl, float input)
+{
+ _tTapeDelay* d = *dl;
+
+ d->buff[d->inPoint] = input * d->gain;
+
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+
+ int idx = (int) d->idx;
+ float alpha = d->idx - idx;
+
+ d->lastOut = LEAF_interpolate_hermite_x (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
+ d->buff[idx],
+ d->buff[(idx + 1) % d->maxDelay],
+ d->buff[(idx + 2) % d->maxDelay],
+ alpha);
+
+ float diff = (d->inPoint - d->idx);
+ while (diff < 0.f) diff += d->maxDelay;
+
+ d->inc = 1.0f + (diff - d->delay) / d->delay; //* SMOOTH_FACTOR;
+
+ d->idx += d->inc;
+
+ if (d->idx >= d->maxDelay) d->idx = 0.0f;
+
+ if (d->lastOut)
+ return d->lastOut;
+ return 0.0f;
+}
+
+void tTapeDelay_incrementInPoint(tTapeDelay* const dl)
+{
+ _tTapeDelay* d = *dl;
+ // Increment input pointer modulo length.
+ if (++(d->inPoint) == d->maxDelay ) d->inPoint = 0;
+}
+
+
+void tTapeDelay_setRate(tTapeDelay* const dl, float rate)
+{
+ _tTapeDelay* d = *dl;
+ d->inc = rate;
+}
+
+void tTapeDelay_setDelay (tTapeDelay* const dl, float delay)
+{
+ _tTapeDelay* d = *dl;
+ d->delay = LEAF_clip(1.f, delay, d->maxDelay);
+}
+
+float tTapeDelay_tapOut (tTapeDelay* const dl, float tapDelay)
+{
+ _tTapeDelay* d = *dl;
+
+ float tap = (float) d->inPoint - tapDelay - 1.f;
+
+ // Check for wraparound.
+ while ( tap < 0.f ) tap += (float)d->maxDelay;
+
+ int idx = (int) tap;
+
+ float alpha = tap - idx;
+
+ float samp = LEAF_interpolate_hermite_x (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
+ d->buff[idx],
+ d->buff[(idx + 1) % d->maxDelay],
+ d->buff[(idx + 2) % d->maxDelay],
+ alpha);
+
+ return samp;
+
+}
+
+void tTapeDelay_tapIn (tTapeDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tTapeDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ d->buff[tap] = value;
+}
+
+float tTapeDelay_addTo (tTapeDelay* const dl, float value, uint32_t tapDelay)
+{
+ _tTapeDelay* d = *dl;
+
+ int32_t tap = d->inPoint - tapDelay - 1;
+
+ // Check for wraparound.
+ while ( tap < 0 ) tap += d->maxDelay;
+
+ return (d->buff[tap] += value);
+}
+
+float tTapeDelay_getDelay (tTapeDelay *dl)
+{
+ _tTapeDelay* d = *dl;
+ return d->delay;
+}
+
+float tTapeDelay_getLastOut (tTapeDelay* const dl)
+{
+ _tTapeDelay* d = *dl;
+ return d->lastOut;
+}
+
+float tTapeDelay_getLastIn (tTapeDelay* const dl)
+{
+ _tTapeDelay* d = *dl;
+ return d->lastIn;
+}
+
+void tTapeDelay_setGain (tTapeDelay* const dl, float gain)
+{
+ _tTapeDelay* d = *dl;
+ if (gain < 0.0f) d->gain = 0.0f;
+ else d->gain = gain;
+}
+
+float tTapeDelay_getGain (tTapeDelay* const dl)
+{
+ _tTapeDelay* d = *dl;
+ return d->gain;
+}
+
--- /dev/null
+++ b/leaf/Src/leaf-distortion.c
@@ -1,0 +1,695 @@
+//
+// leaf-distortion.c
+// LEAF
+//
+// Created by Jeff Snyder, Matthew Wang, Michael Mulshine, and Joshua Becker
+// Copyright © 2019 Princeton University. All rights reserved.
+//
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-distortion.h"
+#include "..\Inc\leaf-tables.h"
+#else
+
+
+#include "../Inc/leaf-distortion.h"
+#include "../Inc/leaf-tables.h"
+
+#endif
+
+//============================================================================================================
+// Sample-Rate reducer
+//============================================================================================================
+
+
+void tSampleReducer_init(tSampleReducer* const sr)
+{
+ _tSampleReducer* s = *sr = (_tSampleReducer*) leaf_alloc(sizeof(_tSampleReducer));
+
+ s->invRatio = 1.0f;
+ s->hold = 0.0f;
+ s->count = 0;
+}
+
+void tSampleReducer_free (tSampleReducer* const sr)
+{
+ _tSampleReducer* s = *sr;
+
+ leaf_free((char*)s);
+}
+
+void tSampleReducer_initToPool (tSampleReducer* const sr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSampleReducer* s = *sr = (_tSampleReducer*) mpool_alloc(sizeof(_tSampleReducer), m);
+
+ s->invRatio = 1.0f;
+ s->hold = 0.0f;
+ s->count = 0;
+}
+
+void tSampleReducer_freeFromPool (tSampleReducer* const sr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSampleReducer* s = *sr;
+
+ mpool_free((char*)s, m);
+}
+
+float tSampleReducer_tick(tSampleReducer* const sr, float input)
+{
+ _tSampleReducer* s = *sr;
+ if (s->count > s->invRatio)
+ {
+ s->hold = input;
+ s->count = 0;
+ }
+
+ s->count++;
+ return s->hold;
+}
+
+
+void tSampleReducer_setRatio(tSampleReducer* const sr, float ratio)
+{
+ _tSampleReducer* s = *sr;
+ if ((ratio <= 1.0f) && (ratio >= 0.0f))
+ s->invRatio = 1.0f / ratio;
+
+}
+
+//============================================================================================================
+// Oversampler
+//============================================================================================================
+// Latency is equal to the phase length (numTaps / ratio)
+void tOversampler_init(tOversampler* const osr, int ratio, oBool extraQuality)
+{
+ _tOversampler* os = *osr = (_tOversampler*) leaf_alloc(sizeof(_tOversampler));
+
+ uint8_t offset = 0;
+ if (extraQuality) offset = 6;
+ if (ratio == 2 || ratio == 4 ||
+ ratio == 8 || ratio == 16 ||
+ ratio == 32 || ratio == 64) {
+ os->ratio = ratio;
+ int idx = (int)(log2f(os->ratio))-1+offset;
+ os->numTaps = __leaf_tablesize_firNumTaps[idx];
+ os->phaseLength = os->numTaps / os->ratio;
+ os->pCoeffs = (float*) __leaf_tableref_firCoeffs[idx];
+ os->upState = (float*) leaf_alloc(sizeof(float) * os->numTaps * 2);
+ os->downState = (float*) leaf_alloc(sizeof(float) * os->numTaps * 2);
+ }
+}
+
+void tOversampler_free(tOversampler* const osr)
+{
+ _tOversampler* os = *osr;
+
+ leaf_free((char*)os->upState);
+ leaf_free((char*)os->downState);
+ leaf_free((char*)os);
+}
+
+void tOversampler_initToPool (tOversampler* const osr, int ratio, oBool extraQuality, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOversampler* os = *osr = (_tOversampler*) mpool_alloc(sizeof(_tOversampler), m);
+
+ uint8_t offset = 0;
+ if (extraQuality) offset = 6;
+ if (ratio == 2 || ratio == 4 ||
+ ratio == 8 || ratio == 16 ||
+ ratio == 32 || ratio == 64) {
+ os->ratio = ratio;
+ int idx = (int)(log2f(os->ratio))-1+offset;
+ os->numTaps = __leaf_tablesize_firNumTaps[idx];
+ os->phaseLength = os->numTaps / os->ratio;
+ os->pCoeffs = (float*) __leaf_tableref_firCoeffs[idx];
+ os->upState = (float*) mpool_alloc(sizeof(float) * os->numTaps * 2, m);
+ os->downState = (float*) mpool_alloc(sizeof(float) * os->numTaps * 2, m);
+ }
+}
+
+void tOversampler_freeFromPool (tOversampler* const osr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOversampler* os = *osr;
+
+ mpool_free((char*)os->upState, m);
+ mpool_free((char*)os->downState, m);
+ mpool_free((char*)os, m);
+}
+
+float tOversampler_tick(tOversampler* const osr, float input, float (*effectTick)(float))
+{
+ _tOversampler* os = *osr;
+
+ float buf[os->ratio];
+
+ tOversampler_upsample(osr, input, buf);
+
+ for (int i = 0; i < os->ratio; ++i) {
+ buf[i] = effectTick(buf[i]);
+ }
+
+ return tOversampler_downsample(osr, buf);
+}
+
+// From CMSIS DSP Library
+void tOversampler_upsample(tOversampler* const osr, float input, float* output)
+{
+ _tOversampler* os = *osr;
+
+ float *pState = os->upState; /* State pointer */
+ float *pCoeffs = os->pCoeffs; /* Coefficient pointer */
+ float *pStateCur;
+ float *ptr1; /* Temporary pointer for state buffer */
+ float *ptr2; /* Temporary pointer for coefficient buffer */
+ float sum0; /* Accumulators */
+ uint32_t i, tapCnt; /* Loop counters */
+ uint32_t phaseLen = os->phaseLength; /* Length of each polyphase filter component */
+ uint32_t j;
+
+ /* os->pState buffer contains previous frame (phaseLen - 1) samples */
+ /* pStateCur points to the location where the new input data should be written */
+ pStateCur = os->upState + (phaseLen - 1U);
+
+ /* Copy new input sample into the state buffer */
+ *pStateCur = input;
+
+ /* Address modifier index of coefficient buffer */
+ j = 1U;
+
+ /* Loop over the Interpolation factor. */
+ i = os->ratio;
+
+ while (i > 0U)
+ {
+ /* Set accumulator to zero */
+ sum0 = 0.0f;
+
+ /* Initialize state pointer */
+ ptr1 = pState;
+
+ /* Initialize coefficient pointer */
+ ptr2 = pCoeffs + (os->ratio - j);
+
+ /* Loop over the polyPhase length.
+ Repeat until we've computed numTaps-(4*os->L) coefficients. */
+
+ /* Initialize tapCnt with number of samples */
+ tapCnt = phaseLen;
+
+ while (tapCnt > 0U)
+ {
+ /* Perform the multiply-accumulate */
+ sum0 += *ptr1++ * *ptr2;
+
+ /* Upsampling is done by stuffing L-1 zeros between each sample.
+ * So instead of multiplying zeros with coefficients,
+ * Increment the coefficient pointer by interpolation factor times. */
+ ptr2 += os->ratio;
+
+ /* Decrement loop counter */
+ tapCnt--;
+ }
+
+ /* The result is in the accumulator, store in the destination buffer. */
+ *output++ = sum0 * os->ratio;
+
+ /* Increment the address modifier index of coefficient buffer */
+ j++;
+
+ /* Decrement the loop counter */
+ i--;
+ }
+
+ /* Advance the state pointer by 1
+ * to process the next group of interpolation factor number samples */
+ pState = pState + 1;
+
+ /* Processing is complete.
+ Now copy the last phaseLen - 1 samples to the satrt of the state buffer.
+ This prepares the state buffer for the next function call. */
+
+ /* Points to the start of the state buffer */
+ pStateCur = os->upState;
+
+ /* Initialize tapCnt with number of samples */
+ tapCnt = (phaseLen - 1U);
+
+ /* Copy data */
+ while (tapCnt > 0U)
+ {
+ *pStateCur++ = *pState++;
+
+ /* Decrement loop counter */
+ tapCnt--;
+ }
+}
+
+// From CMSIS DSP Library
+float tOversampler_downsample(tOversampler *const osr, float* input)
+{
+ _tOversampler* os = *osr;
+
+ float *pState = os->downState; /* State pointer */
+ float *pCoeffs = os->pCoeffs; /* Coefficient pointer */
+ float *pStateCur; /* Points to the current sample of the state */
+ float *px0; /* Temporary pointer for state buffer */
+ float *pb; /* Temporary pointer for coefficient buffer */
+ float x0, c0; /* Temporary variables to hold state and coefficient values */
+ float acc0; /* Accumulator */
+ uint32_t numTaps = os->numTaps; /* Number of filter coefficients in the filter */
+ uint32_t i, tapCnt;
+ float output;
+
+ /* os->pState buffer contains previous frame (numTaps - 1) samples */
+ /* pStateCur points to the location where the new input data should be written */
+ pStateCur = os->downState + (numTaps - 1U);
+
+ /* Copy decimation factor number of new input samples into the state buffer */
+ i = os->ratio;
+
+ do
+ {
+ *pStateCur++ = *input++;
+
+ } while (--i);
+
+ /* Set accumulator to zero */
+ acc0 = 0.0f;
+
+ /* Initialize state pointer */
+ px0 = pState;
+
+ /* Initialize coeff pointer */
+ pb = pCoeffs;
+
+ /* Initialize tapCnt with number of taps */
+ tapCnt = numTaps;
+
+ while (tapCnt > 0U)
+ {
+ /* Read coefficients */
+ c0 = *pb++;
+
+ /* Fetch 1 state variable */
+ x0 = *px0++;
+
+ /* Perform the multiply-accumulate */
+ acc0 += x0 * c0;
+
+ /* Decrement loop counter */
+ tapCnt--;
+ }
+
+ /* Advance the state pointer by the decimation factor
+ * to process the next group of decimation factor number samples */
+ pState = pState + os->ratio;
+
+ /* The result is in the accumulator, store in the destination buffer. */
+ output = acc0;
+
+ /* Processing is complete.
+ Now copy the last numTaps - 1 samples to the start of the state buffer.
+ This prepares the state buffer for the next function call. */
+
+ /* Points to the start of the state buffer */
+ pStateCur = os->downState;
+
+ /* Initialize tapCnt with number of taps */
+ tapCnt = (numTaps - 1U);
+
+ /* Copy data */
+ while (tapCnt > 0U)
+ {
+ *pStateCur++ = *pState++;
+
+ /* Decrement loop counter */
+ tapCnt--;
+ }
+
+ return output;
+}
+
+int tOversampler_getLatency(tOversampler* const osr)
+{
+ _tOversampler* os = *osr;
+ return os->phaseLength;
+}
+
+//============================================================================================================
+// WAVEFOLDER
+//============================================================================================================
+
+
+//from the paper: Virtual Analog Model of the Lockhart Wavefolder
+//by Fabián Esqueda, Henri Pöntynen, Julian D. Parker and Stefan Bilbao
+
+void tLockhartWavefolder_init(tLockhartWavefolder* const wf)
+{
+ tLockhartWavefolder_initToPool (wf, &leaf.mempool);
+}
+
+void tLockhartWavefolder_free(tLockhartWavefolder* const wf)
+{
+ _tLockhartWavefolder* w = *wf;
+
+ leaf_free((char*)w);
+}
+
+void tLockhartWavefolder_initToPool (tLockhartWavefolder* const wf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLockhartWavefolder* w = *wf = (_tLockhartWavefolder*) mpool_alloc(sizeof(_tLockhartWavefolder), m);
+
+ w->Ln1 = 0.0;
+ w->Fn1 = 0.0;
+ w->xn1 = 0.0;
+
+ w->RL = 7.5e3;
+ w->R = 15e3;
+ w->VT = 26e-3;
+ w->Is = 10e-16;
+
+ w->a = 2.0*w->RL/w->R;
+ w->b = (w->R+2.0*w->RL)/(w->VT*w->R);
+ w->d = (w->RL*w->Is)/w->VT;
+ w->half_a = 0.5 * w->a;
+ w->longthing = (0.5*w->VT/w->b);
+
+
+ // Antialiasing error threshold
+ w->AAthresh = 10e-10; //10
+
+ w->LambertThresh = 10e-10; //12 //was 8
+
+
+ w->w = 0.0f;
+ w->expw = 0.0f;
+ w->p = 0.0f;
+ w->r = 0.0f;
+ w->s= 0.0f;
+ w->myerr = 0.0f;
+ w->l = 0.0f;
+ w->u = 0.0f;
+ w->Ln = 0.0f;
+ w->Fn = 0.0f;
+ w->tempsDenom = 0.0f;
+ w->tempErrDenom = 0.0f;
+ w->tempOutDenom = 0.0f;
+
+
+}
+
+void tLockhartWavefolder_freeFromPool (tLockhartWavefolder* const wf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLockhartWavefolder* w = *wf;
+
+ mpool_free((char*)w, m);
+}
+
+
+
+double tLockhartWavefolderLambert(tLockhartWavefolder* const wf, double x, double ln)
+{
+ _tLockhartWavefolder* mwf = *wf;
+
+
+ // Initial guess (use previous value)
+ mwf->w = ln;
+
+ // Haley's method (Sec. 4.2 of the paper)
+ for(int i=0; i<3000; i+=1) { //1000
+
+ mwf->expw = exp(mwf->w);
+ /*
+ if (isinf(mwf->expw) || isnan(mwf->expw))
+ {
+ mwf->expw = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->p = mwf->w*mwf->expw - x;
+ /*
+ if (isinf(mwf->p) || isnan(mwf->p))
+ {
+ mwf->p = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->r = (mwf->w+1.0)*mwf->expw;
+ /*
+ if (isinf(mwf->r) || isnan(mwf->r))
+ {
+ mwf->r = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->tempsDenom = (2.0*(mwf->w+1.0));
+ /*
+ if ((mwf->tempsDenom == 0.0) || isinf(mwf->tempsDenom) || isnan(mwf->tempsDenom))
+ {
+ mwf->tempsDenom = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->s = (mwf->w+2.0)/mwf->tempsDenom;
+ /*
+ if (isnan(mwf->s) || isinf(mwf->s))
+ {
+ mwf->s = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->tempErrDenom = (mwf->r-(mwf->p*mwf->s));
+ /*
+ if ((mwf->tempErrDenom == 0.0) || isinf(mwf->tempErrDenom) || isnan(mwf->tempErrDenom))
+ {
+ mwf->tempErrDenom = 10e-5;
+ LEAF_error();
+ }
+ */
+ mwf->myerr = (mwf->p/mwf->tempErrDenom);
+ /*
+ if (isnan(mwf->myerr) || isinf(mwf->myerr))
+ {
+ mwf->myerr = 10e-5;
+ LEAF_error();
+ }
+ */
+
+ if ((fabs(mwf->myerr))<mwf->LambertThresh) {
+
+ break;
+ }
+
+ mwf->w = mwf->w - mwf->myerr;
+
+ /*
+ if (isinf(mwf->w) || isnan(mwf->w))
+ {
+ mwf->w = 10e-5;
+ LEAF_error();
+ }
+*/
+
+ }
+ return mwf->w;
+}
+
+float tLockhartWavefolder_tick(tLockhartWavefolder* const wf, float in)
+{
+ _tLockhartWavefolder* w = *wf;
+
+ float out = 0.0f;
+
+ // Compute Antiderivative
+ w->l = (in > 0.0) - (in < 0.0);
+ w->u = w->d*exp(w->l*w->b*in);
+ /*
+ if ((w->u == 0.0) || isinf(w->u) || isnan(w->u))
+ {
+ w->u = 10e-5;
+ LEAF_error();
+ }
+ */
+
+ w->Ln = tLockhartWavefolderLambert(wf,w->u,w->Ln1);
+ /*
+ if ((w->Ln == 0.0) || isinf(w->Ln) || isnan(w->Ln))
+ {
+ w->Ln = 10e-5;
+ LEAF_error();
+ }
+*/
+ w->Fn = (w->longthing*(w->Ln*(w->Ln + 2.0))) - (w->half_a*in*in);
+ /*
+ if ((w->Fn == 0.0) || isinf(w->Fn) || isnan(w->Fn))
+ {
+ w->Fn = 10e-5;
+ LEAF_error();
+ }
+ */
+ // Check for ill-conditioning
+
+ if (fabs(in-w->xn1)<w->AAthresh)
+ {
+
+ // Compute Averaged Wavefolder Output
+ double xn = 0.5*(in+w->xn1);
+ w->u = w->d*exp(w->l*w->b*xn);
+ /*
+ if ((w->u == 0.0) || isinf(w->u) || isnan(w->u))
+ {
+ w->u = 10e-5;
+ LEAF_error();
+
+ }
+ */
+ w->Ln = tLockhartWavefolderLambert(wf,w->u,w->Ln1);
+ /*
+ if ((w->Ln == 0.0) || isinf(w->Ln) || isnan(w->Ln))
+ {
+ w->Ln = 10e-5;
+ LEAF_error();
+ }
+ */
+ out = (float)((w->l*w->VT*w->Ln) - (w->a*xn));
+
+ }
+ else
+ {
+
+ // Apply AA Form
+ w->tempOutDenom = (in-w->xn1);
+ /*
+ if ((w->tempOutDenom == 0.0) || isinf(w->tempOutDenom))
+ {
+ w->tempOutDenom = 10e-5;
+ LEAF_error();
+ }
+ */
+ out = ((w->Fn-w->Fn1)/w->tempOutDenom);
+ /*
+ if (isinf(out) || isnan(out))
+ {
+ out = 10e-5;
+ LEAF_error();
+ }
+ */
+
+ }
+
+ // Update States
+ w->Ln1 = w->Ln;
+ w->Fn1 = w->Fn;
+ w->xn1 = (double)in;
+
+ return out;
+}
+
+//============================================================================================================
+// CRUSHER
+//============================================================================================================
+#define SCALAR 5000.f
+
+void tCrusher_init (tCrusher* const cr)
+{
+ _tCrusher* c = *cr = (_tCrusher*) leaf_alloc(sizeof(_tCrusher));
+
+ c->op = 4;
+ c->div = SCALAR;
+ c->rnd = 0.25f;
+ c->srr = 0.25f;
+ tSampleReducer_init(&c->sReducer);
+ c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
+}
+
+void tCrusher_free (tCrusher* const cr)
+{
+ _tCrusher* c = *cr;
+ tSampleReducer_free(&c->sReducer);
+ leaf_free((char*)c);
+}
+
+void tCrusher_initToPool (tCrusher* const cr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCrusher* c = *cr = (_tCrusher*) mpool_alloc(sizeof(_tCrusher), m);
+
+ c->op = 4;
+ c->div = SCALAR;
+ c->rnd = 0.25f;
+ c->srr = 0.25f;
+ tSampleReducer_initToPool(&c->sReducer, mp);
+ c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
+}
+
+void tCrusher_freeFromPool (tCrusher* const cr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCrusher* c = *cr;
+ tSampleReducer_freeFromPool(&c->sReducer, mp);
+ mpool_free((char*)c, m);
+}
+
+float tCrusher_tick (tCrusher* const cr, float input)
+{
+ _tCrusher* c = *cr;
+
+ float sample = input;
+
+ sample *= SCALAR; // SCALAR is 5000 by default
+
+ sample = (int32_t) sample;
+
+ sample /= c->div;
+
+ sample = LEAF_bitwise_xor(sample, c->op << 23);
+
+ sample = LEAF_clip(-1.f, sample, 1.f);
+
+ sample = LEAF_round(sample, c->rnd);
+
+ sample = tSampleReducer_tick(&c->sReducer, sample);
+
+ return sample * c->gain;
+
+}
+
+void tCrusher_setOperation (tCrusher* const cr, float op)
+{
+ _tCrusher* c = *cr;
+ c->op = (uint32_t) (op * 8.0f);
+}
+
+// 0.0 - 1.0
+void tCrusher_setQuality (tCrusher* const cr, float val)
+{
+ _tCrusher* c = *cr;
+
+ val = LEAF_clip(0.0f, val, 1.0f);
+
+ c->div = 0.01f + val * SCALAR;
+
+ c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
+}
+
+// what decimal to round to
+void tCrusher_setRound (tCrusher* const cr, float rnd)
+{
+ _tCrusher* c = *cr;
+ c->rnd = fabsf(rnd);
+}
+
+void tCrusher_setSamplingRatio (tCrusher* const cr, float ratio)
+{
+ _tCrusher* c = *cr;
+ c->srr = ratio;
+ tSampleReducer_setRatio(&c->sReducer, ratio);
+
+}
--- /dev/null
+++ b/leaf/Src/leaf-dynamics.c
@@ -1,0 +1,281 @@
+/*==============================================================================
+
+ leaf-dynamics.c
+ Created: 30 Nov 2018 11:56:49am
+ Author: airship
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-dynamics.h"
+
+#else
+
+#include "../Inc/leaf-dynamics.h"
+
+#endif
+
+//==============================================================================
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Compressor ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+
+/*
+ tCompressor* tCompressorInit(int tauAttack, int tauRelease)
+ {
+ tCompressor* c = &leaf.tCompressorRegistry[leaf.registryIndex[T_COMPRESSOR]++];
+
+ c->tauAttack = tauAttack;
+ c->tauRelease = tauRelease;
+
+ c->x_G[0] = 0.0f, c->x_G[1] = 0.0f,
+ c->y_G[0] = 0.0f, c->y_G[1] = 0.0f,
+ c->x_T[0] = 0.0f, c->x_T[1] = 0.0f,
+ c->y_T[0] = 0.0f, c->y_T[1] = 0.0f;
+
+ c->T = 0.0f; // Threshold
+ c->R = 1.0f; // compression Ratio
+ c->M = 0.0f; // decibel Make-up gain
+ c->W = 0.0f; // decibel Width of knee transition
+
+ return c;
+ }
+ */
+void tCompressor_init(tCompressor* const comp)
+{
+ _tCompressor* c = *comp = (_tCompressor*) leaf_alloc(sizeof(_tCompressor));
+
+ c->tauAttack = 100;
+ c->tauRelease = 100;
+
+ c->isActive = OFALSE;
+
+ c->T = 0.0f; // Threshold
+ c->R = 0.5f; // compression Ratio
+ c->M = 3.0f; // decibel Width of knee transition
+ c->W = 1.0f; // decibel Make-up gain
+}
+
+void tCompressor_free(tCompressor* const comp)
+{
+ _tCompressor* c = *comp;
+
+ leaf_free((char*)c);
+}
+
+void tCompressor_initToPool (tCompressor* const comp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCompressor* c = *comp = (_tCompressor*) mpool_alloc(sizeof(_tCompressor), m);
+
+ c->tauAttack = 100;
+ c->tauRelease = 100;
+
+ c->isActive = OFALSE;
+
+ c->T = 0.0f; // Threshold
+ c->R = 0.5f; // compression Ratio
+ c->M = 3.0f; // decibel Width of knee transition
+ c->W = 1.0f; // decibel Make-up gain
+}
+
+void tCompressor_freeFromPool(tCompressor* const comp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCompressor* c = *comp;
+
+ mpool_free((char*)c, m);
+}
+
+float tCompressor_tick(tCompressor* const comp, float in)
+{
+ _tCompressor* c = *comp;
+
+ float slope, overshoot;
+ float alphaAtt, alphaRel;
+
+ float in_db = 20.0f * log10f( fmaxf( fabsf( in), 0.000001f)), out_db = 0.0f;
+
+ c->y_T[1] = c->y_T[0];
+
+ slope = c->R - 1.0f; // feed-forward topology; was 1/C->R - 1
+
+ overshoot = in_db - c->T;
+
+
+ if (overshoot <= -(c->W * 0.5f))
+ {
+ out_db = in_db;
+ c->isActive = OFALSE;
+ }
+ else if ((overshoot > -(c->W * 0.5f)) && (overshoot < (c->W * 0.5f)))
+ {
+ out_db = in_db + slope * (powf((overshoot + c->W*0.5f),2) / (2.0f * c->W)); // .^ 2 ???
+ c->isActive = OTRUE;
+ }
+ else if (overshoot >= (c->W * 0.5f))
+ {
+ out_db = in_db + slope * overshoot;
+ c->isActive = OTRUE;
+ }
+
+
+
+ c->x_T[0] = out_db - in_db;
+
+ alphaAtt = expf(-1.0f/(0.001f * c->tauAttack * leaf.sampleRate));
+ alphaRel = expf(-1.0f/(0.001f * c->tauRelease * leaf.sampleRate));
+
+ if (c->x_T[0] > c->y_T[1])
+ c->y_T[0] = alphaAtt * c->y_T[1] + (1-alphaAtt) * c->x_T[0];
+ else
+ c->y_T[0] = alphaRel * c->y_T[1] + (1-alphaRel) * c->x_T[0];
+
+ float attenuation = powf(10.0f, ((c->M - c->y_T[0])/20.0f));
+
+ return attenuation * in;
+}
+
+/* Feedback Leveler */
+
+void tFeedbackLeveler_init(tFeedbackLeveler* const fb, float targetLevel, float factor, float strength, int mode)
+{
+ _tFeedbackLeveler* p = *fb = (_tFeedbackLeveler*) leaf_alloc(sizeof(_tFeedbackLeveler));
+
+ p->curr=0.0f;
+ p->targetLevel=targetLevel;
+ tPowerFollower_init(&p->pwrFlw,factor);
+ p->mode=mode;
+ p->strength=strength;
+}
+
+void tFeedbackLeveler_free(tFeedbackLeveler* const fb)
+{
+ _tFeedbackLeveler* p = *fb;
+
+ tPowerFollower_free(&p->pwrFlw);
+ leaf_free((char*)p);
+}
+
+void tFeedbackLeveler_initToPool (tFeedbackLeveler* const fb, float targetLevel, float factor, float strength, int mode, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFeedbackLeveler* p = *fb = (_tFeedbackLeveler*) mpool_alloc(sizeof(_tFeedbackLeveler), m);
+
+ p->curr=0.0f;
+ p->targetLevel=targetLevel;
+ tPowerFollower_initToPool(&p->pwrFlw,factor, mp);
+ p->mode=mode;
+ p->strength=strength;
+}
+
+void tFeedbackLeveler_freeFromPool (tFeedbackLeveler* const fb, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFeedbackLeveler* p = *fb;
+
+ tPowerFollower_freeFromPool(&p->pwrFlw, mp);
+ mpool_free((char*)p, m);
+}
+
+void tFeedbackLeveler_setStrength(tFeedbackLeveler* const fb, float strength)
+{ // strength is how strongly level diff is affecting the amp ratio
+ // try 0.125 for a start
+ _tFeedbackLeveler* p = *fb;
+ p->strength=strength;
+}
+
+void tFeedbackLeveler_setFactor(tFeedbackLeveler* const fb, float factor)
+{
+ _tFeedbackLeveler* p = *fb;
+ tPowerFollower_setFactor(&p->pwrFlw,factor);
+}
+
+void tFeedbackLeveler_setMode(tFeedbackLeveler* const fb, int mode)
+{ // 0 for decaying with upwards lev limiting, 1 for constrained absolute level (also downwards limiting)
+ _tFeedbackLeveler* p = *fb;
+ p->mode=mode;
+}
+
+float tFeedbackLeveler_tick(tFeedbackLeveler* const fb, float input)
+{
+ _tFeedbackLeveler* p = *fb;
+ float levdiff=(tPowerFollower_tick(&p->pwrFlw, input)-p->targetLevel);
+ if (p->mode==0 && levdiff<0.0f) levdiff=0.0f;
+ p->curr=input*(1.0f-p->strength*levdiff);
+ return p->curr;
+}
+
+float tFeedbackLeveler_sample(tFeedbackLeveler* const fb)
+{
+ _tFeedbackLeveler* p = *fb;
+ return p->curr;
+}
+
+
+void tFeedbackLeveler_setTargetLevel (tFeedbackLeveler* const fb, float TargetLevel)
+{
+ _tFeedbackLeveler* p = *fb;
+ p->targetLevel=TargetLevel;
+}
+
+
+
+void tThreshold_init(tThreshold* const th, float low, float high)
+{
+ tThreshold_initToPool(th, low, high, &leaf.mempool);
+}
+
+void tThreshold_free(tThreshold* const th)
+{
+ tThreshold_freeFromPool(th, &leaf.mempool);
+}
+
+void tThreshold_initToPool (tThreshold* const th, float low, float high, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tThreshold* t = *th = (_tThreshold*) mpool_alloc(sizeof(_tThreshold), m);
+
+ t->highThresh = high;
+ t->lowThresh = low;
+
+ t->currentValue = 0;
+}
+
+void tThreshold_freeFromPool(tThreshold* const th, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tThreshold* t = *th;
+
+ mpool_free((char*)t, m);
+}
+
+int tThreshold_tick(tThreshold* const th, float in)
+{
+ _tThreshold* t = *th;
+
+ if (in >= t->highThresh)
+ {
+ t->currentValue = 1;
+ }
+ else if (in <= t->lowThresh)
+ {
+ t->currentValue = 0;
+ }
+
+ return t->currentValue;
+}
+
+void tThreshold_setLow(tThreshold* const th, float low)
+{
+ _tThreshold* t = *th;
+
+ t->lowThresh = low;
+}
+
+void tThreshold_setHigh(tThreshold* const th, float high)
+{
+ _tThreshold* t = *th;
+
+ t->highThresh = high;
+}
--- /dev/null
+++ b/leaf/Src/leaf-effects.c
@@ -1,0 +1,1853 @@
+/*==============================================================================
+
+ leaf-vocoder.c
+ Created: 20 Jan 2017 12:01:54pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-effects.c"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-effects.h"
+#include "../leaf.h"
+
+#endif
+
+
+
+//============================================================================================================
+// TALKBOX
+//============================================================================================================
+
+//LPC vocoder adapted from MDA's excellent open source talkbox plugin code
+void tTalkbox_init(tTalkbox* const voc, int bufsize)
+{
+
+ _tTalkbox* v = *voc = (_tTalkbox*) leaf_alloc(sizeof(_tTalkbox));
+
+ v->param[0] = 0.5f; //wet
+ v->param[1] = 0.0f; //dry
+ v->param[2] = 0; // Swap
+ v->param[3] = 1.0f; //quality
+ v->warpFactor = 0.0f;
+ v->warpOn = 0;
+ v->bufsize = bufsize;
+
+ v->car0 = (float*) leaf_alloc(sizeof(float) * v->bufsize);
+ v->car1 = (float*) leaf_alloc(sizeof(float) * v->bufsize);
+ v->window = (float*) leaf_alloc(sizeof(float) * v->bufsize);
+ v->buf0 = (float*) leaf_alloc(sizeof(float) * v->bufsize);
+ v->buf1 = (float*) leaf_alloc(sizeof(float) * v->bufsize);
+
+ tTalkbox_update(voc);
+ tTalkbox_suspend(voc);
+}
+
+void tTalkbox_free(tTalkbox* const voc)
+{
+ _tTalkbox* v = *voc;
+
+ leaf_free((char*)v->buf1);
+ leaf_free((char*)v->buf0);
+ leaf_free((char*)v->window);
+ leaf_free((char*)v->car1);
+ leaf_free((char*)v->car0);
+
+ leaf_free((char*)v);
+}
+
+void tTalkbox_initToPool (tTalkbox* const voc, int bufsize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTalkbox* v = *voc = (_tTalkbox*) mpool_alloc(sizeof(_tTalkbox), m);
+
+ v->param[0] = 0.5f; //wet
+ v->param[1] = 0.0f; //dry
+ v->param[2] = 0; // Swap
+ v->param[3] = 1.0f; //quality
+ v->warpFactor = 0.0f;
+ v->warpOn = 0;
+ v->bufsize = bufsize;
+
+ v->car0 = (float*) mpool_alloc(sizeof(float) * v->bufsize, m);
+ v->car1 = (float*) mpool_alloc(sizeof(float) * v->bufsize, m);
+ v->window = (float*) mpool_alloc(sizeof(float) * v->bufsize, m);
+ v->buf0 = (float*) mpool_alloc(sizeof(float) * v->bufsize, m);
+ v->buf1 = (float*) mpool_alloc(sizeof(float) * v->bufsize, m);
+
+ tTalkbox_update(voc);
+ tTalkbox_suspend(voc);
+}
+
+void tTalkbox_freeFromPool (tTalkbox* const voc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTalkbox* v = *voc;
+
+ mpool_free((char*)v->buf1, m);
+ mpool_free((char*)v->buf0, m);
+ mpool_free((char*)v->window, m);
+ mpool_free((char*)v->car1, m);
+ mpool_free((char*)v->car0, m);
+
+ mpool_free((char*)v, m);
+}
+
+void tTalkbox_update(tTalkbox* const voc) ///update internal parameters...
+{
+ _tTalkbox* v = *voc;
+
+ float fs = leaf.sampleRate;
+ if(fs < 8000.0f) fs = 8000.0f;
+ if(fs > 96000.0f) fs = 96000.0f;
+
+ int32_t n = (int32_t)(0.01633f * fs); //this sets the window time to 16ms if the buffer is large enough. Buffer needs to be at least 784 samples at 48000
+ if(n > v->bufsize) n = v->bufsize;
+
+ //O = (VstInt32)(0.0005f * fs);
+ v->O = (int32_t)((0.0001f + 0.0004f * v->param[3]) * fs);
+
+ if(n != v->N) //recalc hanning window
+ {
+ v->N = n;
+ float dp = TWO_PI / v->N;
+ float p = 0.0f;
+ for(n=0; n<v->N; n++)
+ {
+ v->window[n] = 0.5f - 0.5f * cosf(p);
+ p += dp;
+ }
+ }
+ v->wet = 0.5f * v->param[0] * v->param[0];
+ v->dry = 2.0f * v->param[1] * v->param[1];
+}
+
+void tTalkbox_suspend(tTalkbox* const voc) ///clear any buffers...
+{
+ _tTalkbox* v = *voc;
+
+ v->pos = v->K = 0;
+ v->emphasis = 0.0f;
+ v->FX = 0;
+
+ v->u0 = v->u1 = v->u2 = v->u3 = v->u4 = 0.0f;
+ v->d0 = v->d1 = v->d2 = v->d3 = v->d4 = 0.0f;
+
+ for (int32_t i = 0; i < v->bufsize; i++)
+ {
+ v->buf0[i] = 0;
+ v->buf1[i] = 0;
+ v->car0[i] = 0;
+ v->car1[i] = 0;
+ }
+}
+
+// warped autocorrelation adapted from ten.enegatum@liam's post on music-dsp 2004-04-07 09:37:51
+//find the order-P autocorrelation array, R, for the sequence x of length L and warping of lambda
+//wAutocorrelate(&pfSrc[stIndex],siglen,R,P,0);
+void tTalkbox_warpedAutocorrelate(float * x, unsigned int L, float * R, unsigned int P, float lambda)
+{
+ double dl[L];
+ double Rt[L];
+ double r1,r2,r1t;
+ R[0]=0;
+ Rt[0]=0;
+ r1=0;
+ r2=0;
+ r1t=0;
+ for(int32_t k=0; k<L;k++)
+ {
+ Rt[0] += (double)(x[k]) * (double)(x[k]);
+
+ dl[k]= r1 - (double)(lambda) * (double)(x[k]-r2);
+ r1 = x[k];
+ r2 = dl[k];
+ }
+ for(int32_t i=1; i<=P; i++)
+ {
+ Rt[i]=0;
+ r1=0;
+ r2=0;
+ for(unsigned int k=0; k<L;k++)
+ {
+ Rt[i] += (double) (dl[k]) * (double)(x[k]);
+
+ r1t = dl[k];
+ dl[k]= r1 - (double)(lambda) * (double)(r1t-r2);
+ r1 = r1t;
+ r2 = dl[k];
+ }
+ }
+ for(int32_t i=0; i<=P; i++)
+ {
+ R[i]=(float)(Rt[i]);
+ }
+
+}
+
+
+
+#define ORD_MAX 35 // Was 100.
+// order is defined by the set_quality function.
+// it's set to max out at 0.0005 of sample rate (if you don't go above 1.0f in the quality setting) == at 48000 that's 24.
+// -JS
+void tTalkbox_lpc(float *buf, float *car, int32_t n, int32_t o, float warp, int warpOn)
+{
+ float z[ORD_MAX], r[ORD_MAX], k[ORD_MAX], G, x;
+ int32_t i, j, nn=n;
+
+ if (warpOn == 0)
+ {
+ for(j=0; j<=o; j++, nn--) //buf[] is already emphasized and windowed
+ {
+ z[j] = r[j] = 0.0f;
+ for(i=0; i<nn; i++) r[j] += buf[i] * buf[i+j]; //autocorrelation
+ }
+ }
+ else
+ {
+ for(j=0; j<=o; j++, nn--) //buf[] is already emphasized and windowed
+ {
+ z[j] = r[j] = 0.0f;
+ }
+ tTalkbox_warpedAutocorrelate(buf, n, r, o, warp);
+ }
+
+ r[0] *= 1.001f; //stability fix
+
+ float min = 0.00001f;
+ if(r[0] < min) { for(i=0; i<n; i++) buf[i] = 0.0f; return; }
+
+ tTalkbox_lpcDurbin(r, o, k, &G); //calc reflection coeffs
+
+ //this is for stability to keep reflection coefficients inside the unit circle
+ //but in Harma's papers I've seen 0.998. just needs to be less than 1 it seems but maybe some wiggle room to avoid instability from floating point precision -JS
+ for(i=0; i<=o; i++)
+ {
+ if(k[i] > 0.995f) k[i] = 0.995f; else if(k[i] < -0.995f) k[i] = -.995f;
+ }
+
+ for(i=0; i<n; i++)
+ {
+ x = G * car[i];
+ for(j=o; j>0; j--) //lattice filter
+ {
+ x -= k[j] * z[j-1];
+ z[j] = z[j-1] + k[j] * x;
+ }
+ buf[i] = z[0] = x; //output buf[] will be windowed elsewhere
+ }
+}
+
+
+void tTalkbox_lpcDurbin(float *r, int p, float *k, float *g)
+{
+ int i, j;
+ float a[ORD_MAX], at[ORD_MAX], e=r[0];
+
+ for(i=0; i<=p; i++) a[i] = 0.0f; //probably don't need to clear at[] or k[]
+ at[0] = 0.0f;
+ for(i=1; i<=p; i++)
+ {
+ k[i] = -r[i];
+
+ for(j=1; j<i; j++)
+ {
+ at[j] = a[j];
+ k[i] -= a[j] * r[i-j];
+ }
+ if(fabs(e) < 1.0e-20f) { e = 0.0f; break; }
+ k[i] /= e;
+
+ a[i] = k[i];
+ for(j=1; j<i; j++) a[j] = at[j] + k[i] * at[i-j];
+
+ e *= 1.0f - k[i] * k[i];
+ }
+
+ if(e < 1.0e-20f) e = 0.0f;
+ *g = sqrtf(e);
+}
+
+float tTalkbox_tick(tTalkbox* const voc, float synth, float voice)
+{
+ _tTalkbox* v = *voc;
+
+ int32_t p0=v->pos, p1 = (v->pos + v->N/2) % v->N;
+ float e=v->emphasis, w, o, x, fx=v->FX;
+ float p, q, h0=0.3f, h1=0.77f;
+
+ o = voice;
+ x = synth;
+
+
+
+ p = v->d0 + h0 * x; v->d0 = v->d1; v->d1 = x - h0 * p;
+ q = v->d2 + h1 * v->d4; v->d2 = v->d3; v->d3 = v->d4 - h1 * q;
+ v->d4 = x;
+ x = p + q;
+
+ if(v->K++)
+ {
+ v->K = 0;
+
+ v->car0[p0] = v->car1[p1] = x; //carrier input
+
+ x = o - e; e = o; //6dB/oct pre-emphasis
+
+ w = v->window[p0]; fx = v->buf0[p0] * w; v->buf0[p0] = x * w; //50% overlapping hanning windows
+ if(++p0 >= v->N) { tTalkbox_lpc(v->buf0, v->car0, v->N, v->O, v->warpFactor, v->warpOn); p0 = 0; }
+
+ w = 1.0f - w; fx += v->buf1[p1] * w; v->buf1[p1] = x * w;
+ if(++p1 >= v->N) { tTalkbox_lpc(v->buf1, v->car1, v->N, v->O, v->warpFactor, v->warpOn); p1 = 0; }
+ }
+
+ p = v->u0 + h0 * fx; v->u0 = v->u1; v->u1 = fx - h0 * p;
+ q = v->u2 + h1 * v->u4; v->u2 = v->u3; v->u3 = v->u4 - h1 * q;
+ v->u4 = fx;
+ x = p + q;
+
+ o = x;
+
+ v->emphasis = e;
+ v->pos = p0;
+ v->FX = fx;
+
+
+ return o;
+}
+
+void tTalkbox_setQuality(tTalkbox* const voc, float quality)
+{
+ _tTalkbox* v = *voc;
+
+ v->param[3] = quality;
+ v->O = (int32_t)((0.0001f + 0.0004f * v->param[3]) * leaf.sampleRate);
+ if (v->O >= ORD_MAX)
+ {
+ v->O = ORD_MAX-1;
+ }
+}
+
+void tTalkbox_setWarpFactor(tTalkbox* const voc, float warpFactor)
+{
+ _tTalkbox* v = *voc;
+
+ v->warpFactor = warpFactor;
+}
+
+void tTalkbox_setWarpOn(tTalkbox* const voc, float warpOn)
+{
+ _tTalkbox* v = *voc;
+
+ v->warpOn = warpOn;
+}
+
+
+//============================================================================================================
+// VOCODER
+//============================================================================================================
+
+void tVocoder_init (tVocoder* const voc)
+{
+ _tVocoder* v = *voc = (_tVocoder*) leaf_alloc(sizeof(_tVocoder));
+
+ v->param[0] = 0.33f; //input select
+ v->param[1] = 0.50f; //output dB
+ v->param[2] = 0.40f; //hi thru
+ v->param[3] = 0.40f; //hi band
+ v->param[4] = 0.16f; //envelope
+ v->param[5] = 0.55f; //filter q
+ v->param[6] = 0.6667f;//freq range
+ v->param[7] = 0.33f; //num bands
+
+ tVocoder_update(voc);
+}
+
+void tVocoder_free (tVocoder* const voc)
+{
+ _tVocoder* v = *voc;
+
+ leaf_free((char*)v);
+}
+
+void tVocoder_initToPool (tVocoder* const voc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tVocoder* v = *voc = (_tVocoder*) mpool_alloc(sizeof(_tVocoder), m);
+
+ v->param[0] = 0.33f; //input select
+ v->param[1] = 0.50f; //output dB
+ v->param[2] = 0.40f; //hi thru
+ v->param[3] = 0.40f; //hi band
+ v->param[4] = 0.16f; //envelope
+ v->param[5] = 0.55f; //filter q
+ v->param[6] = 0.6667f;//freq range
+ v->param[7] = 0.33f; //num bands
+
+ tVocoder_update(voc);
+}
+
+void tVocoder_freeFromPool (tVocoder* const voc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tVocoder* v = *voc;
+
+ mpool_free((char*)v, m);
+}
+
+void tVocoder_update (tVocoder* const voc)
+{
+ _tVocoder* v = *voc;
+
+ float tpofs = 6.2831853f * leaf.invSampleRate;
+
+ float rr, th, re;
+
+ float sh;
+
+ int32_t i;
+
+ v->gain = (float)pow(10.0f, 2.0f * v->param[1] - 3.0f * v->param[5] - 2.0f);
+
+ v->thru = (float)pow(10.0f, 0.5f + 2.0f * v->param[1]);
+ v->high = v->param[3] * v->param[3] * v->param[3] * v->thru;
+ v->thru *= v->param[2] * v->param[2] * v->param[2];
+
+ if(v->param[7]<0.5f)
+ {
+ v->nbnd=8;
+ re=0.003f;
+ v->f[1][2] = 3000.0f;
+ v->f[2][2] = 2200.0f;
+ v->f[3][2] = 1500.0f;
+ v->f[4][2] = 1080.0f;
+ v->f[5][2] = 700.0f;
+ v->f[6][2] = 390.0f;
+ v->f[7][2] = 190.0f;
+ }
+ else
+ {
+ v->nbnd=16;
+ re=0.0015f;
+ v->f[ 1][2] = 5000.0f; //+1000
+ v->f[ 2][2] = 4000.0f; //+750
+ v->f[ 3][2] = 3250.0f; //+500
+ v->f[ 4][2] = 2750.0f; //+450
+ v->f[ 5][2] = 2300.0f; //+300
+ v->f[ 6][2] = 2000.0f; //+250
+ v->f[ 7][2] = 1750.0f; //+250
+ v->f[ 8][2] = 1500.0f; //+250
+ v->f[ 9][2] = 1250.0f; //+250
+ v->f[10][2] = 1000.0f; //+250
+ v->f[11][2] = 750.0f; //+210
+ v->f[12][2] = 540.0f; //+190
+ v->f[13][2] = 350.0f; //+155
+ v->f[14][2] = 195.0f; //+100
+ v->f[15][2] = 95.0f;
+ }
+
+ if(v->param[4]<0.05f) //freeze
+ {
+ for(i=0;i<v->nbnd;i++) v->f[i][12]=0.0f;
+ }
+ else
+ {
+ v->f[0][12] = (float)pow(10.0, -1.7 - 2.7f * v->param[4]); //envelope speed
+
+ rr = 0.022f / (float)v->nbnd; //minimum proportional to frequency to stop distortion
+ for(i=1;i<v->nbnd;i++)
+ {
+ v->f[i][12] = (float)(0.025 - rr * (double)i);
+ if(v->f[0][12] < v->f[i][12]) v->f[i][12] = v->f[0][12];
+ }
+ v->f[0][12] = 0.5f * v->f[0][12]; //only top band is at full rate
+ }
+
+ rr = 1.0 - pow(10.0f, -1.0f - 1.2f * v->param[5]);
+ sh = (float)pow(2.0f, 3.0f * v->param[6] - 1.0f); //filter bank range shift
+
+ for(i=1;i<v->nbnd;i++)
+ {
+ v->f[i][2] *= sh;
+ th = acos((2.0 * rr * cos(tpofs * v->f[i][2])) / (1.0 + rr * rr));
+ v->f[i][0] = (float)(2.0 * rr * cos(th)); //a0
+ v->f[i][1] = (float)(-rr * rr); //a1
+ //was .98
+ v->f[i][2] *= 0.96f; //shift 2nd stage slightly to stop high resonance peaks
+ th = acos((2.0 * rr * cos(tpofs * v->f[i][2])) / (1.0 + rr * rr));
+ v->f[i][2] = (float)(2.0 * rr * cos(th));
+ }
+}
+
+float tVocoder_tick (tVocoder* const voc, float synth, float voice)
+{
+ _tVocoder* v = *voc;
+
+ float a, b, o=0.0f, aa, bb, oo = v->kout, g = v->gain, ht = v->thru, hh = v->high, tmp;
+ uint32_t i, k = v->kval, nb = v->nbnd;
+
+ a = voice; //speech
+ b = synth; //synth
+
+ tmp = a - v->f[0][7]; //integrate modulator for HF band and filter bank pre-emphasis
+ v->f[0][7] = a;
+ a = tmp;
+
+ if(tmp<0.0f) tmp = -tmp;
+ v->f[0][11] -= v->f[0][12] * (v->f[0][11] - tmp); //high band envelope
+ o = v->f[0][11] * (ht * a + hh * (b - v->f[0][3])); //high band + high thru
+
+ v->f[0][3] = b; //integrate carrier for HF band
+
+ if(++k & 0x1) //this block runs at half sample rate
+ {
+ oo = 0.0f;
+ aa = a + v->f[0][9] - v->f[0][8] - v->f[0][8]; //apply zeros here instead of in each reson
+ v->f[0][9] = v->f[0][8]; v->f[0][8] = a;
+ bb = b + v->f[0][5] - v->f[0][4] - v->f[0][4];
+ v->f[0][5] = v->f[0][4]; v->f[0][4] = b;
+
+ for(i=1; i<nb; i++) //filter bank: 4th-order band pass
+ {
+ tmp = v->f[i][0] * v->f[i][3] + v->f[i][1] * v->f[i][4] + bb;
+ v->f[i][4] = v->f[i][3];
+ v->f[i][3] = tmp;
+ tmp += v->f[i][2] * v->f[i][5] + v->f[i][1] * v->f[i][6];
+ v->f[i][6] = v->f[i][5];
+ v->f[i][5] = tmp;
+
+ tmp = v->f[i][0] * v->f[i][7] + v->f[i][1] * v->f[i][8] + aa;
+ v->f[i][8] = v->f[i][7];
+ v->f[i][7] = tmp;
+ tmp += v->f[i][2] * v->f[i][9] + v->f[i][1] * v->f[i][10];
+ v->f[i][10] = v->f[i][9];
+ v->f[i][9] = tmp;
+
+ if(tmp<0.0f) tmp = -tmp;
+ v->f[i][11] -= v->f[i][12] * (v->f[i][11] - tmp);
+ oo += v->f[i][5] * v->f[i][11];
+ }
+ }
+ o += oo * g; //effect of interpolating back up to Fs would be minimal (aliasing >16kHz)
+
+ v->kout = oo;
+ v->kval = k & 0x1;
+ if(fabs(v->f[0][11])<1.0e-10) v->f[0][11] = 0.0f; //catch HF envelope denormal
+
+ for(i=1;i<nb;i++)
+ if(fabs(v->f[i][3])<1.0e-10 || fabs(v->f[i][7])<1.0e-10)
+ for(k=3; k<12; k++) v->f[i][k] = 0.0f; //catch reson & envelope denormals
+
+ if(fabs(o)>10.0f) tVocoder_suspend(voc); //catch instability
+
+ return o;
+
+}
+
+void tVocoder_suspend (tVocoder* const voc)
+{
+ _tVocoder* v = *voc;
+
+ int32_t i, j;
+
+ for(i=0; i<v->nbnd; i++) for(j=3; j<12; j++) v->f[i][j] = 0.0f; //zero band filters and envelopes
+ v->kout = 0.0f;
+ v->kval = 0;
+}
+
+
+
+/// Glottal Pulse (Rosenberg model)
+
+void tRosenbergGlottalPulse_init (tRosenbergGlottalPulse* const gp)
+{
+ tRosenbergGlottalPulse_initToPool(gp, &leaf.mempool);
+}
+void tRosenbergGlottalPulse_free (tRosenbergGlottalPulse* const gp)
+{
+ tRosenbergGlottalPulse_freeFromPool(gp, &leaf.mempool);
+}
+void tRosenbergGlottalPulse_initToPool (tRosenbergGlottalPulse* const gp, tMempool* const mp)
+{
+
+ _tMempool* m = *mp;
+ _tRosenbergGlottalPulse* g = *gp = (_tRosenbergGlottalPulse*) mpool_alloc(sizeof(_tRosenbergGlottalPulse), m);
+
+ g->phase = 0.0f;
+ g->openLength = 0.0f;
+ g->pulseLength = 0.0f;
+ g->freq = 0.0f;
+ g->inc = 0.0f;
+
+
+}
+void tRosenbergGlottalPulse_freeFromPool (tRosenbergGlottalPulse* const gp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRosenbergGlottalPulse* g = *gp;
+ mpool_free((char*)g, m);
+}
+
+float tRosenbergGlottalPulse_tick (tRosenbergGlottalPulse* const gp)
+{
+ _tRosenbergGlottalPulse* g = *gp;
+
+ float output = 0.0f;
+
+ // Phasor increment
+ g->phase += g->inc;
+ while (g->phase >= 1.0f) g->phase -= 1.0f;
+ while (g->phase < 0.0f) g->phase += 1.0f;
+
+ if (g->phase < g->openLength)
+ {
+ output = 0.5f*(1.0f-cosf(PI * g->phase));
+ }
+
+ else if (g->phase < g->pulseLength)
+ {
+ output = cosf(HALF_PI * (g->phase-g->openLength)/(g->pulseLength-g->openLength));
+ }
+
+ else
+ {
+ output = 0.0f;
+ }
+ return output;
+}
+
+void tRosenbergGlottalPulse_setFreq (tRosenbergGlottalPulse* const gp, float freq)
+{
+ _tRosenbergGlottalPulse* g = *gp;
+ g->freq = freq;
+ g->inc = freq * leaf.invSampleRate;
+}
+
+void tRosenbergGlottalPulse_setOpenLength (tRosenbergGlottalPulse* const gp, float openLength)
+{
+ _tRosenbergGlottalPulse* g = *gp;
+ g->openLength = openLength;
+}
+
+void tRosenbergGlottalPulse_setPulseLength (tRosenbergGlottalPulse* const gp, float pulseLength)
+{
+ _tRosenbergGlottalPulse* g = *gp;
+ g->pulseLength = pulseLength;
+}
+
+
+
+
+//============================================================================================================
+// SOLAD
+//============================================================================================================
+/******************************************************************************/
+/***************** static function declarations *******************************/
+/******************************************************************************/
+
+static void solad_init(_tSOLAD *w);
+static inline float read_sample(_tSOLAD *w, float floatindex);
+static void pitchdown(_tSOLAD *w, float *out);
+static void pitchup(_tSOLAD *w, float *out);
+
+/******************************************************************************/
+/***************** public access functions ************************************/
+/******************************************************************************/
+
+// init
+void tSOLAD_init(tSOLAD* const wp)
+{
+ _tSOLAD* w = *wp = (_tSOLAD*) leaf_calloc(sizeof(_tSOLAD));
+
+ w->pitchfactor = 1.;
+ w->delaybuf = (float*) leaf_calloc(sizeof(float) * (LOOPSIZE+16));
+
+ solad_init(w);
+}
+
+void tSOLAD_free(tSOLAD* const wp)
+{
+ _tSOLAD* w = *wp;
+
+ leaf_free((char*)w->delaybuf);
+ leaf_free((char*)w);
+}
+
+void tSOLAD_initToPool (tSOLAD* const wp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+
+ _tSOLAD* w = *wp = (_tSOLAD*) mpool_calloc(sizeof(_tSOLAD), m);
+
+ w->pitchfactor = 1.;
+ w->delaybuf = (float*) mpool_calloc(sizeof(float) * (LOOPSIZE+16), m);
+
+ solad_init(w);
+}
+
+void tSOLAD_freeFromPool (tSOLAD* const wp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSOLAD* w = *wp;
+
+ mpool_free((char*)w->delaybuf, m);
+ mpool_free((char*)w, m);
+}
+
+// send one block of input samples, receive one block of output samples
+void tSOLAD_ioSamples(tSOLAD* const wp, float* in, float* out, int blocksize)
+{
+ _tSOLAD* w = *wp;
+
+ int i = w->timeindex;
+ int n = w->blocksize = blocksize;
+
+ if(!i) w->delaybuf[LOOPSIZE] = in[0]; // copy one sample for interpolation
+ while(n--) w->delaybuf[i++] = *in++; // copy one input block to delay buffer
+
+ if(w->pitchfactor > 1) pitchup(w, out);
+ else pitchdown(w, out);
+
+ w->timeindex += blocksize;
+ w->timeindex &= LOOPMASK;
+}
+
+// set periodicity analysis data
+void tSOLAD_setPeriod(tSOLAD* const wp, float period)
+{
+ _tSOLAD* w = *wp;
+
+ if(period > MAXPERIOD) period = MAXPERIOD;
+ if(period > MINPERIOD) w->period = period; // ignore period when too small
+}
+
+// set pitch factor between 0.25 and 4
+void tSOLAD_setPitchFactor(tSOLAD* const wp, float pitchfactor)
+{
+ _tSOLAD* w = *wp;
+
+ if (pitchfactor <= 0.0f) return;
+ w->pitchfactor = pitchfactor;
+}
+
+// force readpointer lag
+void tSOLAD_setReadLag(tSOLAD* const wp, float readlag)
+{
+ _tSOLAD* w = *wp;
+
+ if(readlag < 0) readlag = 0;
+ if(readlag < w->readlag) // do not jump backward, only forward
+ {
+ w->jump = w->readlag - readlag;
+ w->readlag = readlag;
+ w->xfadelength = readlag;
+ w->xfadevalue = 1;
+ }
+}
+
+// reset state variables
+void tSOLAD_resetState(tSOLAD* const wp)
+{
+ _tSOLAD* w = *wp;
+
+ int n = LOOPSIZE + 1;
+ float *buf = w->delaybuf;
+
+ while(n--) *buf++ = 0;
+ solad_init(w);
+}
+
+/******************************************************************************/
+/******************** private procedures **************************************/
+/******************************************************************************/
+
+/*
+ Function pitchdown() is called to read samples from the delay buffer when pitch
+ factor is between 0.25 and 1. The read pointer lags behind because of the slowed
+ down speed, and it must jump forward towards the write pointer soon as there is
+ sufficient space to jump. That is, if there is at least one period of the input
+ signal between read pointer and write pointer. When short periods follow up on
+ long periods, the read pointer may have space to jump over more than one period
+ lenghts. Jump length must be [periodlength ^ 2] in any case.
+
+ A linear crossfade function joins the jump-from point with the jump-to point.
+ The crossfade must be completed before another read pointer jump is allowed.
+ Length of the crossfade function is stored as a number of samples in terms of
+ the input sample rate. This length is dynamically translated
+ to a crossfade length expressed in output reading rate, according to pitch
+ factor which can change before the crossfade is completed. Crossfade length does
+ not cover an invariable length in periods for all pitch transposition factors.
+ For pitch factors from 0.5 till 1, crossfade length is stretched in the
+ output just as much as the signal itself, as crossfade speed is set to equal
+ pitch factor. For pitch factors below 0.5, the read pointer wants to jump
+ forward before one period is read, therefore the crossfade length as expressed
+ in output periods must be shorter. Crossfade speed is set to [1 - pitchfactor]
+ for those cases. Pitch factor 0.5 is the natural switch point between crossfade
+ speeds [pitchfactor] and [1 - pitchfactor] because 0.5 == 1 - 0.5. The crossfade
+ speed modification for pitch factors below 0.5 also means that much of the
+ original signal content will be skipped.
+ */
+
+
+static void pitchdown(_tSOLAD* const w, float *out)
+{
+ int n = w->blocksize;
+ float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values!
+ float pitchfactor = w->pitchfactor;
+ float period = w->period;
+ float readlag = w->readlag;
+ float readlagstep = 1 - pitchfactor;
+ float jump = w->jump;
+ float xfadevalue = w->xfadevalue;
+ float xfadelength = w->xfadelength;
+ float xfadespeed, xfadestep, readindex, outputsample;
+
+ if(pitchfactor > 0.5) xfadespeed = pitchfactor;
+ else xfadespeed = 1 - pitchfactor;
+ xfadestep = xfadespeed / xfadelength;
+
+ while(n--)
+ {
+ if(readlag > period) // check if read pointer may jump forward...
+ {
+ if(xfadevalue <= 0) // ...but do not interrupt crossfade
+ {
+ jump = period; // jump forward
+ while((jump * 2) < readlag) jump *= 2; // use available space
+ readlag -= jump; // reduce read pointer lag
+ xfadevalue = 1; // start crossfade
+ xfadelength = period - 1;
+ xfadestep = xfadespeed / xfadelength;
+ }
+ }
+
+ readindex = refindex - readlag;
+ outputsample = read_sample(w, readindex);
+
+ if(xfadevalue > 0)
+ {
+ outputsample *= (1 - xfadevalue); // fadein
+ outputsample += read_sample(w, readindex - jump) * xfadevalue; // fadeout
+ xfadevalue -= xfadestep;
+ }
+
+ *out++ = outputsample;
+ refindex += 1;
+ readlag += readlagstep;
+ }
+
+ w->jump = jump; // state variables
+ w->readlag = readlag;
+ w->xfadevalue = xfadevalue;
+ w->xfadelength = xfadelength;
+}
+
+
+/*
+ Function pitchup() for pitch factors above 1 is more complicated than
+ pitchdown(). The read pointer increments faster than the write pointer and a
+ backward jump must happen in time, reckoning with the crossfade region. The read
+ pointer backward jump length is always one period. In order to minimize the area
+ of signal duplicates, crossfade length is aimed at [period / pitchfactor].
+ This leads to a crossfade speed of [pitchfactor * pitchfactor].
+
+ Some samples for the fade out (but not all of them) must already be in the
+ buffer, otherwise we will run out of input samples before the crossfade is
+ completed. The ratio of past samples and future samples for a crossfade of any
+ length is as follows:
+
+ past samples: xfadelength * (1 - 1 / pitchfactor)
+ future samples: xfadelength * (1 / pitchfactor)
+
+ For example in the case of pitch factor 1.5 this would be:
+
+ past samples: xfadelength * (1 - 1 / 1.5) = xfadelength * 1 / 3
+ future samples: xfadelength * (1 / 1.5) = xfadelength * 2 / 3
+
+ In the case of pitch factor 4 this would be:
+
+ past samples: xfadelength * (1 - 1 / 4) = xfadelength * 3 / 4
+ future samples: xfadelength * (1 / 4) = xfadelength * 1 / 4
+
+ The read pointer lag must therefore preserve a minimum dependent on pitch
+ factor. The minimum is called 'limit' here:
+
+ limit = period * (pitchfactor - 1) / pitchfactor * pitchfactor
+
+ Components of this expression are combined to reuse them in operations, while
+ (pitchfactor - 1) is changed to (pitchfactor - 0.99) to avoid numerical
+ resolution issues for pitch factors slightly above 1:
+
+ xfadespeed = pitchfactor * pitchfactor
+ limitfactor = (pitchfactor - 0.99) / xfadespeed
+ limit = period * limitfactor
+
+ When read lag is smaller than this limit, the read pointer must preferably
+ jump backward, unless a previous crossfade is not yet completed. Crossfades must
+ preferably be completed, unless the read pointer lag becomes smaller than zero.
+ With fluctuating period lengths and pitch factors, the readpointer lag limit may
+ change from one input block to the next in such a way that the actual lag is
+ suddenly much smaller than the limit, and the intended crossfade length can not
+ be applied. Therefore the crossfade length is simply calculated from the
+ available amount of samples for all cases, like so:
+
+ xfadelength = readlag / limitfactor
+
+ For most occurrences, this will amount to a crossfade length reduced to
+ [period / pitchfactor] in the output for pitch factors above 1, while in some
+ cases it will be considerably shorter. Fortunately, an incidental aberration of
+ the intended crossfade length hardly ever creates an audible artifact. The
+ reason to specify preferred crossfade length according to pitch factor is to
+ minimize the impression of echoes without sacrificing too much of the signal
+ content. The readpointer jump length remains one period in any case.
+
+ Sometimes, the input signal periodicity may decrease substantially between one
+ signal block and the next. In such cases it may be possible for the read pointer
+ to jump forward and reduce latency. For every signal block, a check on this
+ possibility is done. A previous crossfade must be completed before a forward
+ jump is allowed.
+ */
+static void pitchup(_tSOLAD* const w, float *out)
+{
+ int n = w->blocksize;
+ float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values
+ float pitchfactor = w->pitchfactor;
+ float period = w->period;
+ float readlag = w->readlag;
+ float jump = w->jump;
+ float xfadevalue = w->xfadevalue;
+ float xfadelength = w->xfadelength;
+
+ float readlagstep = pitchfactor - 1;
+ float xfadespeed = pitchfactor * pitchfactor;
+ float xfadestep = xfadespeed / xfadelength;
+ float limitfactor = (pitchfactor - (float)0.99) / xfadespeed;
+ float limit = period * limitfactor;
+ float readindex, outputsample;
+
+ if((readlag > (period + 2 * limit)) & (xfadevalue < 0))
+ {
+ jump = period; // jump forward
+ while((jump * 2) < (readlag - 2 * limit)) jump *= 2; // use available space
+ readlag -= jump; // reduce read pointer lag
+ xfadevalue = 1; // start crossfade
+ xfadelength = period - 1;
+ xfadestep = xfadespeed / xfadelength;
+ }
+
+ while(n--)
+ {
+ if(readlag < limit) // check if read pointer should jump backward...
+ {
+ if((xfadevalue < 0) | (readlag < 0)) // ...but try not to interrupt crossfade
+ {
+ xfadelength = readlag / limitfactor;
+ if(xfadelength < 1) xfadelength = 1;
+ xfadestep = xfadespeed / xfadelength;
+
+ jump = -period; // jump backward
+ readlag += period; // increase read pointer lag
+ xfadevalue = 1; // start crossfade
+ }
+ }
+
+ readindex = refindex - readlag;
+ outputsample = read_sample(w, readindex);
+
+ if(xfadevalue > 0)
+ {
+ outputsample *= (1 - xfadevalue);
+ outputsample += read_sample(w, readindex - jump) * xfadevalue;
+ xfadevalue -= xfadestep;
+ }
+
+ *out++ = outputsample;
+ refindex += 1;
+ readlag -= readlagstep;
+ }
+
+ w->readlag = readlag; // state variables
+ w->jump = jump;
+ w->xfadelength = xfadelength;
+ w->xfadevalue = xfadevalue;
+}
+
+// read one sample from delay buffer, with linear interpolation
+static inline float read_sample(_tSOLAD* const w, float floatindex)
+{
+ int index = (int)floatindex;
+ float fraction = floatindex - (float)index;
+ float *buf = w->delaybuf;
+ index &= LOOPMASK;
+
+ return (buf[index] + (fraction * (buf[index+1] - buf[index])));
+}
+
+static void solad_init(_tSOLAD* const w)
+{
+ w->timeindex = 0;
+ w->xfadevalue = -1;
+ w->period = INITPERIOD;
+ w->readlag = INITPERIOD;
+ w->blocksize = INITPERIOD;
+}
+
+//============================================================================================================
+// PITCHSHIFT
+//============================================================================================================
+
+static int pitchshift_attackdetect(_tPitchShift* ps)
+{
+ float envout;
+
+ _tPeriodDetection* p = *ps->p;
+
+ envout = tEnvPD_tick(&p->env);
+
+ if (envout >= 1.0f)
+ {
+ p->lastmax = p->max;
+ if (envout > p->max)
+ {
+ p->max = envout;
+ }
+ else
+ {
+ p->deltamax = envout - p->max;
+ p->max = p->max * ps->radius;
+ }
+ p->deltamax = p->max - p->lastmax;
+ }
+
+ p->fba = p->fba ? (p->fba - 1) : 0;
+
+ return (p->fba == 0 && (p->max > 60 && p->deltamax > 6)) ? 1 : 0;
+}
+
+void tPitchShift_init (tPitchShift* const psr, tPeriodDetection* pd, float* out, int bufSize)
+{
+ _tPitchShift* ps = *psr = (_tPitchShift*) leaf_calloc(sizeof(_tPitchShift));
+ _tPeriodDetection* p = *pd;
+
+ ps->p = pd;
+
+ ps->outBuffer = out;
+ ps->bufSize = bufSize;
+ ps->frameSize = p->frameSize;
+ ps->framesPerBuffer = ps->bufSize / ps->frameSize;
+ ps->curBlock = 1;
+ ps->lastBlock = 0;
+ ps->index = 0;
+ ps->pitchFactor = 1.0f;
+
+ tSOLAD_init(&ps->sola);
+
+ tHighpass_init(&ps->hp, HPFREQ);
+
+ tSOLAD_setPitchFactor(&ps->sola, DEFPITCHRATIO);
+}
+
+void tPitchShift_free(tPitchShift* const psr)
+{
+ _tPitchShift* ps = *psr;
+
+ tSOLAD_free(&ps->sola);
+ tHighpass_free(&ps->hp);
+ leaf_free((char*)ps);
+}
+
+void tPitchShift_initToPool (tPitchShift* const psr, tPeriodDetection* const pd, float* out, int bufSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+
+ _tPitchShift* ps = *psr = (_tPitchShift*) mpool_calloc(sizeof(_tPitchShift), m);
+
+ _tPeriodDetection* p = *pd;
+
+ ps->p = pd;
+
+ ps->outBuffer = out;
+ ps->bufSize = bufSize;
+ ps->frameSize = p->frameSize;
+ ps->framesPerBuffer = ps->bufSize / ps->frameSize;
+ ps->curBlock = 1;
+ ps->lastBlock = 0;
+ ps->index = 0;
+ ps->pitchFactor = 1.0f;
+
+ tSOLAD_initToPool(&ps->sola, mp);
+
+ tHighpass_initToPool(&ps->hp, HPFREQ, mp);
+
+ tSOLAD_setPitchFactor(&ps->sola, DEFPITCHRATIO);
+}
+
+void tPitchShift_freeFromPool (tPitchShift* const psr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPitchShift* ps = *psr;
+
+ tSOLAD_freeFromPool(&ps->sola, mp);
+ tHighpass_freeFromPool(&ps->hp, mp);
+ mpool_free((char*)ps, m);
+}
+
+void tPitchShift_setPitchFactor(tPitchShift* psr, float pf)
+{
+ _tPitchShift* ps = *psr;
+
+ ps->pitchFactor = pf;
+}
+
+float tPitchShift_shift (tPitchShift* psr)
+{
+ _tPitchShift* ps = *psr;
+ _tPeriodDetection* p = *ps->p;
+
+ float period, out;
+ int i, iLast;
+
+ i = p->i;
+ iLast = p->iLast;
+
+ out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
+
+ if (p->indexstore >= ps->frameSize)
+ {
+ period = tPeriodDetection_getPeriod(&p);
+
+ if(pitchshift_attackdetect(ps) == 1)
+ {
+ p->fba = 5;
+ tSOLAD_setReadLag(&ps->sola, p->windowSize);
+ }
+
+ tSOLAD_setPeriod(&ps->sola, period);
+ tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
+
+ tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
+ }
+
+ return out;
+}
+
+float tPitchShift_shiftToFreq (tPitchShift* psr, float freq)
+{
+ _tPitchShift* ps = *psr;
+ _tPeriodDetection* p = *ps->p;
+
+ float period, out;
+ int i, iLast;
+
+ i = p->i;
+ iLast = p->iLast;
+
+ out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
+
+ if (p->indexstore >= ps->frameSize)
+ {
+ period = tPeriodDetection_getPeriod(&p);
+
+ if(pitchshift_attackdetect(ps) == 1)
+ {
+ p->fba = 5;
+ tSOLAD_setReadLag(&ps->sola, p->windowSize);
+ }
+
+ tSOLAD_setPeriod(&ps->sola, period);
+
+ if (period != 0) ps->pitchFactor = period*freq*leaf.invSampleRate;
+ else ps->pitchFactor = 1.0f;
+
+ tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
+
+ tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
+ }
+ return out;
+}
+
+float tPitchShift_shiftToFunc (tPitchShift* psr, float (*fun)(float))
+{
+ _tPitchShift* ps = *psr;
+ _tPeriodDetection* p = *ps->p;
+
+ float period, out;
+ int i, iLast;
+
+ i = p->i;
+ iLast = p->iLast;
+
+ out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
+
+ if (p->indexstore >= ps->frameSize)
+ {
+ period = tPeriodDetection_getPeriod(&p);
+
+ if(pitchshift_attackdetect(ps) == 1)
+ {
+ p->fba = 5;
+ tSOLAD_setReadLag(&ps->sola, p->windowSize);
+ }
+
+ tSOLAD_setPeriod(&ps->sola, period);
+
+ ps->pitchFactor = period/fun(period);
+ tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
+
+ tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
+
+ ps->curBlock++;
+ if (ps->curBlock >= p->framesPerBuffer) ps->curBlock = 0;
+ ps->lastBlock++;
+ if (ps->lastBlock >= ps->framesPerBuffer) ps->lastBlock = 0;
+ }
+
+ return out;
+}
+
+//============================================================================================================
+// RETUNE
+//============================================================================================================
+
+void tRetune_init(tRetune* const rt, int numVoices, int bufSize, int frameSize)
+{
+ tRetune_initToPool(rt, numVoices, bufSize, frameSize, &leaf.mempool);
+}
+
+void tRetune_free(tRetune* const rt)
+{
+ tRetune_freeFromPool(rt, &leaf.mempool);
+}
+
+void tRetune_initToPool (tRetune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRetune* r = *rt = (_tRetune*) mpool_alloc(sizeof(_tRetune), m);
+
+ r->bufSize = bufSize;
+ r->frameSize = frameSize;
+ r->numVoices = numVoices;
+
+ r->inBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
+ r->outBuffers = (float**) mpool_calloc(sizeof(float*) * r->numVoices, m);
+
+ r->hopSize = DEFHOPSIZE;
+ r->windowSize = DEFWINDOWSIZE;
+ r->fba = FBA;
+ tRetune_setTimeConstant(rt, DEFTIMECONSTANT);
+
+ r->inputPeriod = 0.0f;
+
+ r->ps = (tPitchShift*) mpool_calloc(sizeof(tPitchShift) * r->numVoices, m);
+ r->pitchFactor = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
+ r->tickOutput = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->outBuffers[i] = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
+ }
+
+ tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
+ }
+}
+
+void tRetune_freeFromPool (tRetune* const rt, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRetune* r = *rt;
+
+ tPeriodDetection_freeFromPool(&r->pd, mp);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_freeFromPool(&r->ps[i], mp);
+ mpool_free((char*)r->outBuffers[i], m);
+ }
+ mpool_free((char*)r->tickOutput, m);
+ mpool_free((char*)r->pitchFactor, m);
+ mpool_free((char*)r->ps, m);
+ mpool_free((char*)r->inBuffer, m);
+ mpool_free((char*)r->outBuffers, m);
+ mpool_free((char*)r, m);
+}
+
+float* tRetune_tick(tRetune* const rt, float sample)
+{
+ _tRetune* r = *rt;
+
+ r->inputPeriod = tPeriodDetection_tick(&r->pd, sample);
+
+ for (int v = 0; v < r->numVoices; ++v)
+ {
+ r->tickOutput[v] = tPitchShift_shift(&r->ps[v]);
+ }
+
+ return r->tickOutput;
+}
+
+void tRetune_setNumVoices(tRetune* const rt, int numVoices)
+{
+ _tRetune* r = *rt;
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_free(&r->ps[i]);
+ leaf_free((char*)r->outBuffers[i]);
+ }
+ leaf_free((char*)r->tickOutput);
+ leaf_free((char*)r->pitchFactor);
+ leaf_free((char*)r->ps);
+ leaf_free((char*)r->outBuffers);
+
+ r->numVoices = numVoices;
+
+ r->outBuffers = (float**) leaf_alloc(sizeof(float*) * r->numVoices);
+ r->ps = (tPitchShift*) leaf_alloc(sizeof(tPitchShift) * r->numVoices);
+ r->pitchFactor = (float*) leaf_alloc(sizeof(float) * r->numVoices);
+ r->tickOutput = (float*) leaf_alloc(sizeof(float) * r->numVoices);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->outBuffers[i] = (float*) leaf_alloc(sizeof(float) * r->bufSize);
+ tPitchShift_init(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize);
+ }
+}
+
+void tRetune_setPitchFactors(tRetune* const rt, float pf)
+{
+ _tRetune* r = *rt;
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->pitchFactor[i] = pf;
+ tPitchShift_setPitchFactor(&r->ps[i], r->pitchFactor[i]);
+ }
+}
+
+void tRetune_setPitchFactor(tRetune* const rt, float pf, int voice)
+{
+ _tRetune* r = *rt;
+
+ r->pitchFactor[voice] = pf;
+ tPitchShift_setPitchFactor(&r->ps[voice], r->pitchFactor[voice]);
+}
+
+void tRetune_setTimeConstant(tRetune* const rt, float tc)
+{
+ _tRetune* r = *rt;
+
+ r->timeConstant = tc;
+ r->radius = expf(-1000.0f * r->hopSize * leaf.invSampleRate / r->timeConstant);
+}
+
+void tRetune_setHopSize(tRetune* const rt, int hs)
+{
+ _tRetune* r = *rt;
+
+ r->hopSize = hs;
+ tPeriodDetection_setHopSize(&r->pd, r->hopSize);
+}
+
+void tRetune_setWindowSize(tRetune* const rt, int ws)
+{
+ _tRetune* r = *rt;
+
+ r->windowSize = ws;
+ tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
+}
+
+void tRetune_setFidelityThreshold(tRetune* const rt, float threshold)
+{
+ _tRetune* r = *rt;
+
+ tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
+}
+
+float tRetune_getInputPeriod(tRetune* const rt)
+{
+ _tRetune* r = *rt;
+
+ return (r->inputPeriod * leaf.invSampleRate);
+}
+
+float tRetune_getInputFreq(tRetune* const rt)
+{
+ _tRetune* r = *rt;
+
+ return 1.0f/(r->inputPeriod * leaf.invSampleRate);
+}
+
+//============================================================================================================
+// AUTOTUNE
+//============================================================================================================
+
+void tAutotune_init(tAutotune* const rt, int numVoices, int bufSize, int frameSize)
+{
+ tAutotune_initToPool(rt, numVoices, bufSize, frameSize, &leaf.mempool);
+}
+
+void tAutotune_free(tAutotune* const rt)
+{
+ tAutotune_freeFromPool(rt, &leaf.mempool);
+}
+
+void tAutotune_initToPool (tAutotune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAutotune* r = *rt = (_tAutotune*) mpool_alloc(sizeof(_tAutotune), m);
+
+ r->bufSize = bufSize;
+ r->frameSize = frameSize;
+ r->numVoices = numVoices;
+
+ r->inBuffer = (float*) mpool_alloc(sizeof(float) * r->bufSize, m);
+ r->outBuffers = (float**) mpool_alloc(sizeof(float*) * r->numVoices, m);
+
+ r->hopSize = DEFHOPSIZE;
+ r->windowSize = DEFWINDOWSIZE;
+ r->fba = FBA;
+ tAutotune_setTimeConstant(rt, DEFTIMECONSTANT);
+
+ r->ps = (tPitchShift*) mpool_alloc(sizeof(tPitchShift) * r->numVoices, m);
+ r->freq = (float*) mpool_alloc(sizeof(float) * r->numVoices, m);
+ r->tickOutput = (float*) mpool_alloc(sizeof(float) * r->numVoices, m);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->outBuffers[i] = (float*) mpool_alloc(sizeof(float) * r->bufSize, m);
+ }
+
+ tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
+ }
+
+ r->inputPeriod = 0.0f;
+}
+
+void tAutotune_freeFromPool (tAutotune* const rt, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAutotune* r = *rt;
+
+ tPeriodDetection_freeFromPool(&r->pd, mp);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_freeFromPool(&r->ps[i], mp);
+ mpool_free((char*)r->outBuffers[i], m);
+ }
+ mpool_free((char*)r->tickOutput, m);
+ mpool_free((char*)r->freq, m);
+ mpool_free((char*)r->ps, m);
+ mpool_free((char*)r->inBuffer, m);
+ mpool_free((char*)r->outBuffers, m);
+ mpool_free((char*)r, m);
+}
+
+float* tAutotune_tick(tAutotune* const rt, float sample)
+{
+ _tAutotune* r = *rt;
+
+ float tempPeriod = tPeriodDetection_tick(&r->pd, sample);
+ if (tempPeriod < 1000.0f) //to avoid trying to follow consonants JS
+ {
+ r->inputPeriod = tempPeriod;
+ }
+
+ for (int v = 0; v < r->numVoices; ++v)
+ {
+ r->tickOutput[v] = tPitchShift_shiftToFreq(&r->ps[v], r->freq[v]);
+ }
+
+ return r->tickOutput;
+}
+
+void tAutotune_setNumVoices(tAutotune* const rt, int numVoices)
+{
+ _tAutotune* r = *rt;
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ tPitchShift_free(&r->ps[i]);
+ leaf_free((char*)r->outBuffers[i]);
+ }
+ leaf_free((char*)r->tickOutput);
+ leaf_free((char*)r->freq);
+ leaf_free((char*)r->ps);
+ leaf_free((char*)r->outBuffers);
+
+ r->numVoices = numVoices;
+
+ r->outBuffers = (float**) leaf_alloc(sizeof(float*) * r->numVoices);
+ r->ps = (tPitchShift*) leaf_alloc(sizeof(tPitchShift) * r->numVoices);
+ r->freq = (float*) leaf_alloc(sizeof(float) * r->numVoices);
+ r->tickOutput = (float*) leaf_alloc(sizeof(float) * r->numVoices);
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->outBuffers[i] = (float*) leaf_alloc(sizeof(float) * r->bufSize);
+ tPitchShift_init(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize);
+ }
+}
+
+void tAutotune_setFreqs(tAutotune* const rt, float f)
+{
+ _tAutotune* r = *rt;
+
+ for (int i = 0; i < r->numVoices; ++i)
+ {
+ r->freq[i] = f;
+ }
+}
+
+void tAutotune_setFreq(tAutotune* const rt, float f, int voice)
+{
+ _tAutotune* r = *rt;
+
+ r->freq[voice] = f;
+}
+
+void tAutotune_setTimeConstant(tAutotune* const rt, float tc)
+{
+ _tAutotune* r = *rt;
+
+ r->timeConstant = tc;
+ r->radius = expf(-1000.0f * r->hopSize * leaf.invSampleRate / r->timeConstant);
+}
+
+void tAutotune_setHopSize(tAutotune* const rt, int hs)
+{
+ _tAutotune* r = *rt;
+
+ r->hopSize = hs;
+ tPeriodDetection_setHopSize(&r->pd, r->hopSize);
+}
+
+void tAutotune_setWindowSize(tAutotune* const rt, int ws)
+{
+ _tAutotune* r = *rt;
+
+ r->windowSize = ws;
+ tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
+}
+
+void tAutotune_setFidelityThreshold(tAutotune* const rt, float threshold)
+{
+ _tAutotune* r = *rt;
+
+ tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
+}
+
+void tAutotune_setAlpha (tAutotune* rt, float alpha)
+{
+ _tAutotune* r = *rt;
+ tPeriodDetection_setAlpha(&r->pd, alpha);
+}
+
+void tAutotune_setTolerance (tAutotune* rt, float tolerance)
+{
+ _tAutotune* r = *rt;
+ tPeriodDetection_setTolerance(&r->pd, tolerance);
+}
+
+float tAutotune_getInputPeriod(tAutotune* const rt)
+{
+ _tAutotune* r = *rt;
+
+ return r->inputPeriod;
+}
+
+float tAutotune_getInputFreq(tAutotune* const rt)
+{
+ _tAutotune* r = *rt;
+
+ return 1.0f/r->inputPeriod;
+}
+
+//============================================================================================================
+// FORMANTSHIFTER
+//============================================================================================================
+// algorithm from Tom Baran's autotalent code.
+
+void tFormantShifter_init(tFormantShifter* const fsr, int order)
+{
+ _tFormantShifter* fs = *fsr = (_tFormantShifter*) leaf_alloc(sizeof(_tFormantShifter));
+
+ fs->ford = order;
+ fs->fk = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->fb = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->fc = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->frb = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->frc = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->fsig = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->fsmooth = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->ftvec = (float*) leaf_calloc(sizeof(float) * fs->ford);
+ fs->fbuff = (float*) leaf_calloc(sizeof(float*) * fs->ford);
+
+ fs->falph = powf(0.001f, 40.0f * leaf.invSampleRate);
+ fs->flamb = -(0.8517f*sqrtf(atanf(0.06583f*leaf.sampleRate))-0.1916f);
+ fs->fhp = 0.0f;
+ fs->flp = 0.0f;
+ fs->flpa = powf(0.001f, 10.0f * leaf.invSampleRate);
+ fs->fmute = 1.0f;
+ fs->fmutealph = powf(0.001f, 0.5f * leaf.invSampleRate);
+ fs->cbi = 0;
+ fs->intensity = 1.0f;
+ fs->invIntensity = 1.0f;
+ tHighpass_init(&fs->hp, 10.0f);
+ tHighpass_init(&fs->hp2, 10.0f);
+ tFeedbackLeveler_init(&fs->fbl1, 0.99f, 0.005f, 0.125f, 0);
+ tFeedbackLeveler_init(&fs->fbl2, 0.99f, 0.005f, 0.125f, 0);
+}
+
+void tFormantShifter_free(tFormantShifter* const fsr)
+{
+ _tFormantShifter* fs = *fsr;
+
+ leaf_free((char*)fs->fk);
+ leaf_free((char*)fs->fb);
+ leaf_free((char*)fs->fc);
+ leaf_free((char*)fs->frb);
+ leaf_free((char*)fs->frc);
+ leaf_free((char*)fs->fsig);
+ leaf_free((char*)fs->fsmooth);
+ leaf_free((char*)fs->ftvec);
+ leaf_free((char*)fs->fbuff);
+ tHighpass_free(&fs->hp);
+ tHighpass_free(&fs->hp2);
+ tFeedbackLeveler_free(&fs->fbl1);
+ tFeedbackLeveler_free(&fs->fbl2);
+ leaf_free((char*)fs);
+}
+
+void tFormantShifter_initToPool (tFormantShifter* const fsr, int order, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFormantShifter* fs = *fsr = (_tFormantShifter*) mpool_alloc(sizeof(_tFormantShifter), m);
+
+ fs->ford = order;
+ fs->fk = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->fb = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->fc = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->frb = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->frc = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->fsig = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->fsmooth = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+ fs->ftvec = (float*) mpool_calloc(sizeof(float) * fs->ford, m);
+
+ fs->fbuff = (float*) mpool_calloc(sizeof(float*) * fs->ford, m);
+
+
+ fs->falph = powf(0.001f, 10.0f * leaf.invSampleRate);
+ fs->flamb = -(0.8517f*sqrtf(atanf(0.06583f*leaf.sampleRate))-0.1916f);
+ fs->fhp = 0.0f;
+ fs->flp = 0.0f;
+ fs->flpa = powf(0.001f, 10.0f * leaf.invSampleRate);
+ fs->fmute = 1.0f;
+ fs->fmutealph = powf(0.001f, 1.0f * leaf.invSampleRate);
+ fs->cbi = 0;
+ fs->intensity = 1.0f;
+ fs->invIntensity = 1.0f;
+ tHighpass_initToPool(&fs->hp, 20.0f, mp);
+ tHighpass_initToPool(&fs->hp2, 20.0f, mp);
+ tFeedbackLeveler_initToPool(&fs->fbl1, 0.8f, .005f, 0.125, 1, mp);
+ tFeedbackLeveler_initToPool(&fs->fbl2, 0.8f, .005f, 0.125, 1, mp);
+}
+
+void tFormantShifter_freeFromPool (tFormantShifter* const fsr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFormantShifter* fs = *fsr;
+
+ mpool_free((char*)fs->fk, m);
+ mpool_free((char*)fs->fb, m);
+ mpool_free((char*)fs->fc, m);
+ mpool_free((char*)fs->frb, m);
+ mpool_free((char*)fs->frc, m);
+ mpool_free((char*)fs->fsig, m);
+ mpool_free((char*)fs->fsmooth, m);
+ mpool_free((char*)fs->ftvec, m);
+ mpool_free((char*)fs->fbuff, m);
+ tHighpass_freeFromPool(&fs->hp, mp);
+ tHighpass_freeFromPool(&fs->hp2, mp);
+ tFeedbackLeveler_freeFromPool(&fs->fbl1, mp);
+ tFeedbackLeveler_freeFromPool(&fs->fbl2, mp);
+ mpool_free((char*)fs, m);
+}
+
+float tFormantShifter_tick(tFormantShifter* const fsr, float in)
+{
+ return tFormantShifter_add(fsr, tFormantShifter_remove(fsr, in));
+}
+
+float tFormantShifter_remove(tFormantShifter* const fsr, float in)
+{
+ _tFormantShifter* fs = *fsr;
+ in = tFeedbackLeveler_tick(&fs->fbl1, in);
+ in = tHighpass_tick(&fs->hp, in * fs->intensity);
+
+
+ float fa, fb, fc, foma, falph, ford, flamb, tf, fk;
+
+ ford = fs->ford;
+ falph = fs->falph;
+ foma = (1.0f - falph);
+ flamb = fs->flamb;
+
+ tf = in;
+
+ fa = tf - fs->fhp;
+ fs->fhp = tf;
+ fb = fa;
+ for(int i = 0; i < ford; i++)
+ {
+ fs->fsig[i] = fa*fa*foma + fs->fsig[i]*falph;
+ fc = (fb - fs->fc[i])*flamb + fs->fb[i];
+ fs->fc[i] = fc;
+ fs->fb[i] = fb;
+ fk = fa*fc*foma + fs->fk[i]*falph;
+ fs->fk[i] = fk;
+ tf = fk/(fs->fsig[i] + 0.000001f);
+ tf = tf*foma + fs->fsmooth[i]*falph;
+ fs->fsmooth[i] = tf;
+ fs->fbuff[i] = tf;
+ fb = fc - tf*fa;
+ fa = fa - tf*fc;
+ }
+
+ //return fa * 0.1f;
+ return fa;
+}
+
+float tFormantShifter_add(tFormantShifter* const fsr, float in)
+{
+ _tFormantShifter* fs = *fsr;
+
+ float fa, fb, fc, ford, flpa, flamb, tf, tf2, f0resp, f1resp, frlamb;
+ ford = fs->ford;
+
+ flpa = fs->flpa;
+ flamb = fs->flamb;
+ tf = fs->shiftFactor * (1.0f+flamb)/(1.0f-flamb);
+ frlamb = (tf-1.0f)/(tf+1.0f);
+
+ tf2 = in;
+ fa = 0.0f;
+ fb = fa;
+ for (int i=0; i<ford; i++)
+ {
+ fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
+ tf = fs->fbuff[i];
+ fb = fc - tf*fa;
+ fs->ftvec[i] = tf*fc;
+ fa = fa - fs->ftvec[i];
+ }
+ tf = -fa;
+ for (int i=ford-1; i>=0; i--)
+ {
+ tf = tf + fs->ftvec[i];
+ }
+ f0resp = tf;
+
+ // second time: compute 1-response
+ fa = 1.0f;
+ fb = fa;
+ for (int i=0; i<ford; i++)
+ {
+ fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
+ tf = fs->fbuff[i];
+ fb = fc - tf*fa;
+ fs->ftvec[i] = tf*fc;
+ fa = fa - fs->ftvec[i];
+ }
+ tf = -fa;
+ for (int i=ford-1; i>=0; i--)
+ {
+ tf = tf + fs->ftvec[i];
+ }
+ f1resp = tf;
+
+ // now solve equations for output, based on 0-response and 1-response
+ tf = 2.0f*tf2;
+ tf2 = tf;
+ tf = (1.0f - f1resp + f0resp);
+ if (tf!=0.0f)
+ {
+ tf2 = (tf2 + f0resp) / tf;
+ }
+ else
+ {
+ tf2 = 0.0f;
+ }
+
+ // third time: update delay registers
+ fa = tf2;
+ fb = fa;
+ for (int i=0; i<ford; i++)
+ {
+ fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
+ fs->frc[i] = fc;
+ fs->frb[i] = fb;
+ tf = fs->fbuff[i];
+ fb = fc - tf*fa;
+ fa = fa - tf*fc;
+ }
+ tf = tf2;
+ tf = tf + flpa * fs->flp; // lowpass post-emphasis filter
+ fs->flp = tf;
+
+ // Bring up the gain slowly when formant correction goes from disabled
+ // to enabled, while things stabilize.
+ if (fs->fmute>0.5f)
+ {
+ tf = tf*(fs->fmute - 0.5f)*2.0f;
+ }
+ else
+ {
+ tf = 0.0f;
+ }
+ tf2 = fs->fmutealph;
+ fs->fmute = (1.0f-tf2) + tf2*fs->fmute;
+ // now tf is signal output
+ // ...and we're done messing with formants
+ //tf = tFeedbackLeveler_tick(&fs->fbl2, tf);
+ tf = tHighpass_tick(&fs->hp2, tanhf(tf));
+
+ return tf * fs->invIntensity;
+}
+
+// 1.0f is no change, 2.0f is an octave up, 0.5f is an octave down
+void tFormantShifter_setShiftFactor(tFormantShifter* const fsr, float shiftFactor)
+{
+ _tFormantShifter* fs = *fsr;
+ fs->shiftFactor = shiftFactor;
+}
+
+void tFormantShifter_setIntensity(tFormantShifter* const fsr, float intensity)
+{
+ _tFormantShifter* fs = *fsr;
+
+
+
+ fs->intensity = LEAF_clip(1.0f, intensity, 100.0f);
+
+ // tFeedbackLeveler_setTargetLevel(&fs->fbl1, fs->intensity);
+ //tFeedbackLeveler_setTargetLevel(&fs->fbl2, fs->intensity);
+ //make sure you don't divide by zero, doofies
+ if (fs->intensity != 0.0f)
+ {
+ fs->invIntensity = 1.0f/fs->intensity;
+ }
+ else
+ {
+ fs->invIntensity = 1.0f;
+ }
+
+}
--- /dev/null
+++ b/leaf/Src/leaf-electrical.c
@@ -1,0 +1,551 @@
+/*
+ * leaf-electrical.c
+ *
+ * Created on: Sep 25, 2019
+ * Author: jeffsnyder
+ */
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-electrical.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-electrical.h"
+#include "../leaf.h"
+
+#endif
+
+//==============================================================================
+
+static float get_port_resistance_for_resistor(tWDF* const r);
+static float get_port_resistance_for_capacitor(tWDF* const r);
+static float get_port_resistance_for_inductor(tWDF* const r);
+static float get_port_resistance_for_resistive(tWDF* const r);
+static float get_port_resistance_for_inverter(tWDF* const r);
+static float get_port_resistance_for_series(tWDF* const r);
+static float get_port_resistance_for_parallel(tWDF* const r);
+static float get_port_resistance_for_root(tWDF* const r);
+
+static void set_incident_wave_for_leaf(tWDF* const r, float incident_wave, float input);
+static void set_incident_wave_for_leaf_inverted(tWDF* const r, float incident_wave, float input);
+static void set_incident_wave_for_inverter(tWDF* const r, float incident_wave, float input);
+static void set_incident_wave_for_series(tWDF* const r, float incident_wave, float input);
+static void set_incident_wave_for_parallel(tWDF* const r, float incident_wave, float input);
+
+static float get_reflected_wave_for_resistor(tWDF* const r, float input);
+static float get_reflected_wave_for_capacitor(tWDF* const r, float input);
+static float get_reflected_wave_for_resistive(tWDF* const r, float input);
+static float get_reflected_wave_for_inverter(tWDF* const r, float input);
+static float get_reflected_wave_for_series(tWDF* const r, float input);
+static float get_reflected_wave_for_parallel(tWDF* const r, float input);
+
+static float get_reflected_wave_for_ideal(tWDF* const n, float input, float incident_wave);
+static float get_reflected_wave_for_diode(tWDF* const n, float input, float incident_wave);
+static float get_reflected_wave_for_diode_pair(tWDF* const n, float input, float incident_wave);
+
+static void wdf_init(tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR)
+{
+ _tWDF* r = *wdf;
+
+ r->type = type;
+ r->child_left = rL;
+ r->child_right = rR;
+ r->incident_wave_up = 0.0f;
+ r->incident_wave_left = 0.0f;
+ r->incident_wave_right = 0.0f;
+ r->reflected_wave_up = 0.0f;
+ r->reflected_wave_left = 0.0f;
+ r->reflected_wave_right = 0.0f;
+ r->sample_rate = leaf.sampleRate;
+ r->value = value;
+
+ tWDF* child;
+ if (r->child_left != NULL) child = r->child_left;
+ else child = r->child_right;
+
+ if (r->type == Resistor)
+ {
+ r->port_resistance_up = r->value;
+ r->port_conductance_up = 1.0f / r->value;
+
+ r->get_port_resistance = &get_port_resistance_for_resistor;
+ r->get_reflected_wave_up = &get_reflected_wave_for_resistor;
+ r->set_incident_wave = &set_incident_wave_for_leaf;
+ }
+ else if (r->type == Capacitor)
+ {
+ r->port_conductance_up = r->sample_rate * 2.0f * r->value;
+ r->port_resistance_up = 1.0f / r->port_conductance_up; //based on trapezoidal discretization
+
+ r->get_port_resistance = &get_port_resistance_for_capacitor;
+ r->get_reflected_wave_up = &get_reflected_wave_for_capacitor;
+ r->set_incident_wave = &set_incident_wave_for_leaf;
+ }
+ else if (r->type == Inductor)
+ {
+ r->port_resistance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_port_resistance = &get_port_resistance_for_inductor;
+ r->get_reflected_wave_up = &get_reflected_wave_for_capacitor; // same as capacitor
+ r->set_incident_wave = &set_incident_wave_for_leaf_inverted;
+ }
+ else if (r->type == ResistiveSource)
+ {
+ r->port_resistance_up = r->value;
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_port_resistance = &get_port_resistance_for_resistive;
+ r->get_reflected_wave_up = &get_reflected_wave_for_resistive;
+ r->set_incident_wave = &set_incident_wave_for_leaf;
+ }
+ else if (r->type == Inverter)
+ {
+ r->port_resistance_up = tWDF_getPortResistance(r->child_left);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_port_resistance = &get_port_resistance_for_inverter;
+ r->get_reflected_wave_up = &get_reflected_wave_for_inverter;
+ r->set_incident_wave = &set_incident_wave_for_inverter;
+ }
+ else if (r->type == SeriesAdaptor)
+ {
+ r->port_resistance_left = tWDF_getPortResistance(r->child_left);
+ r->port_resistance_right = tWDF_getPortResistance(r->child_right);
+ r->port_resistance_up = r->port_resistance_left + r->port_resistance_right;
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+ r->port_conductance_left = 1.0f / r->port_resistance_left;
+ r->port_conductance_right = 1.0f / r->port_resistance_right;
+ r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
+
+ r->get_port_resistance = &get_port_resistance_for_series;
+ r->get_reflected_wave_up = &get_reflected_wave_for_series;
+ r->set_incident_wave = &set_incident_wave_for_series;
+ }
+ else if (r->type == ParallelAdaptor)
+ {
+ r->port_resistance_left = tWDF_getPortResistance(r->child_left);
+ r->port_resistance_right = tWDF_getPortResistance(r->child_right);
+ r->port_resistance_up = (r->port_resistance_left * r->port_resistance_right) / (r->port_resistance_left + r->port_resistance_right);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+ r->port_conductance_left = 1.0f / r->port_resistance_left;
+ r->port_conductance_right = 1.0f / r->port_resistance_right;
+ r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
+
+ r->get_port_resistance = &get_port_resistance_for_parallel;
+ r->get_reflected_wave_up = &get_reflected_wave_for_parallel;
+ r->set_incident_wave = &set_incident_wave_for_parallel;
+ }
+ else if (r->type == IdealSource)
+ {
+ r->port_resistance_up = tWDF_getPortResistance(child);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_reflected_wave_down = &get_reflected_wave_for_ideal;
+ r->get_port_resistance = &get_port_resistance_for_root;
+ }
+ else if (r->type == Diode)
+ {
+ r->port_resistance_up = tWDF_getPortResistance(child);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_reflected_wave_down = &get_reflected_wave_for_diode;
+ r->get_port_resistance = &get_port_resistance_for_root;
+ }
+ else if (r->type == DiodePair)
+ {
+ r->port_resistance_up = tWDF_getPortResistance(child);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ r->get_reflected_wave_down = &get_reflected_wave_for_diode_pair;
+ r->get_port_resistance = &get_port_resistance_for_root;
+ }
+}
+//WDF
+void tWDF_init(tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR)
+{
+ *wdf = (_tWDF*) leaf_alloc(sizeof(_tWDF));
+
+ wdf_init(wdf, type, value, rL, rR);
+}
+
+void tWDF_free(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ leaf_free((char*)r);
+}
+
+void tWDF_initToPool (tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ *wdf = (_tWDF*) mpool_alloc(sizeof(_tWDF), m);
+
+ wdf_init(wdf, type, value, rL, rR);
+}
+
+void tWDF_freeFromPool (tWDF* const wdf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tWDF* r = *wdf;
+
+ mpool_free((char*)r, m);
+}
+
+float tWDF_tick(tWDF* const wdf, float sample, tWDF* const outputPoint, uint8_t paramsChanged)
+{
+ _tWDF* r = *wdf;
+
+ tWDF* child;
+ if (r->child_left != NULL) child = r->child_left;
+ else child = r->child_right;
+
+ //step 0 : update port resistances if something changed
+ if (paramsChanged) tWDF_getPortResistance(wdf);
+
+ //step 1 : set inputs to what they should be
+ float input = sample;
+
+ //step 2 : scan the waves up the tree
+ r->incident_wave_up = tWDF_getReflectedWaveUp(child, input);
+
+ //step 3 : do root scattering computation
+ r->reflected_wave_up = tWDF_getReflectedWaveDown(wdf, input, r->incident_wave_up);
+
+ //step 4 : propogate waves down the tree
+ tWDF_setIncidentWave(child, r->reflected_wave_up, input);
+
+ //step 5 : grab whatever voltages or currents we want as outputs
+ return tWDF_getVoltage(outputPoint);
+}
+
+void tWDF_setValue(tWDF* const wdf, float value)
+{
+ _tWDF* r = *wdf;
+ r->value = value;
+}
+
+void tWDF_setSampleRate(tWDF* const wdf, float sample_rate)
+{
+ _tWDF* r = *wdf;
+ r->sample_rate = sample_rate;
+}
+
+uint8_t tWDF_isLeaf(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+ if (r->child_left == NULL && r->child_right == NULL) return 1;
+ return 0;
+}
+
+float tWDF_getPortResistance(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+ return r->get_port_resistance(wdf);
+}
+
+void tWDF_setIncidentWave(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+ r->set_incident_wave(wdf, incident_wave, input);
+}
+
+float tWDF_getReflectedWaveUp(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ return r->get_reflected_wave_up(wdf, input);
+}
+
+float tWDF_getReflectedWaveDown(tWDF* const wdf, float input, float incident_wave)
+{
+ _tWDF* r = *wdf;
+ return r->get_reflected_wave_down(wdf, input, incident_wave);
+}
+
+float tWDF_getVoltage(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+ return ((r->incident_wave_up * 0.5f) + (r->reflected_wave_up * 0.5f));
+}
+
+float tWDF_getCurrent(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+ return (((r->incident_wave_up * 0.5f) - (r->reflected_wave_up * 0.5f)) * r->port_conductance_up);
+}
+
+//============ Static Functions to be Pointed To ====================
+//===================================================================
+//============ Get and Calculate Port Resistances ===================
+
+static float get_port_resistance_for_resistor(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_up = r->value;
+ r->port_conductance_up = 1.0f / r->value;
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_capacitor(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_conductance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
+ r->port_resistance_up = (1.0f / r->port_conductance_up);
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_inductor(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
+ r->port_conductance_up = (1.0f / r->port_resistance_up);
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_resistive(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_up = r->value;
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_inverter(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_up = tWDF_getPortResistance(r->child_left);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_series(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_left = tWDF_getPortResistance(r->child_left);
+ r->port_resistance_right = tWDF_getPortResistance(r->child_right);
+ r->port_resistance_up = r->port_resistance_left + r->port_resistance_right;
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+ r->port_conductance_left = 1.0f / r->port_resistance_left;
+ r->port_conductance_right = 1.0f / r->port_resistance_right;
+ r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_parallel(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ r->port_resistance_left = tWDF_getPortResistance(r->child_left);
+ r->port_resistance_right = tWDF_getPortResistance(r->child_right);
+ r->port_resistance_up = (r->port_resistance_left * r->port_resistance_right) / (r->port_resistance_left + r->port_resistance_right);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+ r->port_conductance_left = 1.0f / r->port_resistance_left;
+ r->port_conductance_right = 1.0f / r->port_resistance_right;
+ r->gamma_zero = 1.0f / (r->port_conductance_right + r->port_conductance_left);
+
+ return r->port_resistance_up;
+}
+
+static float get_port_resistance_for_root(tWDF* const wdf)
+{
+ _tWDF* r = *wdf;
+
+ tWDF* child;
+ if (r->child_left != NULL) child = r->child_left;
+ else child = r->child_right;
+
+ r->port_resistance_up = tWDF_getPortResistance(child);
+ r->port_conductance_up = 1.0f / r->port_resistance_up;
+
+ return r->port_resistance_up;
+}
+
+//===================================================================
+//================ Set Incident Waves ===============================
+
+static void set_incident_wave_for_leaf(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+ r->incident_wave_up = incident_wave;
+}
+
+static void set_incident_wave_for_leaf_inverted(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+ r->incident_wave_up = -1.0f * incident_wave;
+}
+
+static void set_incident_wave_for_inverter(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+ r->incident_wave_up = incident_wave;
+ tWDF_setIncidentWave(r->child_left, -1.0f * incident_wave, input);
+}
+
+static void set_incident_wave_for_series(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+
+ r->incident_wave_up = incident_wave;
+ float gamma_left = r->port_resistance_left * r->gamma_zero;
+ float gamma_right = r->port_resistance_right * r->gamma_zero;
+ float left_wave = tWDF_getReflectedWaveUp(r->child_left, input);
+ float right_wave = tWDF_getReflectedWaveUp(r->child_right, input);
+// downPorts[0]->b = yl * ( downPorts[0]->a * ((1.0 / yl) - 1) - downPorts[1]->a - descendingWave );
+// downPorts[1]->b = yr * ( downPorts[1]->a * ((1.0 / yr) - 1) - downPorts[0]->a - descendingWave );
+ tWDF_setIncidentWave(r->child_left, (-1.0f * gamma_left * incident_wave) + (gamma_right * left_wave) - (gamma_left * right_wave), input);
+ tWDF_setIncidentWave(r->child_right, (-1.0f * gamma_right * incident_wave) + (gamma_left * right_wave) - (gamma_right * left_wave), input);
+ // From rt-wdf
+// tWDF_setIncidentWave(r->child_left, gamma_left * (left_wave * ((1.0f / gamma_left) - 1.0f) - right_wave - incident_wave));
+// tWDF_setIncidentWave(r->child_right, gamma_right * (right_wave * ((1.0f / gamma_right) - 1.0f) - left_wave - incident_wave));
+
+}
+
+static void set_incident_wave_for_parallel(tWDF* const wdf, float incident_wave, float input)
+{
+ _tWDF* r = *wdf;
+
+ r->incident_wave_up = incident_wave;
+ float gamma_left = r->port_conductance_left * r->gamma_zero;
+ float gamma_right = r->port_conductance_right * r->gamma_zero;
+ float left_wave = tWDF_getReflectedWaveUp(r->child_left, input);
+ float right_wave = tWDF_getReflectedWaveUp(r->child_right, input);
+// downPorts[0]->b = ( ( dl - 1 ) * downPorts[0]->a + dr * downPorts[1]->a + du * descendingWave );
+// downPorts[1]->b = ( dl * downPorts[0]->a + ( dr - 1 ) * downPorts[1]->a + du * descendingWave );
+ tWDF_setIncidentWave(r->child_left, (gamma_left - 1.0f) * left_wave + gamma_right * right_wave + incident_wave, input);
+ tWDF_setIncidentWave(r->child_right, gamma_left * left_wave + (gamma_right - 1.0f) * right_wave + incident_wave, input);
+}
+
+//===================================================================
+//================ Get Reflected Waves ==============================
+
+static float get_reflected_wave_for_resistor(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ r->reflected_wave_up = 0.0f;
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_capacitor(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ r->reflected_wave_up = r->incident_wave_up;
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_resistive(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ r->reflected_wave_up = input;
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_inverter(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ r->reflected_wave_up = -1.0f * tWDF_getReflectedWaveUp(r->child_left, input);
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_series(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+ //-( downPorts[0]->a + downPorts[1]->a );
+ r->reflected_wave_up = (-1.0f * (tWDF_getReflectedWaveUp(r->child_left, input) + tWDF_getReflectedWaveUp(r->child_right, input)));
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_parallel(tWDF* const wdf, float input)
+{
+ _tWDF* r = *wdf;
+
+ float gamma_left = r->port_conductance_left * r->gamma_zero;
+ float gamma_right = r->port_conductance_right * r->gamma_zero;
+ //return ( dl * downPorts[0]->a + dr * downPorts[1]->a );
+ r->reflected_wave_up = (gamma_left * tWDF_getReflectedWaveUp(r->child_left, input) + gamma_right * tWDF_getReflectedWaveUp(r->child_right, input));
+ return r->reflected_wave_up;
+}
+
+static float get_reflected_wave_for_ideal(tWDF* const wdf, float input, float incident_wave)
+{
+ return (2.0f * input) - incident_wave;
+}
+
+#define l2A 0.1640425613334452f
+#define l2B -1.098865286222744f
+#define l2Y 3.148297929334117f
+#define l2K -2.213475204444817f
+static float log2Approximation(float x)
+{
+ return (l2A * x*x*x) + (l2B * x*x) + (l2Y * x) + l2K;
+}
+
+#define wX1 -3.684303659906469f
+#define wX2 1.972967391708859f
+#define wA 9.451797158780131e-3f
+#define wB 0.1126446405111627f
+#define wY 0.4451353886588814f
+#define wK 0.5836596684310648f
+static float wrightOmega3(float x)
+{
+ if (x <= wX1)
+ {
+ return 0;
+ }
+ else if (x < wX2)
+ {
+ return (wA * x*x*x) + (wB * x*x) + (wY * x) + wK;
+ }
+ else
+ {
+ return x - logf(x);
+ }
+}
+
+static float wrightOmegaApproximation(float x)
+{
+ float w3 = wrightOmega3(x);
+ return w3 - ((w3 - expf(x - w3)) / (w3 + 1.0f));
+}
+
+static float lambertW(float a, float r, float I, float iVT)
+{
+ return wrightOmegaApproximation(((a + r*I) * iVT) + log((r * I) * iVT));
+}
+
+#define Is_DIODE 2.52e-9f
+#define VT_DIODE 0.02585f
+static float get_reflected_wave_for_diode(tWDF* const wdf, float input, float incident_wave)
+{
+ _tWDF* n = *wdf;
+
+ float a = incident_wave;
+ float r = n->port_resistance_up;
+ return a + 2.0f*r*Is_DIODE - 2.0f*VT_DIODE*lambertW(a, r, Is_DIODE, 1.0f/VT_DIODE);
+}
+
+static float get_reflected_wave_for_diode_pair(tWDF* const wdf, float input, float incident_wave)
+{
+ _tWDF* n = *wdf;
+
+ float a = incident_wave;
+ float sgn = 0.0f;
+ if (a > 0.0f) sgn = 1.0f;
+ else if (a < 0.0f) sgn = -1.0f;
+ float r = n->port_resistance_up;
+ return a + 2 * sgn * (r*Is_DIODE - VT_DIODE*lambertW(sgn*a, r, Is_DIODE, 1.0f/VT_DIODE));
+}
--- /dev/null
+++ b/leaf/Src/leaf-envelopes.c
@@ -1,0 +1,1612 @@
+/*
+ ==============================================================================
+
+ leaf-envelopes.c
+ Created: 20 Jan 2017 12:02:17pm
+ Author: Michael R Mulshine
+
+ ==============================================================================
+*/
+
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-envelopes.h"
+#include "..\Inc\leaf-tables.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-envelopes.h"
+#include "../Inc/leaf-tables.h"
+#include "../leaf.h"
+
+#endif
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Envelope ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tEnvelope_init(tEnvelope* const envlp, float attack, float decay, int loop)
+{
+ _tEnvelope* env = *envlp = (_tEnvelope*) leaf_alloc(sizeof(_tEnvelope));
+
+ env->exp_buff = __leaf_table_exp_decay;
+ env->inc_buff = __leaf_table_attack_decay_inc;
+ env->buff_size = sizeof(__leaf_table_exp_decay);
+
+ env->loop = loop;
+
+ if (attack > 8192.0f)
+ attack = 8192.0f;
+ if (attack < 0.0f)
+ attack = 0.0f;
+
+ if (decay > 8192.0f)
+ decay = 8192.0f;
+ if (decay < 0.0f)
+ decay = 0.0f;
+
+ int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
+ int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
+ int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
+
+ if (attackIndex < 0)
+ attackIndex = 0;
+ if (decayIndex < 0)
+ decayIndex = 0;
+ if (rampIndex < 0)
+ rampIndex = 0;
+
+ env->inRamp = OFALSE;
+ env->inAttack = OFALSE;
+ env->inDecay = OFALSE;
+
+ env->attackInc = env->inc_buff[attackIndex];
+ env->decayInc = env->inc_buff[decayIndex];
+ env->rampInc = env->inc_buff[rampIndex];
+}
+
+void tEnvelope_free(tEnvelope* const envlp)
+{
+ _tEnvelope* env = *envlp;
+ leaf_free((char*)env);
+}
+
+void tEnvelope_initToPool (tEnvelope* const envlp, float attack, float decay, int loop, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvelope* env = *envlp = (_tEnvelope*) mpool_alloc(sizeof(_tEnvelope), m);
+
+ env->exp_buff = __leaf_table_exp_decay;
+ env->inc_buff = __leaf_table_attack_decay_inc;
+ env->buff_size = sizeof(__leaf_table_exp_decay);
+
+ env->loop = loop;
+
+ if (attack > 8192.0f)
+ attack = 8192.0f;
+ if (attack < 0.0f)
+ attack = 0.0f;
+
+ if (decay > 8192.0f)
+ decay = 8192.0f;
+ if (decay < 0.0f)
+ decay = 0.0f;
+
+ int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
+ int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
+ int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
+
+ if (attackIndex < 0)
+ attackIndex = 0;
+ if (decayIndex < 0)
+ decayIndex = 0;
+ if (rampIndex < 0)
+ rampIndex = 0;
+
+ env->inRamp = OFALSE;
+ env->inAttack = OFALSE;
+ env->inDecay = OFALSE;
+
+ env->attackInc = env->inc_buff[attackIndex];
+ env->decayInc = env->inc_buff[decayIndex];
+ env->rampInc = env->inc_buff[rampIndex];
+}
+
+void tEnvelope_freeFromPool (tEnvelope* const envlp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEnvelope* env = *envlp;
+ mpool_free((char*)env, m);
+}
+
+void tEnvelope_setAttack(tEnvelope* const envlp, float attack)
+{
+ _tEnvelope* env = *envlp;
+
+ int32_t attackIndex;
+
+ if (attack < 0.0f) {
+ attackIndex = 0.0f;
+ } else if (attack < 8192.0f) {
+ attackIndex = ((int32_t)(attack * 8.0f))-1;
+ } else {
+ attackIndex = ((int32_t)(8192.0f * 8.0f))-1;
+ }
+
+ env->attackInc = env->inc_buff[attackIndex];
+}
+
+void tEnvelope_setDecay(tEnvelope* const envlp, float decay)
+{
+ _tEnvelope* env = *envlp;
+
+ int32_t decayIndex;
+
+ if (decay < 0.0f) {
+ decayIndex = 0;
+ } else if (decay < 8192.0f) {
+ decayIndex = ((int32_t)(decay * 8.0f)) - 1;
+ } else {
+ decayIndex = ((int32_t)(8192.0f * 8.0f)) - 1;
+ }
+
+ env->decayInc = env->inc_buff[decayIndex];
+}
+
+void tEnvelope_loop(tEnvelope* const envlp, int loop)
+{
+ _tEnvelope* env = *envlp;
+ env->loop = loop;
+}
+
+
+void tEnvelope_on(tEnvelope* const envlp, float velocity)
+{
+ _tEnvelope* env = *envlp;
+
+ if (env->inAttack || env->inDecay) // In case envelope retriggered while it is still happening.
+ {
+ env->rampPhase = 0;
+ env->inRamp = OTRUE;
+ env->rampPeak = env->next;
+ }
+ else // Normal start.
+ {
+ env->inAttack = OTRUE;
+ }
+
+
+ env->attackPhase = 0;
+ env->decayPhase = 0;
+ env->inDecay = OFALSE;
+ env->gain = velocity;
+}
+
+float tEnvelope_tick(tEnvelope* const envlp)
+{
+ _tEnvelope* env = *envlp;
+
+ if (env->inRamp)
+ {
+ if (env->rampPhase > UINT16_MAX)
+ {
+ env->inRamp = OFALSE;
+ env->inAttack = OTRUE;
+ env->next = 0.0f;
+ }
+ else
+ {
+ env->next = env->rampPeak * env->exp_buff[(uint32_t)env->rampPhase];
+ }
+
+ env->rampPhase += env->rampInc;
+ }
+
+ if (env->inAttack)
+ {
+
+ // If attack done, time to turn around.
+ if (env->attackPhase > UINT16_MAX)
+ {
+ env->inDecay = OTRUE;
+ env->inAttack = OFALSE;
+ env->next = env->gain * 1.0f;
+ }
+ else
+ {
+ // do interpolation !
+ env->next = env->gain * env->exp_buff[UINT16_MAX - (uint32_t)env->attackPhase]; // inverted and backwards to get proper rising exponential shape/perception
+ }
+
+ // Increment envelope attack.
+ env->attackPhase += env->attackInc;
+
+ }
+
+ if (env->inDecay)
+ {
+
+ // If decay done, finish.
+ if (env->decayPhase >= UINT16_MAX)
+ {
+ env->inDecay = OFALSE;
+
+ if (env->loop)
+ {
+ env->attackPhase = 0;
+ env->decayPhase = 0;
+ env->inAttack = OTRUE;
+ }
+ else
+ {
+ env->next = 0.0f;
+ }
+
+ } else {
+
+ env->next = env->gain * (env->exp_buff[(uint32_t)env->decayPhase]); // do interpolation !
+ }
+
+ // Increment envelope decay;
+ env->decayPhase += env->decayInc;
+ }
+
+ return env->next;
+}
+
+
+
+/* ADSR */
+void tADSR_init(tADSR* const adsrenv, float attack, float decay, float sustain, float release)
+{
+ tADSR_initToPool(adsrenv, attack, decay, sustain, release, &leaf.mempool);
+}
+
+void tADSR_free(tADSR* const adsrenv)
+{
+ tADSR_freeFromPool(adsrenv, &leaf.mempool);
+}
+
+void tADSR_initToPool (tADSR* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR* adsr = *adsrenv = (_tADSR*) mpool_alloc(sizeof(_tADSR), m);
+
+ adsr->exp_buff = __leaf_table_exp_decay;
+ adsr->inc_buff = __leaf_table_attack_decay_inc;
+ adsr->buff_size = sizeof(__leaf_table_exp_decay);
+
+ if (attack > 8192.0f)
+ attack = 8192.0f;
+ if (attack < 0.0f)
+ attack = 0.0f;
+
+ if (decay > 8192.0f)
+ decay = 8192.0f;
+ if (decay < 0.0f)
+ decay = 0.0f;
+
+ if (sustain > 1.0f)
+ sustain = 1.0f;
+ if (sustain < 0.0f)
+ sustain = 0.0f;
+
+ if (release > 8192.0f)
+ release = 8192.0f;
+ if (release < 0.0f)
+ release = 0.0f;
+
+ int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
+ int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
+ int16_t releaseIndex = ((int16_t)(release * 8.0f))-1;
+ int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
+
+ if (attackIndex < 0)
+ attackIndex = 0;
+ if (decayIndex < 0)
+ decayIndex = 0;
+ if (releaseIndex < 0)
+ releaseIndex = 0;
+ if (rampIndex < 0)
+ rampIndex = 0;
+
+ adsr->next = 0.0f;
+
+ adsr->inRamp = OFALSE;
+ adsr->inAttack = OFALSE;
+ adsr->inDecay = OFALSE;
+ adsr->inSustain = OFALSE;
+ adsr->inRelease = OFALSE;
+
+ adsr->sustain = sustain;
+
+ adsr->attackInc = adsr->inc_buff[attackIndex];
+ adsr->decayInc = adsr->inc_buff[decayIndex];
+ adsr->releaseInc = adsr->inc_buff[releaseIndex];
+ adsr->rampInc = adsr->inc_buff[rampIndex];
+
+ adsr->leakFactor = 1.0f;
+}
+
+void tADSR_freeFromPool (tADSR* const adsrenv, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR* adsr = *adsrenv;
+ mpool_free((char*)adsr, m);
+}
+
+void tADSR_setAttack(tADSR* const adsrenv, float attack)
+{
+ _tADSR* adsr = *adsrenv;
+
+ int32_t attackIndex;
+
+ if (attack < 0.0f) {
+ attackIndex = 0.0f;
+ } else if (attack < 8192.0f) {
+ attackIndex = ((int32_t)(attack * 8.0f))-1;
+ } else {
+ attackIndex = ((int32_t)(8192.0f * 8.0f))-1;
+ }
+
+ adsr->attackInc = adsr->inc_buff[attackIndex];
+}
+
+void tADSR_setDecay(tADSR* const adsrenv, float decay)
+{
+ _tADSR* adsr = *adsrenv;
+
+ int32_t decayIndex;
+
+ if (decay < 0.0f) {
+ decayIndex = 0.0f;
+ } else if (decay < 8192.0f) {
+ decayIndex = ((int32_t)(decay * 8.0f)) - 1;
+ } else {
+ decayIndex = ((int32_t)(8192.0f * 8.0f)) - 1;
+ }
+
+ adsr->decayInc = adsr->inc_buff[decayIndex];
+}
+
+void tADSR_setSustain(tADSR* const adsrenv, float sustain)
+{
+ _tADSR* adsr = *adsrenv;
+
+ if (sustain > 1.0f) adsr->sustain = 1.0f;
+ else if (sustain < 0.0f) adsr->sustain = 0.0f;
+ else adsr->sustain = sustain;
+}
+
+void tADSR_setRelease(tADSR* const adsrenv, float release)
+{
+ _tADSR* adsr = *adsrenv;
+
+ int32_t releaseIndex;
+
+ if (release < 0.0f) {
+ releaseIndex = 0.0f;
+ } else if (release < 8192.0f) {
+ releaseIndex = ((int32_t)(release * 8.0f)) - 1;
+ } else {
+ releaseIndex = ((int32_t)(8192.0f * 8.0f)) - 1;
+ }
+
+ adsr->releaseInc = adsr->inc_buff[releaseIndex];
+}
+
+// 0.999999 is slow leak, 0.9 is fast leak
+void tADSR_setLeakFactor(tADSR* const adsrenv, float leakFactor)
+{
+ _tADSR* adsr = *adsrenv;
+
+
+ adsr->leakFactor = leakFactor;
+}
+
+void tADSR_on(tADSR* const adsrenv, float velocity)
+{
+ _tADSR* adsr = *adsrenv;
+
+ if ((adsr->inAttack || adsr->inDecay) || (adsr->inSustain || adsr->inRelease)) // In case ADSR retriggered while it is still happening.
+ {
+ adsr->rampPhase = 0;
+ adsr->inRamp = OTRUE;
+ adsr->rampPeak = adsr->next;
+ }
+ else // Normal start.
+ {
+ adsr->inAttack = OTRUE;
+ }
+
+ adsr->attackPhase = 0;
+ adsr->decayPhase = 0;
+ adsr->releasePhase = 0;
+ adsr->inDecay = OFALSE;
+ adsr->inSustain = OFALSE;
+ adsr->inRelease = OFALSE;
+ adsr->gain = velocity;
+}
+
+void tADSR_off(tADSR* const adsrenv)
+{
+ _tADSR* adsr = *adsrenv;
+
+ if (adsr->inRelease) return;
+
+ adsr->inAttack = OFALSE;
+ adsr->inDecay = OFALSE;
+ adsr->inSustain = OFALSE;
+ adsr->inRelease = OTRUE;
+
+ adsr->releasePeak = adsr->next;
+}
+
+float tADSR_tick(tADSR* const adsrenv)
+{
+ _tADSR* adsr = *adsrenv;
+
+
+ if (adsr->inRamp)
+ {
+ if (adsr->rampPhase > UINT16_MAX)
+ {
+ adsr->inRamp = OFALSE;
+ adsr->inAttack = OTRUE;
+ adsr->next = 0.0f;
+ }
+ else
+ {
+ adsr->next = adsr->rampPeak * adsr->exp_buff[(uint32_t)adsr->rampPhase];
+ }
+
+ adsr->rampPhase += adsr->rampInc;
+ }
+
+ if (adsr->inAttack)
+ {
+
+ // If attack done, time to turn around.
+ if (adsr->attackPhase > UINT16_MAX)
+ {
+ adsr->inDecay = OTRUE;
+ adsr->inAttack = OFALSE;
+ adsr->next = adsr->gain * 1.0f;
+ }
+ else
+ {
+ // do interpolation !
+ adsr->next = adsr->gain * adsr->exp_buff[UINT16_MAX - (uint32_t)adsr->attackPhase]; // inverted and backwards to get proper rising exponential shape/perception
+ }
+
+ // Increment ADSR attack.
+ adsr->attackPhase += adsr->attackInc;
+
+ }
+
+ if (adsr->inDecay)
+ {
+
+ // If decay done, sustain.
+ if (adsr->decayPhase >= UINT16_MAX)
+ {
+ adsr->inDecay = OFALSE;
+ adsr->inSustain = OTRUE;
+ adsr->next = adsr->gain * adsr->sustain;
+ }
+
+ else
+ {
+ adsr->next = (adsr->gain * (adsr->sustain + ((adsr->exp_buff[(uint32_t)adsr->decayPhase]) * (1.0f - adsr->sustain)))) * adsr->leakFactor; // do interpolation !
+ }
+
+ // Increment ADSR decay.
+ adsr->decayPhase += adsr->decayInc;
+ }
+
+ if (adsr->inSustain)
+ {
+ adsr->next = adsr->next * adsr->leakFactor;
+ }
+
+ if (adsr->inRelease)
+ {
+ // If release done, finish.
+ if (adsr->releasePhase >= UINT16_MAX)
+ {
+ adsr->inRelease = OFALSE;
+ adsr->next = 0.0f;
+ }
+ else {
+
+ adsr->next = adsr->releasePeak * (adsr->exp_buff[(uint32_t)adsr->releasePhase]); // do interpolation !
+ }
+
+ // Increment envelope release;
+ adsr->releasePhase += adsr->releaseInc;
+ }
+
+
+ return adsr->next;
+}
+
+
+
+
+/* ADSR 2*/
+//This one is adapted from the VCV Rack code
+//-JS
+
+
+
+const float ADSR2_MIN_TIME = 1e-3f;
+const float ADSR2_INV_MIN_TIME = 1000.0f;
+const float ADSR2_MAX_TIME = 10.f;
+const float ADSR2_LAMBDA_BASE = 10000.0f;
+
+
+void tADSR2_init(tADSR2* const adsrenv, float attack, float decay, float sustain, float release)
+{
+ tADSR2_initToPool(adsrenv, attack, decay, sustain, release, &leaf.mempool);
+}
+
+void tADSR2_free(tADSR2* const adsrenv)
+{
+ tADSR2_freeFromPool(adsrenv, &leaf.mempool);
+}
+
+void tADSR2_initToPool (tADSR2* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR2* adsr = *adsrenv = (_tADSR2*) mpool_alloc(sizeof(_tADSR2), m);
+ adsr->sampleRateInMs = leaf.sampleRate * 0.001f;
+ adsr->attack = LEAF_clip(0.0f, attack * 0.001f, 1.0f);
+ adsr->attackLambda = powf(ADSR2_LAMBDA_BASE, -adsr->attack) * ADSR2_INV_MIN_TIME;
+
+
+ adsr->decay = LEAF_clip(0.0f, decay * 0.001f, 1.0f);
+ adsr->decayLambda = powf(ADSR2_LAMBDA_BASE, -adsr->decay) * ADSR2_INV_MIN_TIME;
+
+
+ adsr->sustain= sustain;
+
+
+ adsr->release = LEAF_clip(0.0f, release * 0.001f, 1.0f);
+ adsr->releaseLambda = powf(ADSR2_LAMBDA_BASE, -adsr->release) * ADSR2_INV_MIN_TIME;
+
+ adsr->attacking = 0;
+ adsr->gate = 0;
+ adsr->gain = 1.0f;
+ adsr->targetGainSquared = 1.0f;
+ adsr->factor = 0.01f;
+ adsr->oneMinusFactor = 0.99f;
+ adsr->env = 0.0f;
+ adsr->leakFactor = 1.0f;
+}
+
+void tADSR2_freeFromPool (tADSR2* const adsrenv, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR2* adsr = *adsrenv;
+ mpool_free((char*)adsr, m);
+}
+
+void tADSR2_setAttack(tADSR2* const adsrenv, float attack)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->attack = LEAF_clip(0.0f, attack * 0.001f, 1.0f);
+ adsr->attackLambda = fastPow(ADSR2_LAMBDA_BASE, -adsr->attack) * ADSR2_INV_MIN_TIME;
+
+}
+
+void tADSR2_setDecay(tADSR2* const adsrenv, float decay)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->decay = LEAF_clip(0.0f, decay * 0.001f, 1.0f);
+ adsr->decayLambda = fastPow(ADSR2_LAMBDA_BASE, -adsr->decay) * ADSR2_INV_MIN_TIME;
+
+}
+
+void tADSR2_setSustain(tADSR2* const adsrenv, float sustain)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->sustain = sustain;
+
+ if (adsr->gate)
+ {
+ if (adsr->attacking == 0)
+ {
+ adsr->envTarget = sustain;
+ }
+ }
+}
+
+void tADSR2_setRelease(tADSR2* const adsrenv, float release)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->release = LEAF_clip(0.0f, release * 0.001f, 1.0f);
+ adsr->releaseLambda = fastPow(ADSR2_LAMBDA_BASE, -adsr->release) * ADSR2_INV_MIN_TIME;
+}
+
+// 0.999999 is slow leak, 0.9 is fast leak
+void tADSR2_setLeakFactor(tADSR2* const adsrenv, float leakFactor)
+{
+ _tADSR2* adsr = *adsrenv;
+
+ adsr->leakFactor = leakFactor;
+}
+
+void tADSR2_on(tADSR2* const adsrenv, float velocity)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->targetGainSquared = velocity * velocity;
+ adsr->envTarget = 1.2f;
+ adsr->leakGain = 1.0f;
+ adsr->gate = 1;
+ adsr->attacking = 1;
+}
+
+void tADSR2_off(tADSR2* const adsrenv)
+{
+ _tADSR2* adsr = *adsrenv;
+ adsr->gate = 0;
+ adsr->envTarget = 0.0f;
+}
+
+float tADSR2_tick(tADSR2* const adsrenv)
+{
+ _tADSR2* adsr = *adsrenv;
+ float lambda;
+
+ if (adsr->gate)
+ {
+ if (adsr->attacking)
+ {
+ lambda = adsr->attackLambda;
+ }
+ else
+ {
+ lambda = adsr->decayLambda;
+ }
+ }
+ else
+ {
+ lambda = adsr->releaseLambda;
+ }
+
+
+ // Adjust env
+ adsr->env += (adsr->envTarget - adsr->env) * lambda * leaf.invSampleRate;
+
+ // Turn off attacking state if envelope is HIGH
+ if (adsr->env >= 1.0f)
+ {
+ adsr->attacking = 0;
+ adsr->envTarget = adsr->sustain;
+ }
+
+ //smooth the gain value -- this is not ideal, a retrigger while the envelope is still going with a new gain will cause a jump, although it will be smoothed quickly. Maybe doing the math so the range is computed based on the gain rather than 0.->1. is preferable? But that's harder to get the exponential curve right without a lookup.
+ adsr->gain = ((adsr->factor*adsr->targetGainSquared)+(adsr->oneMinusFactor*adsr->gain));
+ adsr->leakGain *= adsr->leakFactor;
+ return adsr->env * adsr->gain * adsr->leakGain;
+}
+
+/* ADSR 3*/
+//This one doesn't use any lookup table - by Nigel Redmon from his blog. Thanks, Nigel!
+//-JS
+
+float calcADSR3Coef(double rate, double targetRatio)
+{
+ return (rate <= 0.0f) ? 0.0f : exp(-log((1.0 + targetRatio) / targetRatio) / rate);
+}
+
+
+void tADSR3_init(tADSR3* const adsrenv, float attack, float decay, float sustain, float release)
+{
+ tADSR3_initToPool(adsrenv, attack, decay, sustain, release, &leaf.mempool);
+}
+
+void tADSR3_free(tADSR3* const adsrenv)
+{
+ tADSR3_freeFromPool(adsrenv, &leaf.mempool);
+}
+
+void tADSR3_initToPool (tADSR3* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR3* adsr = *adsrenv = (_tADSR3*) mpool_alloc(sizeof(_tADSR3), m);
+ adsr->sampleRateInMs = leaf.sampleRate * 0.001f;
+ adsr->targetRatioA = 0.3f;
+ adsr->targetRatioDR = 0.0001f;
+ adsr->attackRate = attack * adsr->sampleRateInMs;
+ adsr->attackCoef = calcADSR3Coef(attack * adsr->sampleRateInMs, adsr->targetRatioA);
+ adsr->attackBase = (1.0f + adsr->targetRatioA) * (1.0f - adsr->attackCoef);
+
+ adsr->decayRate = decay * adsr->sampleRateInMs;
+ adsr->decayCoef = calcADSR3Coef(decay * adsr->sampleRateInMs,adsr-> targetRatioDR);
+ adsr->decayBase = (adsr->sustainLevel - adsr->targetRatioDR) * (1.0f - adsr->decayCoef);
+
+ adsr->sustainLevel = sustain;
+ adsr->decayBase = (adsr->sustainLevel - adsr->targetRatioDR) * (1.0f - adsr->decayCoef);
+
+ adsr->releaseRate = release * adsr->sampleRateInMs;
+ adsr->releaseCoef = calcADSR3Coef(release * adsr->sampleRateInMs, adsr->targetRatioDR);
+ adsr->releaseBase = -adsr->targetRatioDR * (1.0f - adsr->releaseCoef);
+
+ adsr->state = env_idle;
+ adsr->gain = 1.0f;
+ adsr->targetGainSquared = 1.0f;
+ adsr->factor = 0.01f;
+ adsr->oneMinusFactor = 0.99f;
+ adsr->output = 0.0f;
+ adsr->leakFactor = 1.0f;
+}
+
+void tADSR3_freeFromPool (tADSR3* const adsrenv, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR3* adsr = *adsrenv;
+ mpool_free((char*)adsr, m);
+}
+
+void tADSR3_setAttack(tADSR3* const adsrenv, float attack)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ adsr->attackRate = attack * adsr->sampleRateInMs;
+ adsr->attackCoef = calcADSR3Coef(adsr->attackRate, adsr->targetRatioA);
+ adsr->attackBase = (1.0f + adsr->targetRatioA) * (1.0f - adsr->attackCoef);
+}
+
+void tADSR3_setDecay(tADSR3* const adsrenv, float decay)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ adsr->decayRate = decay * adsr->sampleRateInMs;
+ adsr->decayCoef = calcADSR3Coef(adsr->decayRate,adsr-> targetRatioDR);
+ adsr->decayBase = (adsr->sustainLevel - adsr->targetRatioDR) * (1.0f - adsr->decayCoef);
+}
+
+void tADSR3_setSustain(tADSR3* const adsrenv, float sustain)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ adsr->sustainLevel = sustain;
+ adsr->decayBase = (adsr->sustainLevel - adsr->targetRatioDR) * (1.0f - adsr->decayCoef);
+}
+
+void tADSR3_setRelease(tADSR3* const adsrenv, float release)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ adsr->releaseRate = release * adsr->sampleRateInMs;
+ adsr->releaseCoef = calcADSR3Coef(adsr->releaseRate, adsr->targetRatioDR);
+ adsr->releaseBase = -adsr->targetRatioDR * (1.0f - adsr->releaseCoef);
+}
+
+// 0.999999 is slow leak, 0.9 is fast leak
+void tADSR3_setLeakFactor(tADSR3* const adsrenv, float leakFactor)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ adsr->leakFactor = leakFactor;
+}
+
+void tADSR3_on(tADSR3* const adsrenv, float velocity)
+{
+ _tADSR3* adsr = *adsrenv;
+ adsr->state = env_attack;
+ adsr->targetGainSquared = velocity * velocity;
+}
+
+void tADSR3_off(tADSR3* const adsrenv)
+{
+ _tADSR3* adsr = *adsrenv;
+
+ if (adsr->state != env_idle)
+ {
+ adsr->state = env_release;
+ }
+}
+
+float tADSR3_tick(tADSR3* const adsrenv)
+{
+ _tADSR3* adsr = *adsrenv;
+
+
+ switch (adsr->state) {
+ case env_idle:
+ break;
+ case env_attack:
+ adsr->output = adsr->attackBase + adsr->output * adsr->attackCoef;
+ if (adsr->output >= 1.0f) {
+ adsr->output = 1.0f;
+ adsr->state = env_decay;
+ }
+ break;
+ case env_decay:
+ adsr->output = adsr->decayBase + adsr->output * adsr->decayCoef * adsr->leakFactor;
+ if (adsr->output <= adsr->sustainLevel) {
+ adsr->output = adsr->sustainLevel;
+ adsr->state = env_sustain;
+ }
+ break;
+ case env_sustain:
+ adsr->output = adsr->output * adsr->leakFactor;
+ break;
+ case env_release:
+ adsr->output = adsr->releaseBase + adsr->output * adsr->releaseCoef;
+ if (adsr->output <= 0.0f) {
+ adsr->output = 0.0f;
+ adsr->state = env_idle;
+ }
+ }
+ //smooth the gain value -- this is not ideal, a retrigger while the envelope is still going with a new gain will cause a jump, although it will be smoothed quickly. Maybe doing the math so the range is computed based on the gain rather than 0.->1. is preferable? But that's harder to get the exponential curve right without a lookup.
+ adsr->gain = (adsr->factor*adsr->targetGainSquared)+(adsr->oneMinusFactor*adsr->gain);
+ return adsr->output * adsr->gain;
+}
+
+
+/* ADSR 4 */ // new version of our original table-based ADSR but with the table passed in by the user
+// use this if the size of the big ADSR tables is too much.
+void tADSR4_init (tADSR4* const adsrenv, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize)
+{
+ tADSR4_initToPool (adsrenv, attack, decay, sustain, release, expBuffer, bufferSize, &leaf.mempool);
+}
+
+void tADSR4_free(tADSR4* const adsrenv)
+{
+ tADSR4_freeFromPool(adsrenv, &leaf.mempool);
+}
+
+//initialize with an exponential function that decays -- i.e. a call to LEAF_generate_exp(expBuffer, 0.001f, 0.0f, 1.0f, -0.0008f, EXP_BUFFER_SIZE);
+//times are in ms
+void tADSR4_initToPool (tADSR4* const adsrenv, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR4* adsr = *adsrenv = (_tADSR4*) mpool_alloc(sizeof(_tADSR4), m);
+
+ adsr->exp_buff = expBuffer;
+ adsr->buff_size = bufferSize;
+ adsr->buff_sizeMinusOne = bufferSize - 1;
+
+ adsr->bufferSizeDividedBySampleRateInMs = bufferSize / (leaf.sampleRate * 0.001f);
+
+ if (attack < 0.0f)
+ attack = 0.0f;
+
+ if (decay < 0.0f)
+ decay = 0.0f;
+
+ if (sustain > 1.0f)
+ sustain = 1.0f;
+ if (sustain < 0.0f)
+ sustain = 0.0f;
+
+ if (release < 0.0f)
+ release = 0.0f;
+
+ adsr->next = 0.0f;
+
+ adsr->whichStage = env_idle;
+
+ adsr->sustain = sustain;
+
+ adsr->attackInc = adsr->bufferSizeDividedBySampleRateInMs / attack;
+ adsr->decayInc = adsr->bufferSizeDividedBySampleRateInMs / decay;
+ adsr->releaseInc = adsr->bufferSizeDividedBySampleRateInMs / release;
+ adsr->rampInc = adsr->bufferSizeDividedBySampleRateInMs / 8.0f;
+
+ adsr->leakFactor = 1.0f;
+}
+
+void tADSR4_freeFromPool (tADSR4* const adsrenv, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tADSR4* adsr = *adsrenv;
+ mpool_free((char*)adsr, m);
+}
+
+void tADSR4_setAttack(tADSR4* const adsrenv, float attack)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (attack < 0.0f)
+ {
+ attack = 0.0f;
+ }
+
+ adsr->attackInc = adsr->bufferSizeDividedBySampleRateInMs / attack;
+}
+
+void tADSR4_setDecay(tADSR4* const adsrenv, float decay)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (decay < 0.0f)
+ {
+ decay = 0.0f;
+ }
+ adsr->decayInc = adsr->bufferSizeDividedBySampleRateInMs / decay;
+}
+
+void tADSR4_setSustain(tADSR4* const adsrenv, float sustain)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (sustain > 1.0f) adsr->sustain = 1.0f;
+ else if (sustain < 0.0f) adsr->sustain = 0.0f;
+ else adsr->sustain = sustain;
+}
+
+void tADSR4_setRelease(tADSR4* const adsrenv, float release)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (release < 0.0f)
+ {
+ release = 0.0f;
+ }
+ adsr->releaseInc = adsr->bufferSizeDividedBySampleRateInMs / release;
+}
+
+// 0.999999 is slow leak, 0.9 is fast leak
+void tADSR4_setLeakFactor(tADSR4* const adsrenv, float leakFactor)
+{
+ _tADSR4* adsr = *adsrenv;
+
+
+ adsr->leakFactor = leakFactor;
+}
+
+void tADSR4_on(tADSR4* const adsrenv, float velocity)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (adsr->whichStage != env_idle) // In case ADSR retriggered while it is still happening.
+ {
+ adsr->rampPhase = 0;
+ adsr->whichStage = env_ramp;
+ adsr->rampPeak = adsr->next;
+ }
+ else // Normal start.
+ {
+ adsr->whichStage = env_attack;
+ }
+
+ adsr->attackPhase = 0;
+ adsr->decayPhase = 0;
+ adsr->releasePhase = 0;
+ adsr->gain = velocity;
+}
+
+void tADSR4_off(tADSR4* const adsrenv)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ if (adsr->whichStage == env_idle)
+ {
+ return;
+ }
+ else
+ {
+ adsr->whichStage = env_release;
+ adsr->releasePeak = adsr->next;
+ }
+}
+
+float tADSR4_tick(tADSR4* const adsrenv)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ switch (adsr->whichStage)
+ {
+ case env_ramp:
+ if (adsr->rampPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_attack;
+ adsr->next = 0.0f;
+ }
+ else
+ {
+ uint32_t intPart = (uint32_t)adsr->rampPhase;
+ float floatPart = adsr->rampPhase - intPart;
+ float secondValue;
+ if (adsr->rampPhase + 1.0f > adsr->buff_sizeMinusOne)
+ {
+ secondValue = 0.0f;
+ }
+ else
+ {
+ secondValue = adsr->exp_buff[(uint32_t)((adsr->rampPhase)+1)];
+ }
+ adsr->next = adsr->rampPeak * LEAF_interpolation_linear(adsr->exp_buff[intPart], secondValue, floatPart);
+ }
+
+ adsr->rampPhase += adsr->rampInc;
+ break;
+
+
+ case env_attack:
+
+ // If attack done, time to turn around.
+ if (adsr->attackPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_decay;
+ adsr->next = adsr->gain;
+ }
+ else
+ {
+ // do interpolation !
+ uint32_t intPart = (uint32_t)adsr->attackPhase;
+ float floatPart = adsr->attackPhase - intPart;
+ float secondValue;
+ if (adsr->attackPhase + 1.0f > adsr->buff_sizeMinusOne)
+ {
+ secondValue = 0.0f;
+ }
+ else
+ {
+ secondValue = adsr->exp_buff[(uint32_t)((adsr->attackPhase)+1)];
+ }
+
+ adsr->next = adsr->gain * (1.0f - LEAF_interpolation_linear(adsr->exp_buff[intPart], secondValue, floatPart)); // inverted and backwards to get proper rising exponential shape/perception
+ }
+
+ // Increment ADSR attack.
+ adsr->attackPhase += adsr->attackInc;
+ break;
+
+ case env_decay:
+
+ // If decay done, sustain.
+ if (adsr->decayPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_sustain;
+ adsr->next = adsr->gain * adsr->sustain;
+ }
+
+ else
+ {
+ uint32_t intPart = (uint32_t)adsr->decayPhase;
+ float floatPart = adsr->decayPhase - intPart;
+ float secondValue;
+ if (adsr->decayPhase + 1.0f > adsr->buff_sizeMinusOne)
+ {
+ secondValue = 0.0f;
+ }
+ else
+ {
+ secondValue = adsr->exp_buff[(uint32_t)((adsr->decayPhase)+1)];
+ }
+ float interpValue = (LEAF_interpolation_linear(adsr->exp_buff[intPart], secondValue, floatPart));
+ adsr->next = (adsr->gain * (adsr->sustain + (interpValue * (1.0f - adsr->sustain)))) * adsr->leakFactor; // do interpolation !
+ }
+
+ // Increment ADSR decay.
+ adsr->decayPhase += adsr->decayInc;
+ break;
+
+ case env_sustain:
+ adsr->next = adsr->next * adsr->leakFactor;
+ break;
+
+ case env_release:
+ // If release done, finish.
+ if (adsr->releasePhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_idle;
+ adsr->next = 0.0f;
+ }
+ else {
+ uint32_t intPart = (uint32_t)adsr->releasePhase;
+ float floatPart = adsr->releasePhase - intPart;
+ float secondValue;
+ if (adsr->releasePhase + 1.0f > adsr->buff_sizeMinusOne)
+ {
+ secondValue = 0.0f;
+ }
+ else
+ {
+ secondValue = adsr->exp_buff[(uint32_t)((adsr->releasePhase)+1)];
+ }
+ adsr->next = adsr->releasePeak * (LEAF_interpolation_linear(adsr->exp_buff[intPart], secondValue, floatPart)); // do interpolation !
+ }
+
+ // Increment envelope release;
+ adsr->releasePhase += adsr->releaseInc;
+ break;
+ }
+ return adsr->next;
+}
+
+float tADSR4_tickNoInterp(tADSR4* const adsrenv)
+{
+ _tADSR4* adsr = *adsrenv;
+
+ switch (adsr->whichStage)
+ {
+ case env_ramp:
+ if (adsr->rampPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_attack;
+ adsr->next = 0.0f;
+ }
+ else
+ {
+ adsr->next = adsr->rampPeak * adsr->exp_buff[(uint32_t)adsr->rampPhase];
+ }
+
+ adsr->rampPhase += adsr->rampInc;
+ break;
+
+
+ case env_attack:
+
+ // If attack done, time to turn around.
+ if (adsr->attackPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_decay;
+ adsr->next = adsr->gain;
+ }
+ else
+ {
+ adsr->next = adsr->gain * (1.0f - adsr->exp_buff[(uint32_t)adsr->attackPhase]); // inverted and backwards to get proper rising exponential shape/perception
+ }
+
+ // Increment ADSR attack.
+ adsr->attackPhase += adsr->attackInc;
+ break;
+
+ case env_decay:
+
+ // If decay done, sustain.
+ if (adsr->decayPhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_sustain;
+ adsr->next = adsr->gain * adsr->sustain;
+ }
+
+ else
+ {
+ adsr->next = (adsr->gain * (adsr->sustain + (adsr->exp_buff[(uint32_t)adsr->decayPhase] * (1.0f - adsr->sustain)))) * adsr->leakFactor;
+ }
+
+ // Increment ADSR decay.
+ adsr->decayPhase += adsr->decayInc;
+ break;
+
+ case env_sustain:
+ adsr->next = adsr->next * adsr->leakFactor;
+ break;
+
+ case env_release:
+ // If release done, finish.
+ if (adsr->releasePhase > adsr->buff_sizeMinusOne)
+ {
+ adsr->whichStage = env_idle;
+ adsr->next = 0.0f;
+ }
+ else {
+ adsr->next = adsr->releasePeak * adsr->exp_buff[(uint32_t)adsr->releasePhase];
+ }
+
+ // Increment envelope release;
+ adsr->releasePhase += adsr->releaseInc;
+ break;
+ }
+ return adsr->next;
+}
+
+
+
+/////-----------------
+/* Ramp */
+void tRamp_init(tRamp* const r, float time, int samples_per_tick)
+{
+ _tRamp* ramp = *r = (_tRamp*) leaf_alloc(sizeof(_tRamp));
+
+ ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
+ ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
+ ramp->curr = 0.0f;
+ ramp->dest = 0.0f;
+
+ if (time < ramp->minimum_time)
+ {
+ ramp->time = ramp->minimum_time;
+ }
+ else
+ {
+ ramp->time = time;
+ }
+ ramp->factor = (1.0f / ramp->time) * ramp->inv_sr_ms;
+ ramp->samples_per_tick = samples_per_tick;
+ ramp->inc = ((ramp->dest - ramp->curr) / ramp->time * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
+}
+
+void tRamp_free(tRamp* const r)
+{
+ _tRamp* ramp = *r;
+
+ leaf_free((char*)ramp);
+}
+
+void tRamp_initToPool (tRamp* const r, float time, int samples_per_tick, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRamp* ramp = *r = (_tRamp*) mpool_alloc(sizeof(_tRamp), m);
+
+ ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
+ ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
+ ramp->curr = 0.0f;
+ ramp->dest = 0.0f;
+
+ if (time < ramp->minimum_time)
+ {
+ ramp->time = ramp->minimum_time;
+ }
+ else
+ {
+ ramp->time = time;
+ }
+ ramp->samples_per_tick = samples_per_tick;
+ ramp->factor = (1.0f / ramp->time) * ramp->inv_sr_ms * (float)ramp->samples_per_tick;
+ ramp->inc = (ramp->dest - ramp->curr) * ramp->factor;
+}
+
+void tRamp_freeFromPool (tRamp* const r, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRamp* ramp = *r;
+
+ mpool_free((char*)ramp, m);
+}
+
+void tRamp_setTime(tRamp* const ramp, float time)
+{
+ _tRamp* r = *ramp;
+
+ if (time < r->minimum_time)
+ {
+ r->time = r->minimum_time;
+ }
+ else
+ {
+ r->time = time;
+ }
+ r->factor = (1.0f / r->time) * r->inv_sr_ms * (float)r->samples_per_tick;
+ r->inc = (r->dest - r->curr) * r->factor;
+
+}
+
+void tRamp_setDest(tRamp* const ramp, float dest)
+{
+ _tRamp* r = *ramp;
+ r->dest = dest;
+ r->inc = (r->dest - r->curr) * r->factor;
+}
+
+void tRamp_setVal(tRamp* const ramp, float val)
+{
+ _tRamp* r = *ramp;
+ r->curr = val;
+ r->inc = (r->dest - r->curr) * r->factor;
+}
+
+float tRamp_tick(tRamp* const ramp)
+{
+ _tRamp* r = *ramp;
+
+ r->curr += r->inc;
+
+ if (((r->curr >= r->dest) && (r->inc > 0.0f)) || ((r->curr <= r->dest) && (r->inc < 0.0f)))
+ {
+ r->inc = 0.0f;
+ r->curr=r->dest;
+ }
+
+ return r->curr;
+}
+
+float tRamp_sample(tRamp* const ramp)
+{
+ _tRamp* r = *ramp;
+ return r->curr;
+}
+
+void tRampSampleRateChanged(tRamp* const ramp)
+{
+ _tRamp* r = *ramp;
+ r->inv_sr_ms = 1.0f / (leaf.sampleRate * 0.001f);
+ r->factor = (1.0f / r->time) * r->inv_sr_ms * (float)r->samples_per_tick;
+ r->inc = (r->dest - r->curr) * r->factor;
+}
+
+
+
+/* RampUpDown */
+void tRampUpDown_init(tRampUpDown* const r, float upTime, float downTime, int samples_per_tick)
+{
+ tRampUpDown_initToPool(r, upTime, downTime, samples_per_tick, &leaf.mempool);
+}
+
+void tRampUpDown_free(tRampUpDown* const r)
+{
+ tRampUpDown_freeFromPool(r, &leaf.mempool);
+}
+
+void tRampUpDown_initToPool(tRampUpDown* const r, float upTime, float downTime, int samples_per_tick, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRampUpDown* ramp = *r = (_tRampUpDown*) mpool_alloc(sizeof(_tRampUpDown), m);
+
+ ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
+ ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
+ ramp->curr = 0.0f;
+ ramp->dest = 0.0f;
+
+ if (upTime < ramp->minimum_time)
+ {
+ ramp->upTime = ramp->minimum_time;
+ }
+ else
+ {
+ ramp->upTime = upTime;
+ }
+
+ if (downTime < ramp->minimum_time)
+ {
+ ramp->downTime = ramp->minimum_time;
+ }
+ else
+ {
+ ramp->downTime = downTime;
+ }
+
+ ramp->samples_per_tick = samples_per_tick;
+ ramp->upInc = ((ramp->dest - ramp->curr) / ramp->upTime * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
+ ramp->downInc = ((ramp->dest - ramp->curr) / ramp->downTime * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
+}
+
+void tRampUpDown_freeFromPool (tRampUpDown* const r, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tRampUpDown* ramp = *r;
+
+ mpool_free((char*)ramp, m);
+}
+
+void tRampUpDown_setUpTime(tRampUpDown* const ramp, float upTime)
+{
+ _tRampUpDown* r = *ramp;
+
+ if (upTime < r->minimum_time)
+ {
+ r->upTime = r->minimum_time;
+ }
+ else
+ {
+ r->upTime = upTime;
+ }
+ r->upInc = ((r->dest - r->curr) / r->upTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+}
+
+
+void tRampUpDown_setDownTime(tRampUpDown* const ramp, float downTime)
+{
+ _tRampUpDown* r = *ramp;
+
+ if (downTime < r->minimum_time)
+ {
+ r->downTime = r->minimum_time;
+ }
+ else
+ {
+ r->downTime = downTime;
+ }
+ r->downInc = ((r->dest - r->curr) / r->downTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+}
+
+void tRampUpDown_setDest(tRampUpDown* const ramp, float dest)
+{
+ _tRampUpDown* r = *ramp;
+ r->dest = dest;
+ r->upInc = ((r->dest - r->curr) / r->upTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+ r->downInc = ((r->dest - r->curr) / r->downTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+}
+
+void tRampUpDown_setVal(tRampUpDown* const ramp, float val)
+{
+ _tRampUpDown* r = *ramp;
+ r->curr = val;
+ r->upInc = ((r->dest - r->curr) / r->upTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+ r->downInc = ((r->dest - r->curr) / r->downTime * r->inv_sr_ms) * (float)r->samples_per_tick;
+}
+
+float tRampUpDown_tick(tRampUpDown* const ramp)
+{
+ _tRampUpDown* r = *ramp;
+ float test;
+
+ if (r->dest < r->curr)
+ {
+ test = r->curr + r->downInc;
+ if (test > r->dest)
+ {
+ r->curr = test;
+ }
+ else
+ {
+ r->downInc = 0.0f;
+ r->curr = r->dest;
+ }
+ }
+ else if (r->dest > r->curr)
+ {
+ test = r->curr + r->upInc;
+ if (test < r->dest)
+ {
+ r->curr = test;
+ }
+ else
+ {
+ r->upInc = 0.0f;
+ r->curr = r->dest;
+ }
+ }
+ return r->curr;
+}
+
+float tRampUpDown_sample(tRampUpDown* const ramp)
+{
+ _tRampUpDown* r = *ramp;
+ return r->curr;
+}
+
+
+
+
+
+
+/* Exponential Smoother */
+void tExpSmooth_init(tExpSmooth* const expsmooth, float val, float factor)
+{ // factor is usually a value between 0 and 0.1. Lower value is slower. 0.01 for example gives you a smoothing time of about 10ms
+ _tExpSmooth* smooth = *expsmooth = (_tExpSmooth*) leaf_alloc(sizeof(_tExpSmooth));
+
+ smooth->curr=val;
+ smooth->dest=val;
+ if (factor<0) factor=0;
+ if (factor>1) factor=1;
+ smooth->factor=factor;
+ smooth->oneminusfactor=1.0f-factor;
+}
+
+void tExpSmooth_free(tExpSmooth* const expsmooth)
+{
+ _tExpSmooth* smooth = *expsmooth;
+
+ leaf_free((char*)smooth);
+}
+
+void tExpSmooth_initToPool (tExpSmooth* const expsmooth, float val, float factor, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tExpSmooth* smooth = *expsmooth = (_tExpSmooth*) mpool_alloc(sizeof(_tExpSmooth), m);
+
+ smooth->curr=val;
+ smooth->dest=val;
+ if (factor<0) factor=0;
+ if (factor>1) factor=1;
+ smooth->factor=factor;
+ smooth->oneminusfactor=1.0f-factor;
+}
+
+void tExpSmooth_freeFromPool (tExpSmooth* const expsmooth, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tExpSmooth* smooth = *expsmooth;
+
+ mpool_free((char*)smooth, m);
+}
+
+void tExpSmooth_setFactor(tExpSmooth* const expsmooth, float factor)
+{ // factor is usually a value between 0 and 0.1. Lower value is slower. 0.01 for example gives you a smoothing time of about 10ms
+ _tExpSmooth* smooth = *expsmooth;
+
+ if (factor<0)
+ factor=0;
+ else
+ if (factor>1) factor=1;
+ smooth->factor=factor;
+ smooth->oneminusfactor=1.0f-factor;
+}
+
+void tExpSmooth_setDest(tExpSmooth* const expsmooth, float dest)
+{
+ _tExpSmooth* smooth = *expsmooth;
+ smooth->dest=dest;
+}
+
+void tExpSmooth_setVal(tExpSmooth* const expsmooth, float val)
+{
+ _tExpSmooth* smooth = *expsmooth;
+ smooth->curr=val;
+}
+
+void tExpSmooth_setValAndDest(tExpSmooth* const expsmooth, float val)
+{
+ _tExpSmooth* smooth = *expsmooth;
+ smooth->curr=val;
+ smooth->dest=val;
+}
+
+float tExpSmooth_tick(tExpSmooth* const expsmooth)
+{
+ _tExpSmooth* smooth = *expsmooth;
+ smooth->curr = smooth->factor*smooth->dest+smooth->oneminusfactor*smooth->curr;
+ return smooth->curr;
+}
+
+float tExpSmooth_sample(tExpSmooth* const expsmooth)
+{
+ _tExpSmooth* smooth = *expsmooth;
+ return smooth->curr;
+}
+
+//tSlide is based on the max/msp slide~ object
+////
+
+void tSlide_init (tSlide* const sl, float upSlide, float downSlide)
+{
+ tSlide_initToPool (sl, upSlide, downSlide, &leaf.mempool);
+}
+void tSlide_free (tSlide* const sl)
+{
+ tSlide_freeFromPool (sl, &leaf.mempool);
+}
+void tSlide_initToPool (tSlide* const sl, float upSlide, float downSlide, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSlide* s = *sl = (_tSlide*) mpool_alloc(sizeof(_tSlide), m);
+ s->prevIn = 0.0f;
+ s->currentOut = 0.0f;
+ s->prevOut = 0.0f;
+ if (upSlide < 1.0f)
+ {
+ upSlide = 1.0f;
+ }
+
+ if (downSlide < 1.0f)
+ {
+ downSlide = 1.0f;
+ }
+ s->invUpSlide = 1.0f / upSlide;
+ s->invDownSlide = 1.0f / downSlide;
+}
+
+void tSlide_freeFromPool (tSlide* const sl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSlide* s = *sl;
+
+ mpool_free((char*)s, m);
+}
+
+float tSlide_tick(tSlide* const sl, float in)
+{
+ _tSlide* s = *sl;
+
+
+ if (in >= s->prevOut)
+ {
+ s->currentOut = s->prevOut + ((in - s->prevOut) * s->invUpSlide);
+ }
+ else
+ {
+ s->currentOut = s->prevOut + ((in - s->prevOut) * s->invDownSlide);
+ }
+ if (s->currentOut < VSF) s->currentOut = 0.0f;
+ s->prevIn = in;
+ s->prevOut = s->currentOut;
+ return s->currentOut;
+}
+
--- /dev/null
+++ b/leaf/Src/leaf-filters.c
@@ -1,0 +1,1802 @@
+/*==============================================================================
+
+ leaf-filter.c
+ Created: 20 Jan 2017 12:01:10pm
+ Author: Michael R Mulshine
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-filters.h"
+#include "..\Inc\leaf-tables.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-filters.h"
+#include "../Inc/leaf-tables.h"
+#include "../leaf.h"
+//#include "tim.h"
+#endif
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tAllpass_init(tAllpass* const ft, float initDelay, uint32_t maxDelay)
+{
+ _tAllpass* f = *ft = (_tAllpass*) leaf_alloc(sizeof(_tAllpass));
+
+ f->gain = 0.7f;
+
+ f->lastOut = 0.0f;
+
+ tLinearDelay_init(&f->delay, initDelay, maxDelay);
+}
+
+void tAllpass_free(tAllpass* const ft)
+{
+ _tAllpass* f = *ft;
+
+ tLinearDelay_free(&f->delay);
+ leaf_free((char*)f);
+}
+
+void tAllpass_initToPool (tAllpass* const ft, float initDelay, uint32_t maxDelay, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAllpass* f = *ft = (_tAllpass*) mpool_alloc(sizeof(_tAllpass), m);
+
+ f->gain = 0.7f;
+
+ f->lastOut = 0.0f;
+
+ tLinearDelay_initToPool(&f->delay, initDelay, maxDelay, mp);
+}
+
+void tAllpass_freeFromPool (tAllpass* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAllpass* f = *ft;
+
+ tLinearDelay_freeFromPool(&f->delay, mp);
+ mpool_free((char*)f, m);
+}
+
+void tAllpass_setDelay(tAllpass* const ft, float delay)
+{
+ _tAllpass* f = *ft;
+
+ tLinearDelay_setDelay(&f->delay, delay);
+}
+
+void tAllpass_setGain(tAllpass* const ft, float gain)
+{
+ _tAllpass* f = *ft;
+
+ f->gain = gain;
+}
+
+float tAllpass_tick(tAllpass* const ft, float input)
+{
+ _tAllpass* f = *ft;
+
+ float s1 = (-f->gain) * f->lastOut + input;
+
+ float s2 = tLinearDelay_tick(&f->delay, s1) + (f->gain) * input;
+
+ f->lastOut = s2;
+
+ return f->lastOut;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tOnePole_init(tOnePole* const ft, float freq)
+{
+ _tOnePole* f = *ft = (_tOnePole*) leaf_alloc(sizeof(_tOnePole));
+
+ f->gain = 1.0f;
+ f->a0 = 1.0;
+
+ tOnePole_setFreq(ft, freq);
+
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+}
+
+void tOnePole_free(tOnePole* const ft)
+{
+ _tOnePole* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tOnePole_initToPool (tOnePole* const ft, float freq, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOnePole* f = *ft = (_tOnePole*) mpool_alloc(sizeof(_tOnePole), m);
+
+ f->gain = 1.0f;
+ f->a0 = 1.0;
+
+ tOnePole_setFreq(ft, freq);
+
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+}
+
+void tOnePole_freeFromPool (tOnePole* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOnePole* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+void tOnePole_setB0(tOnePole* const ft, float b0)
+{
+ _tOnePole* f = *ft;
+ f->b0 = b0;
+}
+
+void tOnePole_setA1(tOnePole* const ft, float a1)
+{
+ _tOnePole* f = *ft;
+ if (a1 >= 1.0f) a1 = 0.999999f;
+ f->a1 = a1;
+}
+
+void tOnePole_setPole(tOnePole* const ft, float thePole)
+{
+ _tOnePole* f = *ft;
+
+ if (thePole >= 1.0f) thePole = 0.999999f;
+
+ // Normalize coefficients for peak unity gain.
+ if (thePole > 0.0f) f->b0 = (1.0f - thePole);
+ else f->b0 = (1.0f + thePole);
+
+ f->a1 = -thePole;
+}
+
+void tOnePole_setFreq (tOnePole* const ft, float freq)
+{
+ _tOnePole* f = *ft;
+ f->b0 = freq * leaf.twoPiTimesInvSampleRate;
+ f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);
+ f->a1 = 1.0f - f->b0;
+}
+
+void tOnePole_setCoefficients(tOnePole* const ft, float b0, float a1)
+{
+ _tOnePole* f = *ft;
+ if (a1 >= 1.0f) a1 = 0.999999f;
+ f->b0 = b0;
+ f->a1 = a1;
+}
+
+void tOnePole_setGain(tOnePole* const ft, float gain)
+{
+ _tOnePole* f = *ft;
+ f->gain = gain;
+}
+
+float tOnePole_tick(tOnePole* const ft, float input)
+{
+ _tOnePole* f = *ft;
+
+ float in = input * f->gain;
+ float out = (f->b0 * in) + (f->a1 * f->lastOut);
+
+ f->lastIn = in;
+ f->lastOut = out;
+
+ return out;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TwoPole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tTwoPole_init(tTwoPole* const ft)
+{
+ _tTwoPole* f = *ft = (_tTwoPole*) leaf_alloc(sizeof(_tTwoPole));
+
+ f->gain = 1.0f;
+ f->a0 = 1.0;
+ f->b0 = 1.0;
+
+ f->lastOut[0] = 0.0f;
+ f->lastOut[1] = 0.0f;
+}
+
+void tTwoPole_free(tTwoPole* const ft)
+{
+ _tTwoPole* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tTwoPole_initToPool (tTwoPole* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTwoPole* f = *ft = (_tTwoPole*) mpool_alloc(sizeof(_tTwoPole), m);
+
+ f->gain = 1.0f;
+ f->a0 = 1.0;
+ f->b0 = 1.0;
+
+ f->lastOut[0] = 0.0f;
+ f->lastOut[1] = 0.0f;
+}
+
+void tTwoPole_freeFromPool (tTwoPole* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTwoPole* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+float tTwoPole_tick(tTwoPole* const ft, float input)
+{
+ _tTwoPole* f = *ft;
+
+ float in = input * f->gain;
+ float out = (f->b0 * in) - (f->a1 * f->lastOut[0]) - (f->a2 * f->lastOut[1]);
+
+ f->lastOut[1] = f->lastOut[0];
+ f->lastOut[0] = out;
+
+ return out;
+}
+
+void tTwoPole_setB0(tTwoPole* const ft, float b0)
+{
+ _tTwoPole* f = *ft;
+ f->b0 = b0;
+}
+
+void tTwoPole_setA1(tTwoPole* const ft, float a1)
+{
+ _tTwoPole* f = *ft;
+ f->a1 = a1;
+}
+
+void tTwoPole_setA2(tTwoPole* const ft, float a2)
+{
+ _tTwoPole* f = *ft;
+ f->a2 = a2;
+}
+
+
+void tTwoPole_setResonance(tTwoPole* const ft, float frequency, float radius, oBool normalize)
+{
+ _tTwoPole* f = *ft;
+
+ if (frequency < 0.0f) frequency = 0.0f;
+ if (frequency > (leaf.sampleRate * 0.49f)) frequency = leaf.sampleRate * 0.49f;
+ if (radius < 0.0f) radius = 0.0f;
+ if (radius >= 1.0f) radius = 0.999999f;
+
+ f->radius = radius;
+ f->frequency = frequency;
+ f->normalize = normalize;
+
+ f->a2 = radius * radius;
+ f->a1 = -2.0f * radius * cosf(frequency * leaf.twoPiTimesInvSampleRate);
+
+ if ( normalize )
+ {
+ // Normalize the filter gain ... not terribly efficient.
+ float real = 1 - radius + (f->a2 - radius) * cosf(2 * frequency * leaf.twoPiTimesInvSampleRate);
+ float imag = (f->a2 - radius) * sinf(2 * frequency * leaf.twoPiTimesInvSampleRate);
+ f->b0 = sqrtf( powf(real, 2) + powf(imag, 2) );
+ }
+}
+
+void tTwoPole_setCoefficients(tTwoPole* const ft, float b0, float a1, float a2)
+{
+ _tTwoPole* f = *ft;
+ f->b0 = b0;
+ f->a1 = a1;
+ f->a2 = a2;
+}
+
+void tTwoPole_setGain(tTwoPole* const ft, float gain)
+{
+ _tTwoPole* f = *ft;
+ f->gain = gain;
+}
+
+void tTwoPoleSampleRateChanged (tTwoPole* const ft)
+{
+ _tTwoPole* f = *ft;
+
+ f->a2 = f->radius * f->radius;
+ f->a1 = -2.0f * f->radius * cosf(f->frequency * leaf.twoPiTimesInvSampleRate);
+
+ if ( f->normalize )
+ {
+ // Normalize the filter gain ... not terribly efficient.
+ float real = 1 - f->radius + (f->a2 - f->radius) * cosf(2 * f->frequency * leaf.twoPiTimesInvSampleRate);
+ float imag = (f->a2 - f->radius) * sinf(2 * f->frequency * leaf.twoPiTimesInvSampleRate);
+ f->b0 = sqrtf( powf(real, 2) + powf(imag, 2) );
+ }
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OneZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tOneZero_init(tOneZero* const ft, float theZero)
+{
+ _tOneZero* f = *ft = (_tOneZero*) leaf_alloc(sizeof(_tOneZero));
+
+ f->gain = 1.0f;
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+ tOneZero_setZero(ft, theZero);
+}
+
+void tOneZero_free(tOneZero* const ft)
+{
+ _tOneZero* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tOneZero_initToPool (tOneZero* const ft, float theZero, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOneZero* f = *ft = (_tOneZero*) mpool_alloc(sizeof(_tOneZero), m);
+
+ f->gain = 1.0f;
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+ tOneZero_setZero(ft, theZero);
+}
+
+void tOneZero_freeFromPool (tOneZero* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tOneZero* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+float tOneZero_tick(tOneZero* const ft, float input)
+{
+ _tOneZero* f = *ft;
+
+ float in = input * f->gain;
+ float out = f->b1 * f->lastIn + f->b0 * in;
+
+ f->lastIn = in;
+
+ return out;
+}
+
+void tOneZero_setZero(tOneZero* const ft, float theZero)
+{
+ _tOneZero* f = *ft;
+
+ if (theZero > 0.0f) f->b0 = 1.0f / (1.0f + theZero);
+ else f->b0 = 1.0f / (1.0f - theZero);
+
+ f->b1 = -theZero * f->b0;
+
+}
+
+void tOneZero_setB0(tOneZero* const ft, float b0)
+{
+ _tOneZero* f = *ft;
+
+ f->b0 = b0;
+}
+
+void tOneZero_setB1(tOneZero* const ft, float b1)
+{
+ _tOneZero* f = *ft;
+ f->b1 = b1;
+}
+
+void tOneZero_setCoefficients(tOneZero* const ft, float b0, float b1)
+{
+ _tOneZero* f = *ft;
+ f->b0 = b0;
+ f->b1 = b1;
+}
+
+void tOneZero_setGain(tOneZero *ft, float gain)
+{
+ _tOneZero* f = *ft;
+ f->gain = gain;
+}
+
+float tOneZero_getPhaseDelay(tOneZero* const ft, float frequency )
+{
+ _tOneZero* f = *ft;
+
+ if ( frequency <= 0.0f) frequency = 0.05f;
+
+ f->frequency = frequency;
+
+ float omegaT = 2 * PI * frequency * leaf.invSampleRate;
+ float real = 0.0, imag = 0.0;
+
+ real += f->b0;
+
+ real += f->b1 * cosf(omegaT);
+ imag -= f->b1 * sinf(omegaT);
+
+ real *= f->gain;
+ imag *= f->gain;
+
+ float phase = atan2f( imag, real );
+
+ real = 0.0; imag = 0.0;
+
+ phase -= atan2f( imag, real );
+
+ phase = fmodf( -phase, 2 * PI );
+
+ return phase / omegaT;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TwoZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tTwoZero_init(tTwoZero* const ft)
+{
+ _tTwoZero* f = *ft = (_tTwoZero*) leaf_alloc(sizeof(_tTwoZero));
+
+ f->gain = 1.0f;
+ f->lastIn[0] = 0.0f;
+ f->lastIn[1] = 0.0f;
+}
+
+void tTwoZero_free(tTwoZero* const ft)
+{
+ _tTwoZero* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tTwoZero_initToPool (tTwoZero* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTwoZero* f = *ft = (_tTwoZero*) mpool_alloc(sizeof(_tTwoZero), m);
+
+ f->gain = 1.0f;
+ f->lastIn[0] = 0.0f;
+ f->lastIn[1] = 0.0f;
+}
+
+void tTwoZero_freeFromPool (tTwoZero* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTwoZero* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+float tTwoZero_tick(tTwoZero* const ft, float input)
+{
+ _tTwoZero* f = *ft;
+
+ float in = input * f->gain;
+ float out = f->b2 * f->lastIn[1] + f->b1 * f->lastIn[0] + f->b0 * in;
+
+ f->lastIn[1] = f->lastIn[0];
+ f->lastIn[0] = in;
+
+ return out;
+}
+
+void tTwoZero_setNotch(tTwoZero* const ft, float freq, float radius)
+{
+ _tTwoZero* f = *ft;
+
+ // Should also deal with frequency being > half sample rate / nyquist. See STK
+ if (freq < 0.0f) freq = 0.0f;
+ if (radius < 0.0f) radius = 0.0f;
+
+ f->frequency = freq;
+ f->radius = radius;
+
+ f->b2 = radius * radius;
+ f->b1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate); // OPTIMIZE with LOOKUP or APPROXIMATION
+
+ // Normalize the filter gain. From STK.
+ if ( f->b1 > 0.0f ) // Maximum at z = 0.
+ f->b0 = 1.0f / ( 1.0f + f->b1 + f->b2 );
+ else // Maximum at z = -1.
+ f->b0 = 1.0f / ( 1.0f - f->b1 + f->b2 );
+ f->b1 *= f->b0;
+ f->b2 *= f->b0;
+
+}
+
+void tTwoZero_setB0(tTwoZero* const ft, float b0)
+{
+ _tTwoZero* f = *ft;
+ f->b0 = b0;
+}
+
+void tTwoZero_setB1(tTwoZero* const ft, float b1)
+{
+ _tTwoZero* f = *ft;
+ f->b1 = b1;
+}
+
+void tTwoZero_setCoefficients(tTwoZero* const ft, float b0, float b1, float b2)
+{
+ _tTwoZero* f = *ft;
+ f->b0 = b0;
+ f->b1 = b1;
+ f->b2 = b2;
+}
+
+void tTwoZero_setGain(tTwoZero* const ft, float gain)
+{
+ _tTwoZero* f = *ft;
+ f->gain = gain;
+}
+
+void tTwoZeroSampleRateChanged(tTwoZero* const ft)
+{
+ _tTwoZero* f = *ft;
+
+ tTwoZero_setNotch(ft, f->frequency, f->radius);
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ PoleZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tPoleZero_init(tPoleZero* const pzf)
+{
+ _tPoleZero* f = *pzf = (_tPoleZero*) leaf_alloc(sizeof(_tPoleZero));
+
+ f->gain = 1.0f;
+ f->b0 = 1.0;
+ f->a0 = 1.0;
+
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+}
+
+void tPoleZero_free(tPoleZero* const pzf)
+{
+ _tPoleZero* f = *pzf;
+
+ leaf_free((char*)f);
+}
+
+void tPoleZero_initToPool (tPoleZero* const pzf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPoleZero* f = *pzf = (_tPoleZero*) mpool_alloc(sizeof(_tPoleZero), m);
+
+ f->gain = 1.0f;
+ f->b0 = 1.0;
+ f->a0 = 1.0;
+
+ f->lastIn = 0.0f;
+ f->lastOut = 0.0f;
+}
+
+void tPoleZero_freeFromPool (tPoleZero* const pzf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPoleZero* f = *pzf;
+
+ mpool_free((char*)f, m);
+}
+
+void tPoleZero_setB0(tPoleZero* const pzf, float b0)
+{
+ _tPoleZero* f = *pzf;
+ f->b0 = b0;
+}
+
+void tPoleZero_setB1(tPoleZero* const pzf, float b1)
+{
+ _tPoleZero* f = *pzf;
+ f->b1 = b1;
+}
+
+void tPoleZero_setA1(tPoleZero* const pzf, float a1)
+{
+ _tPoleZero* f = *pzf;
+
+ if (a1 >= 1.0f) // a1 should be less than 1.0
+ {
+ a1 = 0.999999f;
+ }
+
+ f->a1 = a1;
+}
+
+void tPoleZero_setCoefficients(tPoleZero* const pzf, float b0, float b1, float a1)
+{
+ _tPoleZero* f = *pzf;
+
+ if (a1 >= 1.0f) // a1 should be less than 1.0
+ {
+ a1 = 0.999999f;
+ }
+
+ f->b0 = b0;
+ f->b1 = b1;
+ f->a1 = a1;
+}
+
+void tPoleZero_setAllpass(tPoleZero* const pzf, float coeff)
+{
+ _tPoleZero* f = *pzf;
+
+ if (coeff >= 1.0f) // allpass coefficient >= 1.0 makes filter unstable
+ {
+ coeff = 0.999999f;
+ }
+
+ f->b0 = coeff;
+ f->b1 = 1.0f;
+ f->a0 = 1.0f;
+ f->a1 = coeff;
+}
+
+void tPoleZero_setBlockZero(tPoleZero* const pzf, float thePole)
+{
+ _tPoleZero* f = *pzf;
+
+ if (thePole >= 1.0f) // allpass coefficient >= 1.0 makes filter unstable
+ {
+ thePole = 0.999999f;
+ }
+
+ f->b0 = 1.0f;
+ f->b1 = -1.0f;
+ f->a0 = 1.0f;
+ f->a1 = -thePole;
+}
+
+void tPoleZero_setGain(tPoleZero* const pzf, float gain)
+{
+ _tPoleZero* f = *pzf;
+ f->gain = gain;
+}
+
+float tPoleZero_tick(tPoleZero* const pzf, float input)
+{
+ _tPoleZero* f = *pzf;
+
+ float in = input * f->gain;
+ float out = (f->b0 * in) + (f->b1 * f->lastIn) - (f->a1 * f->lastOut);
+
+ f->lastIn = in;
+ f->lastOut = out;
+
+ return out;
+}
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ BiQuad Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tBiQuad_init(tBiQuad* const ft)
+{
+ _tBiQuad* f = *ft = (_tBiQuad*) leaf_alloc(sizeof(_tBiQuad));
+
+ f->gain = 1.0f;
+
+ f->b0 = 0.0f;
+ f->a0 = 0.0f;
+
+ f->lastIn[0] = 0.0f;
+ f->lastIn[1] = 0.0f;
+ f->lastOut[0] = 0.0f;
+ f->lastOut[1] = 0.0f;
+}
+
+void tBiQuad_free(tBiQuad* const ft)
+{
+ _tBiQuad* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tBiQuad_initToPool (tBiQuad* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tBiQuad* f = *ft = (_tBiQuad*) mpool_alloc(sizeof(_tBiQuad), m);
+
+ f->gain = 1.0f;
+
+ f->b0 = 0.0f;
+ f->a0 = 0.0f;
+
+ f->lastIn[0] = 0.0f;
+ f->lastIn[1] = 0.0f;
+ f->lastOut[0] = 0.0f;
+ f->lastOut[1] = 0.0f;
+}
+
+void tBiQuad_freeFromPool (tBiQuad* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tBiQuad* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+float tBiQuad_tick(tBiQuad* const ft, float input)
+{
+ _tBiQuad* f = *ft;
+
+ float in = input * f->gain;
+ float out = f->b0 * in + f->b1 * f->lastIn[0] + f->b2 * f->lastIn[1];
+ out -= f->a2 * f->lastOut[1] + f->a1 * f->lastOut[0];
+
+ f->lastIn[1] = f->lastIn[0];
+ f->lastIn[0] = in;
+
+ f->lastOut[1] = f->lastOut[0];
+ f->lastOut[0] = out;
+
+ return out;
+}
+
+void tBiQuad_setResonance(tBiQuad* const ft, float freq, float radius, oBool normalize)
+{
+ _tBiQuad* f = *ft;
+
+ if (freq < 0.0f) freq = 0.0f;
+ if (freq > (leaf.sampleRate * 0.49f)) freq = leaf.sampleRate * 0.49f;
+ if (radius < 0.0f) radius = 0.0f;
+ if (radius >= 1.0f) radius = 1.0f;
+
+ f->frequency = freq;
+ f->radius = radius;
+ f->normalize = normalize;
+
+ f->a2 = radius * radius;
+ f->a1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate);
+
+ if (normalize)
+ {
+ f->b0 = 0.5f - 0.5f * f->a2;
+ f->b1 = 0.0f;
+ f->b2 = -f->b0;
+ }
+}
+
+void tBiQuad_setNotch(tBiQuad* const ft, float freq, float radius)
+{
+ _tBiQuad* f = *ft;
+
+ if (freq < 0.0f) freq = 0.0f;
+ if (freq > (leaf.sampleRate * 0.49f)) freq = leaf.sampleRate * 0.49f;
+ if (radius < 0.0f) radius = 0.0f;
+
+ f->b2 = radius * radius;
+ f->b1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate); // OPTIMIZE with LOOKUP or APPROXIMATION
+
+ // Does not attempt to normalize filter gain.
+}
+
+void tBiQuad_setEqualGainZeros(tBiQuad* const ft)
+{
+ _tBiQuad* f = *ft;
+ f->b0 = 1.0f;
+ f->b1 = 0.0f;
+ f->b2 = -1.0f;
+}
+
+void tBiQuad_setB0(tBiQuad* const ft, float b0)
+{
+ _tBiQuad* f = *ft;
+ f->b0 = b0;
+}
+
+void tBiQuad_setB1(tBiQuad* const ft, float b1)
+{
+ _tBiQuad* f = *ft;
+ f->b1 = b1;
+}
+
+void tBiQuad_setB2(tBiQuad* const ft, float b2)
+{
+ _tBiQuad* f = *ft;
+ f->b2 = b2;
+}
+
+void tBiQuad_setA1(tBiQuad* const ft, float a1)
+{
+ _tBiQuad* f = *ft;
+ f->a1 = a1;
+}
+
+void tBiQuad_setA2(tBiQuad* const ft, float a2)
+{
+ _tBiQuad* f = *ft;
+ f->a2 = a2;
+}
+
+void tBiQuad_setCoefficients(tBiQuad* const ft, float b0, float b1, float b2, float a1, float a2)
+{
+ _tBiQuad* f = *ft;
+ f->b0 = b0;
+ f->b1 = b1;
+ f->b2 = b2;
+ f->a1 = a1;
+ f->a2 = a2;
+}
+
+void tBiQuad_setGain(tBiQuad* const ft, float gain)
+{
+ _tBiQuad* f = *ft;
+ f->gain = gain;
+}
+
+void tBiQuadSampleRateChanged(tBiQuad* const ft)
+{
+ _tBiQuad* f = *ft;
+ f->a2 = f->radius * f->radius;
+ f->a1 = -2.0f * f->radius * cosf(f->frequency * leaf.twoPiTimesInvSampleRate);
+
+ if (f->normalize)
+ {
+ f->b0 = 0.5f - 0.5f * f->a2;
+ f->b1 = 0.0f;
+ f->b2 = -f->b0;
+ }
+}
+
+// Less efficient, more accurate version of SVF, in which cutoff frequency is taken as floating point Hz value and tanf
+// is calculated when frequency changes.
+void tSVF_init(tSVF* const svff, SVFType type, float freq, float Q)
+{
+ tSVF_initToPool (svff, type, freq, Q, &leaf.mempool);
+
+ // or maybe this?
+ /*
+ * hp=1 bp=A/Q (where A is 10^(G/40) and G is gain in decibels) and lp = 1
+ */
+
+}
+
+void tSVF_free(tSVF* const svff)
+{
+ tSVF_freeFromPool (svff, &leaf.mempool);
+}
+
+void tSVF_initToPool (tSVF* const svff, SVFType type, float freq, float Q, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSVF* svf = *svff = (_tSVF*) mpool_alloc(sizeof(_tSVF), m);
+
+ svf->type = type;
+
+ svf->ic1eq = 0;
+ svf->ic2eq = 0;
+ svf->Q = Q;
+ svf->cutoff = freq;
+ svf->g = tanf(PI * freq * leaf.invSampleRate);
+ svf->k = 1.0f/Q;
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g*svf->a1;
+ svf->a3 = svf->g*svf->a2;
+ svf->cH = 0.0f;
+ svf->cB = 0.0f;
+ svf->cL = 1.0f;
+
+ if (type == SVFTypeLowpass)
+ {
+ svf->cH = 0.0f;
+ svf->cB = 0.0f;
+ svf->cBK = 0.0f;
+ svf->cL = 1.0f;
+ }
+ else if (type == SVFTypeBandpass)
+ {
+ svf->cH = 0.0f;
+ svf->cB = 1.0f;
+ svf->cBK = 0.0f;
+ svf->cL = 0.0f;
+ }
+
+ else if (type == SVFTypeHighpass)
+ {
+ svf->cH = 1.0f;
+ svf->cB = 0.0f;
+ svf->cBK = -1.0f;
+ svf->cL = -1.0f;
+ }
+
+ else if (type == SVFTypeNotch)
+ {
+ svf->cH = 1.0f;
+ svf->cB = 0.0f;
+ svf->cBK = -1.0f;
+ svf->cL = 0.0f;
+ }
+
+
+ else if (type == SVFTypePeak)
+ {
+ svf->cH = 1.0f;
+ svf->cB = 0.0f;
+ svf->cBK = -1.0f;
+ svf->cL = -2.0f;
+ }
+}
+
+void tSVF_freeFromPool (tSVF* const svff, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSVF* svf = *svff;
+
+ mpool_free((char*)svf, m);
+}
+
+float tSVF_tick(tSVF* const svff, float v0)
+{
+ _tSVF* svf = *svff;
+
+ float v1,v2,v3;
+ v3 = v0 - svf->ic2eq;
+ v1 = (svf->a1 * svf->ic1eq) + (svf->a2 * v3);
+ v2 = svf->ic2eq + (svf->a2 * svf->ic1eq) + (svf->a3 * v3);
+ svf->ic1eq = (2.0f * v1) - svf->ic1eq;
+ svf->ic2eq = (2.0f * v2) - svf->ic2eq;
+
+ return (v0 * svf->cH) + (v1 * svf->cB) + (svf->k * v1 * svf->cBK) + (v2 * svf->cL);
+}
+
+void tSVF_setFreq(tSVF* const svff, float freq)
+{
+ _tSVF* svf = *svff;
+ svf->cutoff = freq;
+ svf->g = tanf(PI * freq * leaf.invSampleRate);
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g * svf->a1;
+ svf->a3 = svf->g * svf->a2;
+}
+
+void tSVF_setQ(tSVF* const svff, float Q)
+{
+ _tSVF* svf = *svff;
+ svf->Q = Q;
+ svf->k = 1.0f/Q;
+
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g * svf->a1;
+ svf->a3 = svf->g * svf->a2;
+}
+
+void tSVF_setFreqAndQ(tSVF* const svff, float freq, float Q)
+{
+ _tSVF* svf = *svff;
+ svf->k = 1.0f/Q;
+ svf->g = tanf(PI * freq * leaf.invSampleRate);
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g * svf->a1;
+ svf->a3 = svf->g * svf->a2;
+}
+
+// Efficient version of tSVF where frequency is set based on 12-bit integer input for lookup in tanh wavetable.
+void tEfficientSVF_init(tEfficientSVF* const svff, SVFType type, uint16_t input, float Q)
+{
+ _tEfficientSVF* svf = *svff = (_tEfficientSVF*) leaf_alloc(sizeof(_tEfficientSVF));
+
+ svf->type = type;
+
+ svf->ic1eq = 0;
+ svf->ic2eq = 0;
+
+ svf->g = __leaf_table_filtertan[input];
+ svf->k = 1.0f/Q;
+ svf->a1 = 1.0f/(1.0f+svf->g*(svf->g+svf->k));
+ svf->a2 = svf->g*svf->a1;
+ svf->a3 = svf->g*svf->a2;
+}
+
+void tEfficientSVF_free(tEfficientSVF* const svff)
+{
+ _tEfficientSVF* svf = *svff;
+
+ leaf_free((char*)svf);
+}
+
+void tEfficientSVF_initToPool (tEfficientSVF* const svff, SVFType type, uint16_t input, float Q, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEfficientSVF* svf = *svff = (_tEfficientSVF*) mpool_alloc(sizeof(_tEfficientSVF), m);
+
+ svf->type = type;
+
+ svf->ic1eq = 0;
+ svf->ic2eq = 0;
+
+ svf->g = __leaf_table_filtertan[input];
+ svf->k = 1.0f/Q;
+ svf->a1 = 1.0f/(1.0f+svf->g*(svf->g+svf->k));
+ svf->a2 = svf->g*svf->a1;
+ svf->a3 = svf->g*svf->a2;
+}
+
+void tEfficientSVF_freeFromPool (tEfficientSVF* const svff, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tEfficientSVF* svf = *svff;
+
+ mpool_free((char*)svf, m);
+}
+
+float tEfficientSVF_tick(tEfficientSVF* const svff, float v0)
+{
+ _tEfficientSVF* svf = *svff;
+
+ float v1,v2,v3;
+ v3 = v0 - svf->ic2eq;
+ v1 = (svf->a1 * svf->ic1eq) + (svf->a2 * v3);
+ v2 = svf->ic2eq + (svf->a2 * svf->ic1eq) + (svf->a3 * v3);
+ svf->ic1eq = (2.0f * v1) - svf->ic1eq;
+ svf->ic2eq = (2.0f * v2) - svf->ic2eq;
+
+ if (svf->type == SVFTypeLowpass) return v2;
+ else if (svf->type == SVFTypeBandpass) return v1;
+ else if (svf->type == SVFTypeHighpass) return v0 - (svf->k * v1) - v2;
+ else if (svf->type == SVFTypeNotch) return v0 - (svf->k * v1);
+ else if (svf->type == SVFTypePeak) return v0 - (svf->k * v1) - (2.0f * v2);
+ else return 0.0f;
+
+}
+
+void tEfficientSVF_setFreq(tEfficientSVF* const svff, uint16_t input)
+{
+ _tEfficientSVF* svf = *svff;
+
+ svf->g = __leaf_table_filtertan[input];
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g * svf->a1;
+ svf->a3 = svf->g * svf->a2;
+}
+
+void tEfficientSVF_setQ(tEfficientSVF* const svff, float Q)
+{
+ _tEfficientSVF* svf = *svff;
+
+ svf->k = 1.0f/Q;
+ svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
+ svf->a2 = svf->g * svf->a1;
+ svf->a3 = svf->g * svf->a2;
+}
+
+/* Highpass */
+void tHighpass_init(tHighpass* const ft, float freq)
+{
+ _tHighpass* f = *ft = (_tHighpass*) leaf_alloc(sizeof(_tHighpass));
+
+ f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
+ f->ys = 0.0f;
+ f->xs = 0.0f;
+
+ f->frequency = freq;
+}
+
+void tHighpass_free(tHighpass* const ft)
+{
+ _tHighpass* f = *ft;
+
+ leaf_free((char*)f);
+}
+
+void tHighpass_initToPool (tHighpass* const ft, float freq, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tHighpass* f = *ft = (_tHighpass*) mpool_calloc(sizeof(_tHighpass), m);
+
+ f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
+ f->ys = 0.0f;
+ f->xs = 0.0f;
+
+ f->frequency = freq;
+}
+
+void tHighpass_freeFromPool (tHighpass* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tHighpass* f = *ft;
+
+ mpool_free((char*)f, m);
+}
+
+void tHighpass_setFreq(tHighpass* const ft, float freq)
+{
+ _tHighpass* f = *ft;
+ f->frequency = freq;
+ f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
+
+}
+
+float tHighpass_getFreq(tHighpass* const ft)
+{
+ _tHighpass* f = *ft;
+ return f->frequency;
+}
+
+// From JOS DC Blocker
+float tHighpass_tick(tHighpass* const ft, float x)
+{
+ _tHighpass* f = *ft;
+ f->ys = x - f->xs + f->R * f->ys;
+ f->xs = x;
+ return f->ys;
+}
+
+void tHighpassSampleRateChanged(tHighpass* const ft)
+{
+ _tHighpass* f = *ft;
+ f->R = (1.0f-((f->frequency * 2.0f * 3.14f) * leaf.invSampleRate));
+}
+
+void tButterworth_init(tButterworth* const ft, int N, float f1, float f2)
+{
+ _tButterworth* f = *ft = (_tButterworth*) leaf_alloc(sizeof(_tButterworth));
+
+ f->f1 = f1;
+ f->f2 = f2;
+ f->gain = 1.0f;
+
+ f->N = N;
+
+ if (f->N > NUM_SVF_BW) f->N = NUM_SVF_BW;
+
+ for(int i = 0; i < N/2; ++i)
+ {
+ tSVF_init(&f->low[i], SVFTypeHighpass, f1, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)));
+ tSVF_init(&f->high[i], SVFTypeLowpass, f2, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)));
+ }
+}
+
+void tButterworth_free(tButterworth* const ft)
+{
+ _tButterworth* f = *ft;
+
+ for(int i = 0; i < f->N/2; ++i)
+ {
+ tSVF_free(&f->low[i]);
+ tSVF_free(&f->high[i]);
+ }
+
+ leaf_free((char*)f);
+}
+
+void tButterworth_initToPool (tButterworth* const ft, int N, float f1, float f2, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tButterworth* f = *ft = (_tButterworth*) mpool_alloc(sizeof(_tButterworth), m);
+
+ f->f1 = f1;
+ f->f2 = f2;
+ f->gain = 1.0f;
+
+ f->N = N;
+
+ if (f->N > NUM_SVF_BW) f->N = NUM_SVF_BW;
+
+ for(int i = 0; i < N/2; ++i)
+ {
+ tSVF_initToPool(&f->low[i], SVFTypeHighpass, f1, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)), mp);
+ tSVF_initToPool(&f->high[i], SVFTypeLowpass, f2, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)), mp);
+ }
+}
+
+void tButterworth_freeFromPool (tButterworth* const ft, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tButterworth* f = *ft;
+
+ for(int i = 0; i < f->N/2; ++i)
+ {
+ tSVF_freeFromPool(&f->low[i], mp);
+ tSVF_freeFromPool(&f->high[i], mp);
+ }
+
+ mpool_free((char*)f, m);
+}
+
+float tButterworth_tick(tButterworth* const ft, float samp)
+{
+ _tButterworth* f = *ft;
+
+ for(int i = 0; i < ((f->N)/2); ++i)
+ {
+ samp = tSVF_tick(&f->low[i],samp);
+ samp = tSVF_tick(&f->high[i],samp);
+ }
+ return samp;
+}
+
+void tButterworth_setF1(tButterworth* const ft, float f1)
+{
+ _tButterworth* f = *ft;
+
+ f->f1 = f1;
+ for(int i = 0; i < ((f->N)/2); ++i) tSVF_setFreq(&f->low[i], f1);
+}
+
+void tButterworth_setF2(tButterworth* const ft, float f2)
+{
+ _tButterworth* f = *ft;
+
+ f->f2 = f2;
+ for(int i = 0; i < ((f->N)/2); ++i) tSVF_setFreq(&f->high[i], f2);
+}
+
+void tButterworth_setFreqs(tButterworth* const ft, float f1, float f2)
+{
+ _tButterworth* f = *ft;
+
+ f->f1 = f1;
+ f->f2 = f2;
+ for(int i = 0; i < ((f->N)/2); ++i)
+ {
+ tSVF_setFreq(&f->low[i], f1);
+ tSVF_setFreq(&f->high[i], f2);
+ }
+}
+
+void tFIR_init(tFIR* const firf, float* coeffs, int numTaps)
+{
+ _tFIR* fir = *firf = (_tFIR*) leaf_alloc(sizeof(_tFIR));
+
+ fir->numTaps = numTaps;
+ fir->coeff = coeffs;
+ fir->past = (float*)leaf_alloc(sizeof(float) * fir->numTaps);
+ for (int i = 0; i < fir->numTaps; ++i) fir->past[i] = 0.0f;
+}
+
+void tFIR_free(tFIR* const firf)
+{
+ _tFIR* fir = *firf;
+
+ leaf_free((char*)fir->past);
+ leaf_free((char*)fir);
+}
+
+void tFIR_initToPool (tFIR* const firf, float* coeffs, int numTaps, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFIR* fir = *firf = (_tFIR*) mpool_alloc(sizeof(_tFIR), m);
+
+ fir->numTaps = numTaps;
+ fir->coeff = coeffs;
+ fir->past = (float*) mpool_alloc(sizeof(float) * fir->numTaps, m);
+ for (int i = 0; i < fir->numTaps; ++i) fir->past[i] = 0.0f;
+}
+
+void tFIR_freeFromPool (tFIR* const firf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tFIR* fir = *firf;
+
+ mpool_free((char*)fir->past, m);
+ mpool_free((char*)fir, m);
+}
+
+float tFIR_tick(tFIR* const firf, float input)
+{
+ _tFIR* fir = *firf;
+
+ fir->past[0] = input;
+ float y = 0.0f;
+ for (int i = 0; i < fir->numTaps; ++i) y += fir->past[i]*fir->coeff[i];
+ for (int i = fir->numTaps-1; i > 0; --i) fir->past[i] = fir->past[i-1];
+ return y;
+}
+
+//---------------------------------------------
+////
+/// Median filter implemented based on James McCartney's median filter in Supercollider,
+/// translated from a Gen~ port of the Supercollider code that I believe was made by Rodrigo Costanzo and which I got from PA Tremblay - JS
+
+
+void tMedianFilter_init (tMedianFilter* const f, int size)
+{
+ tMedianFilter_initToPool(f, size, &leaf.mempool);
+}
+void tMedianFilter_free (tMedianFilter* const f)
+{
+ tMedianFilter_freeFromPool(f, &leaf.mempool);
+}
+void tMedianFilter_initToPool (tMedianFilter* const mf, int size, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMedianFilter* f = *mf = (_tMedianFilter*) mpool_alloc(sizeof(_tMedianFilter), m);
+
+ f->size = size;
+ f->middlePosition = size / 2;
+ f->last = size - 1;
+ f->pos = -1;
+ f->val = (float*) mpool_alloc(sizeof(float) * size, m);
+ f->age = (int*) mpool_alloc(sizeof(int) * size, m);
+ for (int i = 0; i < f->size; ++i)
+ {
+ f->val[i] = 0.0f;
+ f->age[i] = i;
+ }
+
+}
+void tMedianFilter_freeFromPool (tMedianFilter* const mf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMedianFilter* f = *mf;
+
+ mpool_free((char*)f->val, m);
+ mpool_free((char*)f->age, m);
+ mpool_free((char*)f, m);
+}
+
+float tMedianFilter_tick (tMedianFilter* const mf, float input)
+{
+ _tMedianFilter* f = *mf;
+
+ for(int i=0; i<f->size; i++) {
+ int thisAge = f->age[i];
+ if(thisAge == f->last) {
+ f->pos = i;
+ }
+ else {
+ thisAge++;
+ f->age[i] = thisAge;
+ }
+ }
+
+ while( f->pos!=0 ) {
+ float test = f->val[f->pos-1];
+ if(input < test) {
+ f->val[f->pos]=test;
+ f->age[f->pos]=f->age[f->pos-1];
+ f->pos -= 1;
+ } else {break;}
+ }
+
+ while(f->pos != f->last) {
+ float test = f->val[f->pos+1];
+ if( input > test) {
+ f->val[f->pos] = test;
+ f->age[f->pos] = f->age[f->pos+1];
+ f->pos += 1;
+ } else {break;}
+ }
+
+ f->val[f->pos] = input;
+ f->age[f->pos] = 0;
+
+ return f->val[f->middlePosition];
+}
+
+/////
+
+void tVZFilter_init (tVZFilter* const vf, VZFilterType type, float freq, float bandWidth)
+{
+ tVZFilter_initToPool(vf, type, freq, bandWidth, &leaf.mempool);
+}
+
+void tVZFilter_free (tVZFilter* const vf)
+{
+ tVZFilter_freeFromPool(vf, &leaf.mempool);
+}
+void tVZFilter_initToPool (tVZFilter* const vf, VZFilterType type, float freq, float bandWidth, tMempool* const mp)
+{
+
+ _tMempool* m = *mp;
+ _tVZFilter* f = *vf = (_tVZFilter*) mpool_alloc(sizeof(_tVZFilter), m);
+ f->fc = freq;
+ f->type = type;
+ f->G = ONE_OVER_SQRT2;
+ f->invG = 1.0f/ONE_OVER_SQRT2;
+ f->B = bandWidth;
+ f->m = 0.0f;
+ f->s1 = 0.0f;
+ f->s2 = 0.0f;
+ f->sr = leaf.sampleRate;
+ f->inv_sr = leaf.invSampleRate;
+ tVZFilter_calcCoeffs(vf);
+
+
+}
+void tVZFilter_freeFromPool (tVZFilter* const vf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tVZFilter* f = *vf = (_tVZFilter*) mpool_alloc(sizeof(_tVZFilter), m);
+ mpool_free((char*)f, m);
+}
+
+void tVZFilter_setSampleRate (tVZFilter* const vf, float sampleRate)
+{
+ _tVZFilter* f = *vf;
+ f->sr = sampleRate;
+ f->inv_sr = 1.0f/sampleRate;
+}
+
+float tVZFilter_tick (tVZFilter* const vf, float in)
+{
+ _tVZFilter* f = *vf;
+
+ float yL, yB, yH;
+
+ // compute highpass output via Eq. 5.1:
+ yH = (in - f->R2*f->s1 - f->g*f->s1 - f->s2) * f->h;
+
+ // compute bandpass output by applying 1st integrator to highpass output:
+ yB = tanhf(f->g*yH) + f->s1;
+ f->s1 = f->g*yH + yB; // state update in 1st integrator
+
+ // compute lowpass output by applying 2nd integrator to bandpass output:
+ yL = tanhf(f->g*yB) + f->s2;
+ f->s2 = f->g*yB + yL; // state update in 2nd integrator
+
+ //according to the Vadim paper, we could add saturation to this model by adding a tanh in the integration stage.
+ //
+ //seems like that might look like this:
+ // y = tanh(g*x) + s; // output computation
+ // s = g*x + y; // state update
+
+ //instead of this:
+ // y = g*x + s; // output computation
+ // s = g*x + y; // state update
+
+ return f->cL*yL + f->cB*yB + f->cH*yH;
+
+}
+
+float tVZFilter_tickEfficient (tVZFilter* const vf, float in)
+{
+ _tVZFilter* f = *vf;
+
+ float yL, yB, yH;
+
+ // compute highpass output via Eq. 5.1:
+ yH = (in - f->R2*f->s1 - f->g*f->s1 - f->s2) * f->h;
+
+ // compute bandpass output by applying 1st integrator to highpass output:
+ yB = (f->g*yH) + f->s1;
+ f->s1 = f->g*yH + yB; // state update in 1st integrator
+
+ // compute lowpass output by applying 2nd integrator to bandpass output:
+ yL = (f->g*yB) + f->s2;
+ f->s2 = f->g*yB + yL; // state update in 2nd integrator
+
+ //according to the Vadim paper, we could add saturation to this model by adding a tanh in the integration stage.
+ //
+ //seems like that might look like this:
+ // y = tanh(g*x) + s; // output computation
+ // s = g*x + y; // state update
+
+ //instead of this:
+ // y = g*x + s; // output computation
+ // s = g*x + y; // state update
+
+ return f->cL*yL + f->cB*yB + f->cH*yH;
+
+}
+
+float tVZFilter_tickEfficientBP (tVZFilter* const vf, float in)
+{
+ _tVZFilter* f = *vf;
+
+ float yL, yB, yH;
+
+ // compute highpass output via Eq. 5.1:
+ yH = (in - f->R2*f->s1 - f->g*f->s1 - f->s2) * f->h;
+
+ // compute bandpass output by applying 1st integrator to highpass output:
+ yB = (f->g*yH) + f->s1;
+ f->s1 = f->g*yH + yB; // state update in 1st integrator
+
+ // compute lowpass output by applying 2nd integrator to bandpass output:
+ yL = (f->g*yB) + f->s2;
+ f->s2 = f->g*yB + yL; // state update in 2nd integrator
+
+ //according to the Vadim paper, we could add saturation to this model by adding a tanh in the integration stage.
+ //
+ //seems like that might look like this:
+ // y = tanh(g*x) + s; // output computation
+ // s = g*x + y; // state update
+
+ //instead of this:
+ // y = g*x + s; // output computation
+ // s = g*x + y; // state update
+
+ return f->cL*yL + f->cB*yB + f->cH*yH;
+
+}
+
+
+void tVZFilter_calcCoeffs (tVZFilter* const vf)
+{
+
+ _tVZFilter* f = *vf;
+ f->g = tanf(PI * f->fc * f->inv_sr); // embedded integrator gain (Fig 3.11)
+
+ switch( f->type )
+ {
+ case Bypass:
+ {
+ f->R2 = f->invG; // can we use an arbitrary value here, for example R2 = 1?
+ f->cL = 1.0f;
+ f->cB = f->R2;
+ f->cH = 1.0f;
+ }
+ break;
+ case Lowpass:
+ {
+ f->R2 = f->invG;
+ f->cL = 1.0f; f->cB = 0.0f; f->cH = 0.0f;
+ }
+ break;
+ case Highpass:
+ {
+ f->R2 = f->invG;
+ f->cL = 0.0f; f->cB = 0.0f; f->cH = 1.0f;
+ }
+ break;
+ case BandpassSkirt:
+ {
+ f->R2 = f->invG;
+ f->cL = 0.0f; f->cB = 1.0f; f->cH = 0.0f;
+ }
+ break;
+ case BandpassPeak:
+ {
+ f->R2 = 2.0f*tVZFilter_BandwidthToR(vf, f->B);
+ f->cL = 0.0f; f->cB = f->R2; f->cH = 0.0f;
+ }
+ break;
+ case BandReject:
+ {
+ f->R2 = 2.0f*tVZFilter_BandwidthToR(vf, f->B);
+ f->cL = 1.0f; f->cB = 0.0f; f->cH = 1.0f;
+ }
+ break;
+ case Bell:
+ {
+ float fl = f->fc*powf(2.0f, (-f->B)*0.5f); // lower bandedge frequency (in Hz)
+ float wl = tanf(PI*fl*f->inv_sr); // warped radian lower bandedge frequency /(2*fs)
+ float r = f->g/wl;
+ r *= r; // warped frequency ratio wu/wl == (wc/wl)^2 where wu is the
+ // warped upper bandedge, wc the center
+ f->R2 = 2.0f*sqrtf(((r*r+1.0f)/r-2.0f)/(4.0f*f->G));
+ f->cL = 1.0f; f->cB = f->R2*f->G; f->cH = 1.0f;
+ }
+ break;
+ case Lowshelf:
+ {
+ float A = sqrtf(f->G);
+ f->g /= sqrtf(A); // scale SVF-cutoff frequency for shelvers
+ f->R2 = 2*sinhf(f->B*logf(2.0f)*0.5f);
+ f->cL = f->G; f->cB = f->R2*A; f->cH = 1.0f;
+ }
+ break;
+ case Highshelf:
+ {
+ float A = sqrtf(f->G);
+ f->g *= sqrtf(A); // scale SVF-cutoff frequency for shelvers
+ f->R2 = 2.0f*sinhf(f->B*logf(2.0f)*0.5f);
+ f->cL = 1.0f; f->cB = f->R2*A; f->cH = f->G;
+ }
+ break;
+ case Allpass:
+ {
+ f->R2 = 2.0f*tVZFilter_BandwidthToR(vf, f->B);
+ f->cL = 1.0f; f->cB = -f->R2; f->cH = 1.0f;
+ }
+ break;
+
+ // experimental - maybe we must find better curves for cL, cB, cH:
+ case Morph:
+ {
+ f->R2 = f->invG;
+ float x = 2.0f*f->m-1.0f;
+
+ f->cL = maximum(-x, 0.0f); /*cL *= cL;*/
+ f->cH = minimum( x, 0.0f); /*cH *= cH;*/
+ f->cB = 1.0f-x*x;
+
+ // bottom line: we need to test different versions for how they feel when tweaking the
+ // morph parameter
+
+ // this scaling ensures constant magnitude at the cutoff point (we divide the coefficients by
+ // the magnitude response value at the cutoff frequency and scale back by the gain):
+ float s = f->G * sqrtf((f->R2*f->R2) / (f->cL*f->cL + f->cB*f->cB + f->cH*f->cH - 2.0f*f->cL*f->cH));
+ f->cL *= s; f->cB *= s; f->cH *= s;
+ }
+ break;
+
+ }
+
+ f->h = 1.0f / (1.0f + f->R2*f->g + f->g*f->g); // factor for feedback precomputation
+}
+
+
+void tVZFilter_setBandwidth (tVZFilter* const vf, float B)
+{
+ _tVZFilter* f = *vf;
+ f->B = LEAF_clip(0.0f, B, 100.0f);
+ tVZFilter_calcCoeffs(vf);
+}
+void tVZFilter_setFreq (tVZFilter* const vf, float freq)
+{
+ _tVZFilter* f = *vf;
+ f->fc = LEAF_clip(0.0f, freq, 0.5f*leaf.sampleRate);
+ tVZFilter_calcCoeffs(vf);
+}
+void tVZFilter_setFreqAndBandwidth (tVZFilter* const vf, float freq, float bw)
+{
+ _tVZFilter* f = *vf;
+ f->B = LEAF_clip(0.0f,bw, 100.0f);
+ f->fc = LEAF_clip(0.0f, freq, 0.5f*leaf.sampleRate);
+ tVZFilter_calcCoeffs(vf);
+}
+
+void tVZFilter_setGain (tVZFilter* const vf, float gain)
+{
+ _tVZFilter* f = *vf;
+ f->G = LEAF_clip(0.000001f, gain, 100.0f);
+ f->invG = 1.0f/f->G;
+ tVZFilter_calcCoeffs(vf);
+}
+
+void tVZFilter_setMorph (tVZFilter* const vf, float morph)
+{
+ _tVZFilter* f = *vf;
+ f->m = LEAF_clip(0.0f, morph, 1.0f);
+ tVZFilter_calcCoeffs(vf);
+}
+
+void tVZFilter_setType (tVZFilter* const vf, VZFilterType type)
+{
+ _tVZFilter* f = *vf;
+ f->type = type;
+ tVZFilter_calcCoeffs(vf);
+}
+
+float tVZFilter_BandwidthToR(tVZFilter* const vf, float B)
+{
+ _tVZFilter* f = *vf;
+ float fl = f->fc*powf(2.0f, -B*0.5f); // lower bandedge frequency (in Hz)
+ float gl = tanf(PI*fl*f->inv_sr); // warped radian lower bandedge frequency /(2*fs)
+ float r = gl/f->g; // ratio between warped lower bandedge- and center-frequencies
+ // unwarped: r = pow(2, -B/2) -> approximation for low
+ // center-frequencies
+ return sqrtf((1.0f-r*r)*(1.0f-r*r)/(4.0f*r*r));
+}
+
+
+
+void tDiodeFilter_init (tDiodeFilter* const vf, float cutoff, float resonance)
+{
+ tDiodeFilter_initToPool(vf, cutoff, resonance, &leaf.mempool);
+}
+
+void tDiodeFilter_free (tDiodeFilter* const vf)
+{
+ tDiodeFilter_freeFromPool(vf, &leaf.mempool);
+}
+void tDiodeFilter_initToPool (tDiodeFilter* const vf, float cutoff, float resonance, tMempool* const mp)
+{
+
+ _tMempool* m = *mp;
+ _tDiodeFilter* f = *vf = (_tDiodeFilter*) mpool_alloc(sizeof(_tDiodeFilter), m);
+ // initialization (the resonance factor is between 0 and 8 according to the article)
+ f->f = tan(PI * cutoff/leaf.sampleRate);
+ f->r = (7.f * resonance + 0.5f);
+ f->Vt = 0.5f;
+ f->n = 1.836f;
+ f->zi = 0.0f; //previous input value
+ f->gamma = f->Vt*f->n;
+ f->s0 = 0.01f;
+ f->s1 = 0.02f;
+ f->s2 = 0.03f;
+ f->s3 = 0.04f;
+ f->g0inv = 1.f/(2.f*f->Vt);
+ f->g1inv = 1.f/(2.f*f->gamma);
+ f->g2inv = 1.f/(6.f*f->gamma);
+
+
+}
+void tDiodeFilter_freeFromPool (tDiodeFilter* const vf, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tDiodeFilter* f = *vf = (_tDiodeFilter*) mpool_alloc(sizeof(_tDiodeFilter), m);
+ mpool_free((char*)f, m);
+}
+
+float tanhXdX(float x)
+{
+ float a = x*x;
+ // IIRC I got this as Pade-approx for tanh(sqrt(x))/sqrt(x)
+ return ((a + 105.0f)*a + 945.0f) / ((15.0f*a + 420.0f)*a + 945.0f);
+}
+
+float tDiodeFilter_tick (tDiodeFilter* const vf, float in)
+{
+ _tDiodeFilter* f = *vf;
+
+ // the input x[n+1] is given by 'in', and x[n] by zi
+ // input with half delay
+ float ih = 0.5f * (in + f->zi);
+
+ // evaluate the non-linear factors
+ float t0 = f->f*tanhXdX((ih - f->r * f->s3)*f->g0inv)*f->g0inv;
+ float t1 = f->f*tanhXdX((f->s1-f->s0)*f->g1inv)*f->g1inv;
+ float t2 = f->f*tanhXdX((f->s2-f->s1)*f->g1inv)*f->g1inv;
+ float t3 = f->f*tanhXdX((f->s3-f->s2)*f->g1inv)*f->g1inv;
+ float t4 = f->f*tanhXdX((f->s3)*f->g2inv)*f->g2inv;
+
+
+
+ // This formula gives the result for y3 thanks to MATLAB
+ float y3 = (f->s2 + f->s3 + t2*(f->s1 + f->s2 + f->s3 + t1*(f->s0 + f->s1 + f->s2 + f->s3 + t0*in)) + t1*(2.0f*f->s2 + 2.0f*f->s3))*t3 + f->s3 + 2.0f*f->s3*t1 + t2*(2.0f*f->s3 + 3.0f*f->s3*t1);
+// if (isnan(y3))
+// {
+// __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
+// }
+ float tempy3denom = (t4 + t1*(2.0f*t4 + 4.0f) + t2*(t4 + t1*(t4 + f->r*t0 + 4.0f) + 3.0f) + 2.0f)*t3 + t4 + t1*(2.0f*t4 + 2.0f) + t2*(2.0f*t4 + t1*(3.0f*t4 + 3.0f) + 2.0f) + 1.0f;
+// if (isnan(tempy3denom))
+// {
+// __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
+// }
+ if (tempy3denom == 0.0f)
+ {
+ tempy3denom = 0.000001f;
+ }
+ y3 = y3 / tempy3denom;
+// if (isnan(y3))
+// {
+// __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
+// }
+ if (t1 == 0.0f)
+ {
+ t1 = 0.000001f;
+ }
+ if (t2 == 0.0f)
+ {
+ t2 = 0.000001f;
+ }
+ if (t3 == 0.0f)
+ {
+ t3 = 0.000001f;
+ }
+ // Other outputs
+ float y2 = (f->s3 - (1+t4+t3)*y3) / (-t3);
+ float y1 = (f->s2 - (1+t3+t2)*y2 + t3*y3) / (-t2);
+ float y0 = (f->s1 - (1+t2+t1)*y1 + t2*y2) / (-t1);
+ float xx = (in - f->r*y3);
+
+ // update state
+ f->s0 += 2.0f * (t0*xx + t1*(y1-y0));
+// if (isnan(f->s0))
+// {
+// __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
+// }
+
+// if (isinf(f->s0))
+// {
+// __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
+// }
+ f->s1 += 2.0f * (t2*(y2-y1) - t1*(y1-y0));
+ f->s2 += 2.0f * (t3*(y3-y2) - t2*(y2-y1));
+ f->s3 += 2.0f * (-t4*(y3) - t3*(y3-y2));
+
+ f->zi = in;
+ return y3*f->r;
+
+}
+
+
+
+void tDiodeFilter_setFreq (tDiodeFilter* const vf, float cutoff)
+{
+ _tDiodeFilter* f = *vf;
+ f->f = tanf(PI * LEAF_clip(10.0f, cutoff, 20000.0f)*leaf.invSampleRate);
+}
+
+
+void tDiodeFilter_setQ (tDiodeFilter* const vf, float resonance)
+{
+ _tDiodeFilter* f = *vf;
+ f->r = LEAF_clip(0.5, (7.f * resonance + 0.5f), 8.0f);
+
+}
+
--- /dev/null
+++ b/leaf/Src/leaf-instruments.c
@@ -1,0 +1,706 @@
+/*==============================================================================
+
+ leaf-instruments.c
+ Created: 30 Nov 2018 10:24:21am
+ Author: airship
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-instruments.h"
+
+#else
+
+#include "../Inc/leaf-instruments.h"
+
+#endif
+
+// ----------------- COWBELL ----------------------------//
+
+void t808Cowbell_init(t808Cowbell* const cowbellInst, int useStick)
+{
+ _t808Cowbell* cowbell = *cowbellInst = (_t808Cowbell*) leaf_alloc(sizeof(_t808Cowbell));
+
+ tSquare_init(&cowbell->p[0]);
+ tSquare_setFreq(&cowbell->p[0], 540.0f);
+
+ tSquare_init(&cowbell->p[1]);
+ tSquare_setFreq(&cowbell->p[1], 1.48148f * 540.0f);
+
+ cowbell->oscMix = 0.5f;
+
+ tSVF_init(&cowbell->bandpassOsc, SVFTypeBandpass, 2500, 1.0f);
+
+ tSVF_init(&cowbell->bandpassStick, SVFTypeBandpass, 1800, 1.0f);
+
+ tEnvelope_init(&cowbell->envGain, 5.0f, 100.0f, OFALSE);
+
+ tEnvelope_init(&cowbell->envFilter, 5.0, 100.0f, OFALSE);
+
+ tHighpass_init(&cowbell->highpass, 1000.0f);
+
+ tNoise_init(&cowbell->stick, WhiteNoise);
+
+ tEnvelope_init(&cowbell->envStick, 5.0f, 5.0f, 0);
+
+ cowbell->useStick = useStick;
+}
+
+void t808Cowebell_free(t808Cowbell* const cowbellInst)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+
+ tSquare_free(&cowbell->p[0]);
+ tSquare_free(&cowbell->p[1]);
+ tSVF_free(&cowbell->bandpassOsc);
+ tSVF_free(&cowbell->bandpassStick);
+ tEnvelope_free(&cowbell->envGain);
+ tEnvelope_free(&cowbell->envFilter);
+ tHighpass_free(&cowbell->highpass);
+ tNoise_free(&cowbell->stick);
+ tEnvelope_free(&cowbell->envStick);
+ leaf_free((char*)cowbell);
+}
+
+void t808Cowbell_initToPool (t808Cowbell* const cowbellInst, int useStick, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Cowbell* cowbell = *cowbellInst = (_t808Cowbell*) mpool_alloc(sizeof(_t808Cowbell), m);
+
+ tSquare_initToPool(&cowbell->p[0], mp);
+ tSquare_setFreq(&cowbell->p[0], 540.0f);
+
+ tSquare_initToPool(&cowbell->p[1], mp);
+ tSquare_setFreq(&cowbell->p[1], 1.48148f * 540.0f);
+
+ cowbell->oscMix = 0.5f;
+
+ tSVF_initToPool(&cowbell->bandpassOsc, SVFTypeBandpass, 2500, 1.0f, mp);
+
+ tSVF_initToPool(&cowbell->bandpassStick, SVFTypeBandpass, 1800, 1.0f, mp);
+
+ tEnvelope_initToPool(&cowbell->envGain, 5.0f, 100.0f, OFALSE, mp);
+
+ tEnvelope_initToPool(&cowbell->envFilter, 5.0, 100.0f, OFALSE, mp);
+
+ tHighpass_initToPool(&cowbell->highpass, 1000.0f, mp);
+
+ tNoise_initToPool(&cowbell->stick, WhiteNoise, mp);
+
+ tEnvelope_initToPool(&cowbell->envStick, 5.0f, 5.0f, 0, mp);
+
+ cowbell->useStick = useStick;
+}
+
+void t808Cowbell_freeFromPool (t808Cowbell* const cowbellInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Cowbell* cowbell = *cowbellInst;
+
+ tSquare_freeFromPool(&cowbell->p[0], mp);
+ tSquare_freeFromPool(&cowbell->p[1], mp);
+ tSVF_freeFromPool(&cowbell->bandpassOsc, mp);
+ tSVF_freeFromPool(&cowbell->bandpassStick, mp);
+ tEnvelope_freeFromPool(&cowbell->envGain, mp);
+ tEnvelope_freeFromPool(&cowbell->envFilter, mp);
+ tHighpass_freeFromPool(&cowbell->highpass, mp);
+ tNoise_freeFromPool(&cowbell->stick, mp);
+ tEnvelope_freeFromPool(&cowbell->envStick, mp);
+ mpool_free((char*)cowbell, m);
+}
+
+void t808Cowbell_on(t808Cowbell* const cowbellInst, float vel)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+
+ tEnvelope_on(&cowbell->envGain, vel);
+
+ if (cowbell->useStick)
+ tEnvelope_on(&cowbell->envStick,vel);
+}
+
+float t808Cowbell_tick(t808Cowbell* const cowbellInst)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+
+ float sample = 0.0f;
+
+ // Mix oscillators.
+ sample = (cowbell->oscMix * tSquare_tick(&cowbell->p[0])) + ((1.0f-cowbell->oscMix) * tSquare_tick(&cowbell->p[1]));
+
+ // Filter dive and filter.
+ tSVF_setFreq(&cowbell->bandpassOsc, cowbell->filterCutoff + 1000.0f * tEnvelope_tick(&cowbell->envFilter));
+ sample = tSVF_tick(&cowbell->bandpassOsc,sample);
+
+ sample *= (0.9f * tEnvelope_tick(&cowbell->envGain));
+
+ if (cowbell->useStick)
+ sample += (0.1f * tEnvelope_tick(&cowbell->envStick) * tSVF_tick(&cowbell->bandpassStick, tNoise_tick(&cowbell->stick)));
+
+
+ sample = tHighpass_tick(&cowbell->highpass, sample);
+
+ return sample;
+}
+
+void t808Cowbell_setDecay(t808Cowbell* const cowbellInst, float decay)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ tEnvelope_setDecay(&cowbell->envGain,decay);
+}
+
+void t808Cowbell_setHighpassFreq(t808Cowbell *cowbellInst, float freq)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ tHighpass_setFreq(&cowbell->highpass,freq);
+}
+
+void t808Cowbell_setBandpassFreq(t808Cowbell* const cowbellInst, float freq)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ cowbell->filterCutoff = freq;
+}
+
+void t808Cowbell_setFreq(t808Cowbell* const cowbellInst, float freq)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ tSquare_setFreq(&cowbell->p[0],freq);
+ tSquare_setFreq(&cowbell->p[1],1.48148f*freq);
+}
+
+void t808Cowbell_setOscMix(t808Cowbell* const cowbellInst, float oscMix)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ cowbell->oscMix = oscMix;
+}
+
+void t808Cowbell_setStick(t808Cowbell* const cowbellInst, int useStick)
+{
+ _t808Cowbell* cowbell = *cowbellInst;
+ cowbell->useStick = useStick;
+}
+
+// ----------------- HIHAT ----------------------------//
+
+void t808Hihat_init(t808Hihat* const hihatInst)
+{
+ _t808Hihat* hihat = *hihatInst = (_t808Hihat*) leaf_alloc(sizeof(_t808Hihat));
+
+ for (int i = 0; i < 6; i++)
+ {
+ tSquare_init(&hihat->p[i]);
+ }
+
+ tNoise_init(&hihat->stick, PinkNoise);
+ tNoise_init(&hihat->n, WhiteNoise);
+
+ // need to fix SVF to be generic
+ tSVF_init(&hihat->bandpassStick, SVFTypeBandpass,2500.0f,1.2f);
+ tSVF_init(&hihat->bandpassOsc, SVFTypeBandpass,3500.0f,0.3f);
+
+ tEnvelope_init(&hihat->envGain, 0.0f, 50.0f, OFALSE);
+ tEnvelope_init(&hihat->envStick, 0.0f, 7.0f, OFALSE);
+
+
+ tHighpass_init(&hihat->highpass, 7000.0f);
+
+ hihat->freq = 40.0f;
+ hihat->stretch = 0.0f;
+
+ tSquare_setFreq(&hihat->p[0], 2.0f * hihat->freq);
+ tSquare_setFreq(&hihat->p[1], 3.00f * hihat->freq);
+ tSquare_setFreq(&hihat->p[2], 4.16f * hihat->freq);
+ tSquare_setFreq(&hihat->p[3], 5.43f * hihat->freq);
+ tSquare_setFreq(&hihat->p[4], 6.79f * hihat->freq);
+ tSquare_setFreq(&hihat->p[5], 8.21f * hihat->freq);
+}
+
+void t808Hihat_free(t808Hihat* const hihatInst)
+{
+ _t808Hihat* hihat = *hihatInst;
+
+ for (int i = 0; i < 6; i++)
+ {
+ tSquare_free(&hihat->p[i]);
+ }
+
+ tNoise_free(&hihat->stick);
+ tNoise_free(&hihat->n);
+
+ // need to fix SVF to be generic
+ tSVF_free(&hihat->bandpassStick);
+ tSVF_free(&hihat->bandpassOsc);
+ tEnvelope_free(&hihat->envGain);
+ tEnvelope_free(&hihat->envStick);
+
+ tHighpass_free(&hihat->highpass);
+
+ leaf_free((char*)hihat);
+}
+
+void t808Hihat_initToPool (t808Hihat* const hihatInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Hihat* hihat = *hihatInst = (_t808Hihat*) mpool_alloc(sizeof(_t808Hihat), m);
+
+ for (int i = 0; i < 6; i++)
+ {
+ tSquare_initToPool(&hihat->p[i], mp);
+ }
+
+ tNoise_initToPool(&hihat->stick, PinkNoise, mp);
+ tNoise_initToPool(&hihat->n, WhiteNoise, mp);
+
+ // need to fix SVF to be generic
+ tSVF_initToPool(&hihat->bandpassStick, SVFTypeBandpass,2500.0f,1.2f, mp);
+ tSVF_initToPool(&hihat->bandpassOsc, SVFTypeBandpass,3500.0f,0.3f, mp);
+
+ tEnvelope_initToPool(&hihat->envGain, 0.0f, 50.0f, OFALSE, mp);
+ tEnvelope_initToPool(&hihat->envStick, 0.0f, 7.0f, OFALSE, mp);
+
+
+ tHighpass_initToPool(&hihat->highpass, 7000.0f, mp);
+
+ hihat->freq = 40.0f;
+ hihat->stretch = 0.0f;
+
+ tSquare_setFreq(&hihat->p[0], 2.0f * hihat->freq);
+ tSquare_setFreq(&hihat->p[1], 3.00f * hihat->freq);
+ tSquare_setFreq(&hihat->p[2], 4.16f * hihat->freq);
+ tSquare_setFreq(&hihat->p[3], 5.43f * hihat->freq);
+ tSquare_setFreq(&hihat->p[4], 6.79f * hihat->freq);
+ tSquare_setFreq(&hihat->p[5], 8.21f * hihat->freq);
+}
+
+void t808Hihat_freeFromPool (t808Hihat* const hihatInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Hihat* hihat = *hihatInst;
+
+ for (int i = 0; i < 6; i++)
+ {
+ tSquare_freeFromPool(&hihat->p[i], mp);
+ }
+
+ tNoise_freeFromPool(&hihat->stick, mp);
+ tNoise_freeFromPool(&hihat->n, mp);
+
+ // need to fix SVF to be generic
+ tSVF_freeFromPool(&hihat->bandpassStick, mp);
+ tSVF_freeFromPool(&hihat->bandpassOsc, mp);
+ tEnvelope_freeFromPool(&hihat->envGain, mp);
+ tEnvelope_freeFromPool(&hihat->envStick, mp);
+
+ tHighpass_freeFromPool(&hihat->highpass, mp);
+
+ mpool_free((char*)hihat, m);
+}
+
+void t808Hihat_on(t808Hihat* const hihatInst, float vel)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tEnvelope_on(&hihat->envGain, vel);
+ tEnvelope_on(&hihat->envStick, vel);
+}
+
+void t808Hihat_setOscNoiseMix(t808Hihat* const hihatInst, float oscNoiseMix)
+{
+ _t808Hihat* hihat = *hihatInst;
+ hihat->oscNoiseMix = oscNoiseMix;
+}
+
+float t808Hihat_tick(t808Hihat* const hihatInst)
+{
+ _t808Hihat* hihat = *hihatInst;
+
+ float sample = 0.0f;
+ float gainScale = 0.1666f;
+
+ float myNoise = tNoise_tick(&hihat->n);
+
+ tSquare_setFreq(&hihat->p[0], ((2.0f + hihat->stretch) * hihat->freq));
+ tSquare_setFreq(&hihat->p[1], ((3.00f + hihat->stretch) * hihat->freq));
+ tSquare_setFreq(&hihat->p[2], ((4.16f + hihat->stretch) * hihat->freq));
+ tSquare_setFreq(&hihat->p[3], ((5.43f + hihat->stretch) * hihat->freq));
+ tSquare_setFreq(&hihat->p[4], ((6.79f + hihat->stretch) * hihat->freq));
+ tSquare_setFreq(&hihat->p[5], ((8.21f + hihat->stretch) * hihat->freq));
+
+ for (int i = 0; i < 6; i++)
+ {
+ sample += tSquare_tick(&hihat->p[i]);
+ }
+
+ sample *= gainScale;
+
+ sample = (hihat->oscNoiseMix * sample) + ((1.0f-hihat->oscNoiseMix) * myNoise);
+
+ sample = tSVF_tick(&hihat->bandpassOsc, sample);
+
+ float myGain = tEnvelope_tick(&hihat->envGain);
+ sample *= (myGain*myGain);//square the output gain envelope
+ sample = tHighpass_tick(&hihat->highpass, sample);
+ sample += ((0.5f * tEnvelope_tick(&hihat->envStick)) * tSVF_tick(&hihat->bandpassStick, tNoise_tick(&hihat->stick)));
+ sample = tanhf(sample * 2.0f);
+
+ return sample;
+}
+
+void t808Hihat_setDecay(t808Hihat* const hihatInst, float decay)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tEnvelope_setDecay(&hihat->envGain,decay);
+}
+
+void t808Hihat_setHighpassFreq(t808Hihat* const hihatInst, float freq)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tHighpass_setFreq(&hihat->highpass,freq);
+}
+
+void t808Hihat_setStretch(t808Hihat* const hihatInst, float stretch)
+{
+ _t808Hihat* hihat = *hihatInst;
+ hihat->stretch = stretch;
+}
+
+void t808Hihat_setFM(t808Hihat* const hihatInst, float FM_amount)
+{
+ _t808Hihat* hihat = *hihatInst;
+ hihat->FM_amount = FM_amount;
+}
+
+void t808Hihat_setOscBandpassFreq(t808Hihat* const hihatInst, float freq)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tSVF_setFreq(&hihat->bandpassOsc,freq);
+}
+
+void t808Hihat_setOscBandpassQ(t808Hihat* const hihatInst, float Q)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tSVF_setQ(&hihat->bandpassOsc,Q);
+}
+
+void t808Hihat_setStickBandPassFreq(t808Hihat* const hihatInst, float freq)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tSVF_setFreq(&hihat->bandpassStick,freq);
+}
+
+void t808Hihat_setStickBandPassQ(t808Hihat* const hihatInst, float Q)
+{
+ _t808Hihat* hihat = *hihatInst;
+ tSVF_setQ(&hihat->bandpassStick,Q);
+}
+
+void t808Hihat_setOscFreq(t808Hihat* const hihatInst, float freq)
+{
+ _t808Hihat* hihat = *hihatInst;
+ hihat->freq = freq;
+}
+
+// ----------------- SNARE ----------------------------//
+
+void t808Snare_init(t808Snare* const snareInst)
+{
+ _t808Snare* snare = *snareInst = (_t808Snare*) leaf_alloc(sizeof(_t808Snare));
+
+ float ratio[2] = {1.0, 1.5};
+ for (int i = 0; i < 2; i++)
+ {
+ tTriangle_init(&snare->tone[i]);
+
+ tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
+ tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 4000, 1.0f);
+ tEnvelope_init(&snare->toneEnvOsc[i], 0.0f, 50.0f, OFALSE);
+ tEnvelope_init(&snare->toneEnvGain[i], 1.0f, 150.0f, OFALSE);
+ tEnvelope_init(&snare->toneEnvFilter[i], 1.0f, 2000.0f, OFALSE);
+
+ snare->toneGain[i] = 0.5f;
+ }
+
+ snare->tone1Freq = ratio[0] * 100.0f;
+ snare->tone2Freq = ratio[1] * 100.0f;
+ snare->noiseFilterFreq = 3000.0f;
+ tNoise_init(&snare->noiseOsc, WhiteNoise);
+ tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 0.8f);
+ tEnvelope_init(&snare->noiseEnvGain, 0.0f, 100.0f, OFALSE);
+ tEnvelope_init(&snare->noiseEnvFilter, 0.0f, 1000.0f, OFALSE);
+ snare->noiseGain = 1.0f;
+}
+
+void t808Snare_free (t808Snare* const snareInst)
+{
+ _t808Snare* snare = *snareInst;
+
+ for (int i = 0; i < 2; i++)
+ {
+ tTriangle_free(&snare->tone[i]);
+ tSVF_free(&snare->toneLowpass[i]);
+ tEnvelope_free(&snare->toneEnvOsc[i]);
+ tEnvelope_free(&snare->toneEnvGain[i]);
+ tEnvelope_free(&snare->toneEnvFilter[i]);
+ }
+
+ tNoise_free(&snare->noiseOsc);
+ tSVF_free(&snare->noiseLowpass);
+ tEnvelope_free(&snare->noiseEnvGain);
+ tEnvelope_free(&snare->noiseEnvFilter);
+
+ leaf_free((char*)snare);
+}
+
+void t808Snare_initToPool (t808Snare* const snareInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Snare* snare = *snareInst = (_t808Snare*) mpool_alloc(sizeof(_t808Snare), m);
+
+ float ratio[2] = {1.0, 1.5};
+ for (int i = 0; i < 2; i++)
+ {
+ tTriangle_initToPool(&snare->tone[i], mp);
+
+ tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
+ tSVF_initToPool(&snare->toneLowpass[i], SVFTypeLowpass, 4000, 1.0f, mp);
+ tEnvelope_initToPool(&snare->toneEnvOsc[i], 0.0f, 50.0f, OFALSE, mp);
+ tEnvelope_initToPool(&snare->toneEnvGain[i], 1.0f, 150.0f, OFALSE, mp);
+ tEnvelope_initToPool(&snare->toneEnvFilter[i], 1.0f, 2000.0f, OFALSE, mp);
+
+ snare->toneGain[i] = 0.5f;
+ }
+
+ snare->tone1Freq = ratio[0] * 100.0f;
+ snare->tone2Freq = ratio[1] * 100.0f;
+ snare->noiseFilterFreq = 3000.0f;
+ tNoise_initToPool(&snare->noiseOsc, WhiteNoise, mp);
+ tSVF_initToPool(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 0.8f, mp);
+ tEnvelope_initToPool(&snare->noiseEnvGain, 0.0f, 100.0f, OFALSE, mp);
+ tEnvelope_initToPool(&snare->noiseEnvFilter, 0.0f, 1000.0f, OFALSE, mp);
+ snare->noiseGain = 1.0f;
+}
+
+void t808Snare_freeFromPool (t808Snare* const snareInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Snare* snare = *snareInst;
+
+ for (int i = 0; i < 2; i++)
+ {
+ tTriangle_freeFromPool(&snare->tone[i], mp);
+ tSVF_freeFromPool(&snare->toneLowpass[i], mp);
+ tEnvelope_freeFromPool(&snare->toneEnvOsc[i], mp);
+ tEnvelope_freeFromPool(&snare->toneEnvGain[i], mp);
+ tEnvelope_freeFromPool(&snare->toneEnvFilter[i], mp);
+ }
+
+ tNoise_freeFromPool(&snare->noiseOsc, mp);
+ tSVF_freeFromPool(&snare->noiseLowpass, mp);
+ tEnvelope_freeFromPool(&snare->noiseEnvGain, mp);
+ tEnvelope_freeFromPool(&snare->noiseEnvFilter, mp);
+
+ mpool_free((char*)snare, m);
+}
+
+void t808Snare_on(t808Snare* const snareInst, float vel)
+{
+ _t808Snare* snare = *snareInst;
+
+ for (int i = 0; i < 2; i++)
+ {
+ tEnvelope_on(&snare->toneEnvOsc[i], vel);
+ tEnvelope_on(&snare->toneEnvGain[i], vel);
+ tEnvelope_on(&snare->toneEnvFilter[i], vel);
+ }
+
+ tEnvelope_on(&snare->noiseEnvGain, vel);
+ tEnvelope_on(&snare->noiseEnvFilter, vel);
+}
+
+void t808Snare_setTone1Freq(t808Snare* const snareInst, float freq)
+{
+ _t808Snare* snare = *snareInst;
+ snare->tone1Freq = freq;
+ tTriangle_setFreq(&snare->tone[0], freq);
+}
+
+void t808Snare_setTone2Freq(t808Snare* const snareInst, float freq)
+{
+ _t808Snare* snare = *snareInst;
+ snare->tone2Freq = freq;
+ tTriangle_setFreq(&snare->tone[1],freq);
+}
+
+void t808Snare_setTone1Decay(t808Snare* const snareInst, float decay)
+{
+ _t808Snare* snare = *snareInst;
+ tEnvelope_setDecay(&snare->toneEnvGain[0],decay);
+}
+
+void t808Snare_setTone2Decay(t808Snare* const snareInst, float decay)
+{
+ _t808Snare* snare = *snareInst;
+ tEnvelope_setDecay(&snare->toneEnvGain[1],decay);
+}
+
+void t808Snare_setNoiseDecay(t808Snare* const snareInst, float decay)
+{
+ _t808Snare* snare = *snareInst;
+ tEnvelope_setDecay(&snare->noiseEnvGain,decay);
+}
+
+void t808Snare_setToneNoiseMix(t808Snare* const snareInst, float toneNoiseMix)
+{
+ _t808Snare* snare = *snareInst;
+ snare->toneNoiseMix = toneNoiseMix;
+}
+
+void t808Snare_setNoiseFilterFreq(t808Snare* const snareInst, float noiseFilterFreq)
+{
+ _t808Snare* snare = *snareInst;
+ snare->noiseFilterFreq = noiseFilterFreq;
+}
+
+void t808Snare_setNoiseFilterQ(t808Snare* const snareInst, float noiseFilterQ)
+{
+ _t808Snare* snare = *snareInst;
+ tSVF_setQ(&snare->noiseLowpass, noiseFilterQ);
+}
+
+static float tone[2];
+
+float t808Snare_tick(t808Snare* const snareInst)
+{
+ _t808Snare* snare = *snareInst;
+
+ for (int i = 0; i < 2; i++)
+ {
+ tTriangle_setFreq(&snare->tone[i], snare->tone1Freq + (20.0f * tEnvelope_tick(&snare->toneEnvOsc[i])));
+ tone[i] = tTriangle_tick(&snare->tone[i]);
+
+ tSVF_setFreq(&snare->toneLowpass[i], 2000.0f + (500.0f * tEnvelope_tick(&snare->toneEnvFilter[i])));
+ tone[i] = tSVF_tick(&snare->toneLowpass[i], tone[i]) * tEnvelope_tick(&snare->toneEnvGain[i]);
+ }
+
+ float noise = tNoise_tick(&snare->noiseOsc);
+ tSVF_setFreq(&snare->noiseLowpass, snare->noiseFilterFreq + (1000.0f * tEnvelope_tick(&snare->noiseEnvFilter)));
+ noise = tSVF_tick(&snare->noiseLowpass, noise) * tEnvelope_tick(&snare->noiseEnvGain);
+
+ float sample = (snare->toneNoiseMix)*(tone[0] * snare->toneGain[0] + tone[1] * snare->toneGain[1]) + (1.0f-snare->toneNoiseMix) * (noise * snare->noiseGain);
+ sample = tanhf(sample * 2.0f);
+ return sample;
+}
+
+// ----------------- KICK ----------------------------//
+
+void t808Kick_init (t808Kick* const kickInst)
+{
+ _t808Kick* kick = *kickInst = (_t808Kick*) leaf_alloc(sizeof(_t808Kick));
+
+ tCycle_init(&kick->tone);
+ kick->toneInitialFreq = 40.0f;
+ kick->sighAmountInHz = 7.0f;
+ kick->chirpRatioMinusOne = 3.3f;
+ tCycle_setFreq(&kick->tone, 50.0f);
+ tSVF_init(&kick->toneLowpass, SVFTypeLowpass, 2000.0f, 0.5f);
+ tEnvelope_init(&kick->toneEnvOscChirp, 0.0f, 20.0f, OFALSE);
+ tEnvelope_init(&kick->toneEnvOscSigh, 0.0f, 2500.0f, OFALSE);
+ tEnvelope_init(&kick->toneEnvGain, 0.0f, 800.0f, OFALSE);
+ tNoise_init(&kick->noiseOsc, PinkNoise);
+ tEnvelope_init(&kick->noiseEnvGain, 0.0f, 1.0f, OFALSE);
+ kick->noiseGain = 0.3f;
+}
+
+void t808Kick_free (t808Kick* const kickInst)
+{
+ _t808Kick* kick = *kickInst;
+
+ tCycle_free(&kick->tone);
+ tSVF_free(&kick->toneLowpass);
+ tEnvelope_free(&kick->toneEnvOscChirp);
+ tEnvelope_free(&kick->toneEnvOscSigh);
+ tEnvelope_free(&kick->toneEnvGain);
+ tNoise_free(&kick->noiseOsc);
+ tEnvelope_free(&kick->noiseEnvGain);
+
+ leaf_free((char*)kick);
+}
+
+void t808Kick_initToPool (t808Kick* const kickInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Kick* kick = *kickInst = (_t808Kick*) mpool_alloc(sizeof(_t808Kick), m);
+
+ tCycle_initToPool(&kick->tone, mp);
+ kick->toneInitialFreq = 40.0f;
+ kick->sighAmountInHz = 7.0f;
+ kick->chirpRatioMinusOne = 3.3f;
+ tCycle_setFreq(&kick->tone, 50.0f);
+ tSVF_initToPool(&kick->toneLowpass, SVFTypeLowpass, 2000.0f, 0.5f, mp);
+ tEnvelope_initToPool(&kick->toneEnvOscChirp, 0.0f, 20.0f, OFALSE, mp);
+ tEnvelope_initToPool(&kick->toneEnvOscSigh, 0.0f, 2500.0f, OFALSE, mp);
+ tEnvelope_initToPool(&kick->toneEnvGain, 0.0f, 800.0f, OFALSE, mp);
+ tNoise_initToPool(&kick->noiseOsc, PinkNoise, mp);
+ tEnvelope_initToPool(&kick->noiseEnvGain, 0.0f, 1.0f, OFALSE, mp);
+ kick->noiseGain = 0.3f;
+}
+
+void t808Kick_freeFromPool (t808Kick* const kickInst, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _t808Kick* kick = *kickInst;
+
+ tCycle_freeFromPool(&kick->tone, mp);
+ tSVF_freeFromPool(&kick->toneLowpass, mp);
+ tEnvelope_freeFromPool(&kick->toneEnvOscChirp, mp);
+ tEnvelope_freeFromPool(&kick->toneEnvOscSigh, mp);
+ tEnvelope_freeFromPool(&kick->toneEnvGain, mp);
+ tNoise_freeFromPool(&kick->noiseOsc, mp);
+ tEnvelope_freeFromPool(&kick->noiseEnvGain, mp);
+
+ mpool_free((char*)kick, m);
+}
+
+float t808Kick_tick (t808Kick* const kickInst)
+{
+ _t808Kick* kick = *kickInst;
+
+ tCycle_setFreq(&kick->tone, (kick->toneInitialFreq * (1.0f + (kick->chirpRatioMinusOne * tEnvelope_tick(&kick->toneEnvOscChirp)))) + (kick->sighAmountInHz * tEnvelope_tick(&kick->toneEnvOscSigh)));
+ float sample = tCycle_tick(&kick->tone) * tEnvelope_tick(&kick->toneEnvGain);
+ sample+= tNoise_tick(&kick->noiseOsc) * tEnvelope_tick(&kick->noiseEnvGain);
+ //add distortion here
+ sample = tSVF_tick(&kick->toneLowpass, sample);
+ return sample;
+}
+
+void t808Kick_on (t808Kick* const kickInst, float vel)
+{
+ _t808Kick* kick = *kickInst;
+ tEnvelope_on(&kick->toneEnvOscChirp, vel);
+ tEnvelope_on(&kick->toneEnvOscSigh, vel);
+ tEnvelope_on(&kick->toneEnvGain, vel);
+ tEnvelope_on(&kick->noiseEnvGain, vel);
+
+}
+void t808Kick_setToneFreq (t808Kick* const kickInst, float freq)
+{
+ _t808Kick* kick = *kickInst;
+ kick->toneInitialFreq = freq;
+
+}
+
+void t808Kick_setToneDecay (t808Kick* const kickInst, float decay)
+{
+ _t808Kick* kick = *kickInst;
+ tEnvelope_setDecay(&kick->toneEnvGain,decay);
+ tEnvelope_setDecay(&kick->toneEnvGain,decay * 3.0f);
+}
+
+void t808Kick_setNoiseDecay (t808Kick* const kickInst, float decay);
+void t808Kick_setSighAmount (t808Kick* const kickInst, float sigh);
+void t808Kick_setChirpAmount (t808Kick* const kickInst, float chirp);
+void t808Kick_setToneNoiseMix (t808Kick* const kickInst, float toneNoiseMix);
+void t808Kick_setNoiseFilterFreq (t808Kick* const kickInst, float noiseFilterFreq);
+void t808Kick_setNoiseFilterQ (t808Kick* const kickInst, float noiseFilterQ);
+
+
--- /dev/null
+++ b/leaf/Src/leaf-math.c
@@ -1,0 +1,655 @@
+/*==============================================================================
+
+ leaf-math.c
+ Created: 22 Jan 2017 7:02:56pm
+ Author: Michael R Mulshine
+
+ ==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-math.h"
+#include "..\Inc\leaf-tables.h"
+
+#else
+
+#include "../Inc/leaf-math.h"
+#include "../Inc/leaf-tables.h"
+
+#endif
+
+
+#define EXPONENTIAL_TABLE_SIZE 65536
+
+#define log10f_fast(x) (log2f_approx(x)*0.3010299956639812f)
+
+// This is a fast approximation to log2() found on http://openaudio.blogspot.com/2017/02/faster-log10-and-pow.html credited to this post https://community.arm.com/developer/tools-software/tools/f/armds-forum/4292/cmsis-dsp-new-functionality-proposal/22621#22621
+// Y = C[0]*F*F*F + C[1]*F*F + C[2]*F + C[3] + E;
+float log2f_approx(float X) {
+ float Y, F;
+ int E;
+ F = frexpf(fabsf(X), &E);
+ Y = 1.23149591368684f;
+ Y *= F;
+ Y += -4.11852516267426f;
+ Y *= F;
+ Y += 6.02197014179219f;
+ Y *= F;
+ Y += -3.13396450166353f;
+ Y += E;
+ return(Y);
+}
+
+float interpolate3max(float *buf, const int peakindex)
+{
+ float a = buf[peakindex-1];
+ float b = buf[peakindex];
+ float c = buf[peakindex+1];
+ float realpeak;
+
+ realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);
+
+ return(realpeak);
+}
+
+float interpolate3phase(float *buf, const int peakindex)
+{
+ float a = buf[peakindex-1];
+ float b = buf[peakindex];
+ float c = buf[peakindex+1];
+ float fraction;
+
+ fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);
+
+ return(fraction);
+}
+
+// alternative implementation for abs()
+// REQUIRES: 32 bit integers
+int fastabs_int(int in){
+ unsigned int r;
+ int const mask = in >> 31;
+
+ r = (in ^ mask) - mask;
+
+ return (r);
+}
+
+// alternative implementation for abs()
+// REQUIRES: 32 bit floats
+float fastabsf(float f)
+{
+ union
+ {
+ float f;
+ unsigned int ui;
+ }alias;
+
+ alias.f = f;
+ alias.ui &= 0x7fffffff;
+ return alias.f;
+}
+
+double fastexp(double x) {
+ x = 1.0 + (x * 0.0009765625);
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x;
+ return x;
+}
+
+float fastexpf(float x) {
+ x = 1.0f + (x * 0.0009765625f);
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x;
+ return x;
+}
+
+double fasterexp(double x) {
+ x = 1.0 + (x * 0.00390625);
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x; x *= x; x *= x;
+ return x;
+}
+
+float fasterexpf(float x) {
+ x = 1.0f + (x * 0.00390625f);
+ x *= x; x *= x; x *= x; x *= x;
+ x *= x; x *= x; x *= x; x *= x;
+ return x;
+}
+
+// fast floating-point exp2 function taken from Robert Bristow Johnson's
+// post in the music-dsp list on Date: Tue, 02 Sep 2014 16:50:11 -0400
+float fastexp2f(float x)
+{
+ if (x >= -127.0)
+ {
+ float accumulator, xPower;
+ union {float f; int32_t i;} xBits;
+
+ xBits.i = (int32_t)(x + 4096.0f) - 4096L; /* integer part */
+ x -= (float)(xBits.i); /* fractional part */
+
+ accumulator = 1.0f + 0.69303212081966f*x;
+ xPower = x*x;
+ accumulator += 0.24137976293709f*xPower;
+ xPower *= x;
+ accumulator += 0.05203236900844f*xPower;
+ xPower *= x;
+ accumulator += 0.01355574723481f*xPower;
+
+ xBits.i += 127; /* bias integer part */
+ xBits.i<<= 23; /* move biased int part into exponent bits */
+
+ return accumulator * xBits.f;
+ }
+ else
+ {
+ return 0.0f;
+ }
+}
+
+
+float fastPowf(float a, float b) {
+ union
+ {
+ float d; int x;
+ }
+ u = { a };
+
+ u.x = (int)(b * (u.x - 1064866805) + 1064866805);
+ return u.d;
+}
+
+
+double fastPow(double a, double b) {
+ union {
+ double d;
+ int x[2];
+ } u = { a };
+
+ u.x[1] = (int)(b * (u.x[1] - 1072632447) + 1072632447);
+
+ u.x[0] = 0;
+ return u.d;
+}
+
+
+
+
+
+/*
+ you pass in a float array to get back two indexes representing the volumes of the left (index 0) and right (index 1) channels
+ when t is -1, volumes[0] = 0, volumes[1] = 1
+ when t = 0, volumes[0] = 0.707, volumes[1] = 0.707 (equal-power cross fade)
+ when t = 1, volumes[0] = 1, volumes[1] = 0
+ */
+
+void LEAF_crossfade(float fade, float* volumes) {
+ volumes[0] = sqrtf(0.5f * (1.0f + fade));
+ volumes[1] = sqrtf(0.5f * (1.0f - fade));
+}
+
+// dope af
+float LEAF_chebyshevT(float in, int n){
+ if (n == 0) return 1;
+ else if (n == 1) return in;
+ else return 2.0f * in * LEAF_chebyshevT(in, n-1) - LEAF_chebyshevT(in, n-2);
+}
+
+#if !(_WIN32 || _WIN64)
+float LEAF_CompoundChebyshevT(float in, int n, float* amps){
+ float T[n+1];
+ T[0] = 1.0f;
+ T[1] = in;
+ for (int i = 2; i <= n; ++i)
+ T[i] = 2*in*T[i-1] - T[i-2];
+ float out = 0;
+ float amp = 0;
+ for (int i = 0; i < n; ++i){
+ out += amps[i]*T[i+1];
+ amp += amps[i];
+ }
+ return out / amp ;
+}
+#endif
+
+float LEAF_frequencyToMidi(float f)
+{
+ return (69.0f + 12.0f * log2f(f * INV_440));
+}
+
+// Jones shaper
+float LEAF_shaper(float input, float m_drive)
+{
+ float fx = input * 2.0f; // prescale
+ float w, c, xc, xc2, xc4;
+
+ xc = LEAF_clip(-SQRT8, fx, SQRT8);
+ xc2 = xc*xc;
+ c = 0.5f*fx*(3.0f - (xc2));
+ xc4 = xc2 * xc2;
+ w = (1.0f - xc2*0.25f + xc4*0.015625f) * WSCALE;
+ float shaperOut = w*(c+ 0.05f*xc2)*(m_drive + 0.75f);
+ shaperOut *= 0.5f; // post_scale
+ return shaperOut;
+}
+
+// round input to nearest rnd
+float LEAF_round (float input, float rnd)
+{
+ rnd = fabsf(rnd);
+
+ if (rnd <= 0.0000001f) return input;
+
+ float scale = 1.f / rnd;
+
+ return roundf(input * scale) / scale;
+}
+
+
+
+float LEAF_bitwise_xor(float input, uint32_t op)
+{
+ union unholy_t unholy;
+ unholy.f = input;
+ unholy.i = (unholy.i ^ op);
+
+ return unholy.f;
+}
+
+float LEAF_reedTable(float input, float offset, float slope)
+{
+ float output = offset + (slope * input);
+ if ( output > 1.0f) output = 1.0f;
+ if ( output < -1.0f) output = -1.0f;
+ return output;
+}
+
+float LEAF_softClip(float val, float thresh)
+{
+ float x;
+
+ if(val > thresh)
+ {
+ x = thresh / val;
+ return (1.0f - x) * (1.0f - thresh) + thresh;
+ }
+ else if(val < -thresh)
+ {
+ x = -thresh / val;
+ return -((1.0f - x) * (1.0f - thresh) + thresh);
+ }
+ else
+ {
+ return val;
+ }
+}
+
+float LEAF_clip(float min, float val, float max)
+{
+ float tempmin = min;
+ float tempmax = max;
+ if (min > max)
+ {
+ tempmin = max;
+ tempmax = min;
+ }
+ if (val < tempmin) {
+ return tempmin;
+ } else if (val > tempmax) {
+ return tempmax;
+ } else {
+ return val;
+ }
+}
+
+int LEAF_clipInt(int min, int val, int max)
+{
+ int tempmin = min;
+ int tempmax = max;
+ if (min > max)
+ {
+ tempmin = max;
+ tempmax = min;
+ }
+ if (val < tempmin) {
+ return tempmin;
+ } else if (val > tempmax) {
+ return tempmax;
+ } else {
+ return val;
+ }
+}
+
+oBool LEAF_isPrime(uint64_t number )
+{
+ if ( number == 2 ) return OTRUE;
+ if ( number & 1 ) {
+ for ( int i=3; i<(int)sqrt((double)number)+1; i+=2 )
+ if ( (number % i) == 0 ) return OFALSE;
+ return OTRUE; // prime
+ }
+ else return OFALSE; // even
+}
+
+// Adapted from MusicDSP: http://www.musicdsp.org/showone.php?id=238
+float LEAF_tanh(float x)
+{
+
+ if( x < -3.0f )
+ return -1.0f;
+ else if( x > 3.0f )
+ return 1.0f;
+ else
+ return x * ( 27.0f + x * x ) / ( 27.0f + 9.0f * x * x );
+}
+
+
+void LEAF_generate_sine(float* buffer, int size)
+{
+ float phase;
+ for (int i = 0; i < size; i++)
+ {
+ phase = (float) i / (float) size;
+ buffer[i] = sinf(phase * TWO_PI);
+ }
+}
+
+void LEAF_generate_sawtooth(float* buffer, float basefreq, int size)
+{
+ int harmonic = 1;
+ float phase = 0.0f;
+ float freq = harmonic * basefreq;
+ float amp;
+
+ while (freq < (leaf.sampleRate * 0.5))
+ {
+ amp = 1.0f / harmonic;
+ for (int i = 0; i < size; i++)
+ {
+ phase = (float) i / (float) size;
+ buffer[i] += (amp * sinf(harmonic * phase * TWO_PI));
+ }
+
+ harmonic++;
+ freq = harmonic * basefreq;
+ }
+}
+
+
+void LEAF_generate_triangle(float* buffer, float basefreq, int size)
+{
+ int harmonic = 1;
+ float phase = 0.0f;
+ float freq = harmonic * basefreq;
+ float amp = 1.0f;
+
+ int count = 0;
+ float mult = 1.0f;
+
+ while (freq < (leaf.sampleRate * 0.5))
+ {
+ amp = 1.0f / (float)(harmonic * harmonic);
+
+ if (count % 2) mult = -1.0f;
+ else mult = 1.0f;
+
+ for (int i = 0; i < size; i++)
+ {
+ phase = (float) i / (float) size;
+ buffer[i] += (mult * amp * sinf(harmonic * phase * TWO_PI));
+ }
+
+ count++;
+ harmonic += 2;
+ freq = harmonic * basefreq;
+ }
+}
+
+void LEAF_generate_square(float* buffer, float basefreq, int size)
+{
+ int harmonic = 1;
+ float phase = 0.0f;
+ float freq = harmonic * basefreq;
+ float amp = 1.0f;
+
+ while (freq < (leaf.sampleRate * 0.5))
+ {
+ amp = 1.0f / (float)(harmonic);
+
+ for (int i = 0; i < size; i++)
+ {
+ phase = (float) i / (float) size;
+ buffer[i] += (amp * sinf(harmonic * phase * TWO_PI));
+ }
+
+ harmonic += 2;
+ freq = harmonic * basefreq;
+ }
+}
+
+
+//0.001 base gives a good curve that goes from 1 to near zero
+void LEAF_generate_exp(float* buffer, float base, float start, float end, float offset, int size)
+{
+ float increment = (end - start) / (float)size;
+ float x = start;
+ for (int i = 0; i < size; i++)
+ {
+ buffer[i] = powf(base, x) + offset;
+ x += increment;
+ }
+}
+
+
+// http://www.martin-finke.de/blog/articles/audio-plugins-018-polyblep-oscillator/
+// http://www.kvraudio.com/forum/viewtopic.php?t=375517
+// t = phase, dt = inc, assuming 0-1 phase
+// assumes discontinuity at 0, so offset inputs as needed
+float LEAF_poly_blep(float t, float dt)
+{
+ // 0 <= t < 1
+ if (t < dt) {
+ t /= dt;
+ return t+t - t*t - 1.0f;
+ }
+ // -1 < t < 0
+ else if (t > 1.0f - dt) {
+ t = (t - 1.0f) / dt;
+ return t*t + t+t + 1.0f;
+ }
+ // 0 otherwise
+ else return 0.0f;
+
+//
+// float y = 0.0f;
+// if (t < 2.0f * dt)
+// {
+// float x = t / dt;
+// float u = 2.0f - x;
+// u *= u;
+// u *= u;
+// y += u;
+// if (t < dt) {
+// float v = 1.0f - x;
+// v *= v;
+// v *= v;
+// y -= 4.0f * v;
+// }
+// }
+// else if (t > 1.0f - (2.0f * dt))
+// {
+// float x = (t - 1.0f) / dt;
+// float u = 2.0f - x;
+// u *= u;
+// u *= u;
+// y += u;
+// if (t > 1.0f - dt) {
+// float v = 1.0f - x;
+// v *= v;
+// v *= v;
+// y += 4.0f * v;
+// }
+// }
+// return y / 12.0f;
+}
+
+
+//-----------------------------------------------------------------------------
+// name: mtof()
+// desc: midi to freq, from PD source
+//-----------------------------------------------------------------------------
+float LEAF_midiToFrequency(float f)
+{
+ if( f <= -1500.0f ) return (0);
+ else if( f > 1499.0f ) return (LEAF_midiToFrequency(1499.0f));
+ else return ( powf(2.0f, (f - 69.0f) * 0.083333333333333f) * 440.0f );
+}
+
+
+// alpha, [0.0, 1.0]
+float LEAF_interpolate_hermite (float A, float B, float C, float D, float alpha)
+{
+ alpha = LEAF_clip(0.0f, alpha, 1.0f);
+
+ float a = -A*0.5f + (3.0f*B)*0.5f - (3.0f*C)*0.5f + D*0.5f;
+ float b = A - (5.0f*B)*0.5f + 2.0f*C - D * 0.5f;
+ float c = -A*0.5f + C*0.5f;
+ float d = B;
+
+ return a*alpha*alpha*alpha + b*alpha*alpha + c*alpha + d;
+}
+
+
+// from http://www.musicdsp.org/archive.php?classid=5#93
+//xx is alpha (fractional part of sample value)
+//grabbed this from Tom Erbe's Delay pd code
+float LEAF_interpolate_hermite_x(float yy0, float yy1, float yy2, float yy3, float xx)
+{
+ // 4-point, 3rd-order Hermite (x-form)
+ float c0 = yy1;
+ float c1 = 0.5f * (yy2 - yy0);
+ float y0my1 = yy0 - yy1;
+ float c3 = (yy1 - yy2) + 0.5f * (yy3 - y0my1 - yy2);
+ float c2 = y0my1 + c1 - c3;
+
+ return ((c3 * xx + c2) * xx + c1) * xx + c0;
+}
+
+// alpha, [0.0, 1.0]
+float LEAF_interpolation_linear (float A, float B, float alpha)
+{
+ alpha = LEAF_clip(0.0f, alpha, 1.0f);
+
+ float omAlpha = 1.0f - alpha;
+
+ // First 1/2 of interpolation
+ float out = A * omAlpha;
+
+ out += B * alpha;
+
+ return out;
+}
+
+#define LOGTEN 2.302585092994
+
+float mtof(float f)
+{
+ if (f <= -1500.0f) return(0);
+ else if (f > 1499.0f) return(mtof(1499.0f));
+ else return (8.17579891564f * expf(0.0577622650f * f));
+}
+
+float fast_mtof(float f)
+{
+ return (8.17579891564f * fastexpf(0.0577622650f * f));
+}
+
+float faster_mtof(float f)
+{
+ return (8.17579891564f * fastexpf(0.0577622650f * f));
+}
+
+float ftom(float f)
+{
+ return (f > 0 ? 17.3123405046f * logf(.12231220585f * f) : -1500.0f);
+}
+
+float powtodb(float f)
+{
+ if (f <= 0) return (0);
+ else
+ {
+ float val = 100.0f + 10.0f/LOGTEN * logf(f);
+ return (val < 0.0f ? 0.0f : val);
+ }
+}
+
+float rmstodb(float f)
+{
+ if (f <= 0) return (0);
+ else
+ {
+ float val = 100 + 20.f/LOGTEN * log(f);
+ return (val < 0 ? 0 : val);
+ }
+}
+
+float dbtopow(float f)
+{
+ if (f <= 0)
+ return(0);
+ else
+ {
+ if (f > 870.0f)
+ f = 870.0f;
+ return (expf((LOGTEN * 0.1f) * (f-100.0f)));
+ }
+}
+
+float dbtorms(float f)
+{
+ if (f <= 0)
+ return(0);
+ else
+ {
+ if (f > 485.0f)
+ f = 485.0f;
+ }
+ return (expf((LOGTEN * 0.05f) * (f-100.0f)));
+}
+
+
+float atodb(float a)
+{
+ return 20.0f*log10f(a);
+}
+
+float dbtoa(float db)
+{
+ return powf(10.0f, db * 0.05f);
+ //return expf(0.115129254649702f * db); //faster version from http://openaudio.blogspot.com/2017/02/faster-log10-and-pow.html
+}
+
+
+float fastdbtoa(float db)
+{
+ //return powf(10.0f, db * 0.05f);
+ return expf(0.115129254649702f * db); //faster version from http://openaudio.blogspot.com/2017/02/faster-log10-and-pow.html
+}
+
+
+float maximum (float num1, float num2)
+{
+ return (num1 > num2 ) ? num1 : num2;
+}
+
+float minimum (float num1, float num2)
+{
+ return (num1 < num2 ) ? num1 : num2;
+}
+
+
--- /dev/null
+++ b/leaf/Src/leaf-mempool.c
@@ -1,0 +1,412 @@
+
+/** mpool source significantly modified by Mike Mulshine, Jeff Snyder, et al., Princeton University Music Department **/
+
+/**
+ In short, mpool is distributed under so called "BSD license",
+
+ Copyright (c) 2009-2010 Tatsuhiko Kubo <cubicdaiya@gmail.com>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the authors nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* written with C99 style */
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-mempool.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-mempool.h"
+#include "../leaf.h"
+
+#endif
+
+/**
+ * private function
+ */
+static inline size_t mpool_align(size_t size);
+static inline mpool_node_t* create_node(char* block_location, mpool_node_t* next, mpool_node_t* prev, size_t size);
+static inline void delink_node(mpool_node_t* node);
+
+/**
+ * create memory pool
+ */
+void mpool_create (char* memory, size_t size, _tMempool* pool)
+{
+ leaf.header_size = mpool_align(sizeof(mpool_node_t));
+
+ pool->mpool = (char*)memory;
+ pool->usize = 0;
+ pool->msize = size;
+
+ pool->head = create_node(pool->mpool, NULL, NULL, pool->msize-leaf.header_size);
+
+ /*
+ for (int i = 0; i < pool->head->size; i++)
+ {
+ memory[i+leaf.header_size]=0;
+ }
+ */
+ //is zeroing out the memory necessary? This takes a long time on large pools - JS
+}
+
+void leaf_pool_init(char* memory, size_t size)
+{
+ mpool_create(memory, size, &leaf._mempool);
+
+ leaf.mempool = &leaf._mempool;
+}
+
+/**
+ * allocate memory from memory pool
+ */
+char* mpool_alloc(size_t asize, _tMempool* pool)
+{
+ // If the head is NULL, the mempool is full
+ if (pool->head == NULL)
+ {
+ leaf_mempool_overrun();
+ return NULL;
+ }
+
+ // Should we alloc the first block large enough or check all blocks and pick the one closest in size?
+ size_t size_to_alloc = mpool_align(asize);
+ mpool_node_t* node_to_alloc = pool->head;
+
+ // Traverse the free list for a large enough block
+ while (node_to_alloc->size < size_to_alloc)
+ {
+ node_to_alloc = node_to_alloc->next;
+
+ // If we reach the end of the free list, there
+ // are no blocks large enough, return NULL
+ if (node_to_alloc == NULL)
+ {
+ leaf_mempool_overrun();
+ return NULL;
+ }
+ }
+
+ // Create a new node after the node to be allocated if there is enough space
+ mpool_node_t* new_node;
+ size_t leftover = node_to_alloc->size - size_to_alloc;
+ node_to_alloc->size = size_to_alloc;
+ if (leftover > leaf.header_size)
+ {
+ long offset = (char*) node_to_alloc - (char*) pool->mpool;
+ offset += leaf.header_size + node_to_alloc->size;
+ new_node = create_node(&pool->mpool[offset],
+ node_to_alloc->next,
+ node_to_alloc->prev,
+ leftover - leaf.header_size);
+ }
+ else
+ {
+ // Add any leftover space to the allocated node to avoid fragmentation
+ node_to_alloc->size += leftover;
+
+ new_node = node_to_alloc->next;
+ }
+
+ // Update the head if we are allocating the first node of the free list
+ // The head will be NULL if there is no space left
+ if (pool->head == node_to_alloc)
+ {
+ pool->head = new_node;
+ }
+
+ // Remove the allocated node from the free list
+ delink_node(node_to_alloc);
+
+ pool->usize += leaf.header_size + node_to_alloc->size;
+
+ if (leaf.clearOnAllocation > 0)
+ {
+ char* new_pool = (char*)node_to_alloc->pool;
+ for (int i = 0; i < node_to_alloc->size; i++) new_pool[i] = 0;
+ }
+
+ // Return the pool of the allocated node;
+ return node_to_alloc->pool;
+}
+
+
+/**
+ * allocate memory from memory pool and also clear that memory to be blank
+ */
+char* mpool_calloc(size_t asize, _tMempool* pool)
+{
+ // If the head is NULL, the mempool is full
+ if (pool->head == NULL)
+ {
+ leaf_mempool_overrun();
+ return NULL;
+ }
+
+ // Should we alloc the first block large enough or check all blocks and pick the one closest in size?
+ size_t size_to_alloc = mpool_align(asize);
+ mpool_node_t* node_to_alloc = pool->head;
+
+ // Traverse the free list for a large enough block
+ while (node_to_alloc->size < size_to_alloc)
+ {
+ node_to_alloc = node_to_alloc->next;
+
+ // If we reach the end of the free list, there
+ // are no blocks large enough, return NULL
+ if (node_to_alloc == NULL)
+ {
+ leaf_mempool_overrun();
+ return NULL;
+ }
+ }
+
+ // Create a new node after the node to be allocated if there is enough space
+ mpool_node_t* new_node;
+ size_t leftover = node_to_alloc->size - size_to_alloc;
+ node_to_alloc->size = size_to_alloc;
+ if (leftover > leaf.header_size)
+ {
+ long offset = (char*) node_to_alloc - (char*) pool->mpool;
+ offset += leaf.header_size + node_to_alloc->size;
+ new_node = create_node(&pool->mpool[offset],
+ node_to_alloc->next,
+ node_to_alloc->prev,
+ leftover - leaf.header_size);
+ }
+ else
+ {
+ // Add any leftover space to the allocated node to avoid fragmentation
+ node_to_alloc->size += leftover;
+
+ new_node = node_to_alloc->next;
+ }
+
+ // Update the head if we are allocating the first node of the free list
+ // The head will be NULL if there is no space left
+ if (pool->head == node_to_alloc)
+ {
+ pool->head = new_node;
+ }
+
+ // Remove the allocated node from the free list
+ delink_node(node_to_alloc);
+
+ pool->usize += leaf.header_size + node_to_alloc->size;
+ // Format the new pool
+ char* new_pool = (char*)node_to_alloc->pool;
+ for (int i = 0; i < node_to_alloc->size; i++) new_pool[i] = 0;
+ // Return the pool of the allocated node;
+ return node_to_alloc->pool;
+}
+
+char* leaf_alloc(size_t size)
+{
+ //printf("alloc %i\n", size);
+ char* block = mpool_alloc(size, &leaf._mempool);
+
+ if (block == NULL) leaf_mempool_overrun();
+
+ return block;
+}
+
+char* leaf_calloc(size_t size)
+{
+ //printf("alloc %i\n", size);
+ char* block = mpool_calloc(size, &leaf._mempool);
+
+ if (block == NULL) leaf_mempool_overrun();
+
+
+ return block;
+}
+
+void mpool_free(char* ptr, _tMempool* pool)
+{
+ //if (ptr < pool->mpool || ptr >= pool->mpool + pool->msize)
+ // Get the node at the freed space
+ mpool_node_t* freed_node = (mpool_node_t*) (ptr - leaf.header_size);
+
+ pool->usize -= leaf.header_size + freed_node->size;
+
+ // Check each node in the list against the newly freed one to see if it's adjacent in memory
+ mpool_node_t* other_node = pool->head;
+ mpool_node_t* next_node;
+ while (other_node != NULL)
+ {
+ next_node = other_node->next;
+ // Check if a node is directly after the freed node
+ if ((long) freed_node + (leaf.header_size + freed_node->size) == (long) other_node)
+ {
+ // Increase freed node's size
+ freed_node->size += leaf.header_size + other_node->size;
+ // If we are merging with the head, move the head forward
+ if (other_node == pool->head) pool->head = pool->head->next;
+ // Delink the merged node
+ delink_node(other_node);
+ }
+
+ // Check if a node is directly before the freed node
+ else if ((long) other_node + (leaf.header_size + other_node->size) == (long) freed_node)
+ {
+ // Increase the merging node's size
+ other_node->size += leaf.header_size + freed_node->size;
+
+ if (other_node != pool->head)
+ {
+ // Delink the merging node
+ delink_node(other_node);
+ // Attach the merging node to the head
+ other_node->next = pool->head;
+ // Merge
+ freed_node = other_node;
+ }
+ else
+ {
+ // If we are merging with the head, move the head forward
+ pool->head = pool->head->next;
+ // Merge
+ freed_node = other_node;
+ }
+ }
+
+ other_node = next_node;
+ }
+
+ // Ensure the freed node is attached to the head
+ freed_node->next = pool->head;
+ if (pool->head != NULL) pool->head->prev = freed_node;
+ pool->head = freed_node;
+
+ // Format the freed pool
+ // char* freed_pool = (char*)freed_node->pool;
+ // for (int i = 0; i < freed_node->size; i++) freed_pool[i] = 0;
+}
+
+void leaf_free(char* ptr)
+{
+ mpool_free(ptr, &leaf._mempool);
+}
+
+size_t mpool_get_size(_tMempool* pool)
+{
+ return pool->msize;
+}
+
+size_t mpool_get_used(_tMempool* pool)
+{
+ return pool->usize;
+}
+
+size_t leaf_pool_get_size(void)
+{
+ return mpool_get_size(&leaf._mempool);
+}
+
+size_t leaf_pool_get_used(void)
+{
+ return mpool_get_used(&leaf._mempool);
+}
+
+char* leaf_pool_get_pool(void)
+{
+ char* buff = leaf._mempool.mpool;
+
+ return buff;
+}
+
+/**
+ * align byte boundary
+ */
+static inline size_t mpool_align(size_t size) {
+ return (size + (MPOOL_ALIGN_SIZE - 1)) & ~(MPOOL_ALIGN_SIZE - 1);
+}
+
+static inline mpool_node_t* create_node(char* block_location, mpool_node_t* next, mpool_node_t* prev, size_t size)
+{
+ mpool_node_t* node = (mpool_node_t*)block_location;
+ node->pool = block_location + leaf.header_size;
+ node->next = next;
+ node->prev = prev;
+ node->size = size;
+
+ return node;
+}
+
+static inline void delink_node(mpool_node_t* node)
+{
+ // If there is a node after the node to remove
+ if (node->next != NULL)
+ {
+ // Close the link
+ node->next->prev = node->prev;
+ }
+ // If there is a node before the node to remove
+ if (node->prev != NULL)
+ {
+ // Close the link
+ node->prev->next = node->next;
+ }
+
+ node->next = NULL;
+ node->prev = NULL;
+}
+
+void leaf_mempool_overrun(void)
+{
+ LEAF_error(1);
+ //TODO: we should make a set of real error codes that are in an enum type
+}
+
+void tMempool_init(tMempool* const mp, char* memory, size_t size)
+{
+ tMempool_initToPool(mp, memory, size, &leaf.mempool);
+}
+
+void tMempool_free(tMempool* const mp)
+{
+ tMempool_freeFromPool(mp, &leaf.mempool);
+}
+
+void tMempool_initToPool (tMempool* const mp, char* memory, size_t size, tMempool* const mem)
+{
+ _tMempool* mm = *mem;
+ _tMempool* m = *mp = (_tMempool*) mpool_alloc(sizeof(_tMempool), mm);
+
+ mpool_create (memory, size, m);
+}
+
+void tMempool_freeFromPool (tMempool* const mp, tMempool* const mem)
+{
+ _tMempool* mm = *mem;
+ _tMempool* m = *mp;
+
+ mpool_free((char*)m, mm);
+}
--- /dev/null
+++ b/leaf/Src/leaf-midi.c
@@ -1,0 +1,980 @@
+/*==============================================================================
+
+ leaf-midi.c
+ Created: 30 Nov 2018 11:29:16am
+ Author: airship
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-midi.h"
+
+#else
+
+#include "../Inc/leaf-midi.h"
+
+#endif
+
+//====================================================================================
+/* Stack */
+//====================================================================================
+
+void tStack_init(tStack* const stack)
+{
+ _tStack* ns = *stack = (_tStack*) leaf_alloc(sizeof(_tStack));
+
+ ns->ordered = OFALSE;
+ ns->size = 0;
+ ns->pos = 0;
+ ns->capacity = STACK_SIZE;
+
+ for (int i = 0; i < STACK_SIZE; i++) ns->data[i] = -1;
+}
+
+void tStack_free(tStack* const stack)
+{
+ _tStack* ns = *stack;
+
+ leaf_free((char*)ns);
+}
+
+void tStack_initToPool (tStack* const stack, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tStack* ns = *stack = (_tStack*) mpool_alloc(sizeof(_tStack), m);
+
+ ns->ordered = OFALSE;
+ ns->size = 0;
+ ns->pos = 0;
+ ns->capacity = STACK_SIZE;
+
+ for (int i = 0; i < STACK_SIZE; i++) ns->data[i] = -1;
+}
+
+void tStack_freeFromPool (tStack* const stack, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tStack* ns = *stack;
+
+ mpool_free((char*)ns, m);
+}
+
+// If stack contains note, returns index. Else returns -1;
+int tStack_contains(tStack* const stack, uint16_t noteVal)
+{
+ _tStack* ns = *stack;
+ for (int i = 0; i < ns->size; i++)
+ {
+ if (ns->data[i] == noteVal) return i;
+ }
+ return -1;
+}
+
+void tStack_add(tStack* const stack, uint16_t noteVal)
+{
+ _tStack* ns = *stack;
+
+ uint8_t j;
+
+ int whereToInsert = 0;
+ if (ns->ordered)
+ {
+ for (j = 0; j < ns->size; j++)
+ {
+ if (noteVal > ns->data[j])
+ {
+ if ((noteVal < ns->data[j+1]) || (ns->data[j+1] == -1))
+ {
+ whereToInsert = j+1;
+ break;
+ }
+ }
+ }
+ }
+
+ //first move notes that are already in the stack one position to the right
+ for (j = ns->size; j > whereToInsert; j--)
+ {
+ ns->data[j] = ns->data[(j - 1)];
+ }
+
+ //then, insert the new note into the front of the stack
+ ns->data[whereToInsert] = noteVal;
+
+ ns->size++;
+}
+
+int tStack_addIfNotAlreadyThere(tStack* const stack, uint16_t noteVal)
+{
+ _tStack* ns = *stack;
+
+ uint8_t j;
+
+ int added = 0;
+
+ if (tStack_contains(stack, noteVal) == -1)
+ {
+ int whereToInsert = 0;
+ if (ns->ordered)
+ {
+ for (j = 0; j < ns->size; j++)
+ {
+ if (noteVal > ns->data[j])
+ {
+ if ((noteVal < ns->data[j+1]) || (ns->data[j+1] == -1))
+ {
+ whereToInsert = j+1;
+ break;
+ }
+ }
+ }
+ }
+
+ //first move notes that are already in the stack one position to the right
+ for (j = ns->size; j > whereToInsert; j--)
+ {
+ ns->data[j] = ns->data[(j - 1)];
+ }
+
+ //then, insert the new note into the front of the stack
+ ns->data[whereToInsert] = noteVal;
+
+ ns->size++;
+
+ added = 1;
+ }
+
+ return added;
+}
+
+// Remove noteVal. return 1 if removed, 0 if not
+int tStack_remove(tStack* const stack, uint16_t noteVal)
+{
+ _tStack* ns = *stack;
+
+ uint8_t k;
+ int foundIndex = tStack_contains(stack, noteVal);
+ int removed = 0;
+
+ if (foundIndex >= 0)
+ {
+ for (k = 0; k < (ns->size - foundIndex); k++)
+ {
+ if ((k+foundIndex) >= (ns->capacity - 1))
+ {
+ ns->data[k + foundIndex] = -1;
+ }
+ else
+ {
+ ns->data[k + foundIndex] = ns->data[k + foundIndex + 1];
+ if ((k + foundIndex) == (ns->size - 1))
+ {
+ ns->data[k + foundIndex + 1] = -1;
+ }
+ }
+
+ }
+ // in case it got put on the stack multiple times
+ foundIndex--;
+ ns->size--;
+ removed = 1;
+ }
+
+ return removed;
+}
+
+// Doesn't change size of data types
+void tStack_setCapacity(tStack* const stack, uint16_t cap)
+{
+ _tStack* ns = *stack;
+
+ if (cap <= 0)
+ ns->capacity = 1;
+ else if (cap <= STACK_SIZE)
+ ns->capacity = cap;
+ else
+ ns->capacity = STACK_SIZE;
+
+ for (int i = cap; i < STACK_SIZE; i++)
+ {
+ if ((int)ns->data[i] != -1)
+ {
+ ns->data[i] = -1;
+ ns->size -= 1;
+ }
+ }
+
+ if (ns->pos >= cap)
+ {
+ ns->pos = 0;
+ }
+}
+
+int tStack_getSize(tStack* const stack)
+{
+ _tStack* ns = *stack;
+
+ return ns->size;
+}
+
+void tStack_clear(tStack* const stack)
+{
+ _tStack* ns = *stack;
+
+ for (int i = 0; i < STACK_SIZE; i++)
+ {
+ ns->data[i] = -1;
+ }
+ ns->pos = 0;
+ ns->size = 0;
+}
+
+// Next item in order of addition to stack. Return 0-31 if there is a next item to move to. Returns -1 otherwise.
+int tStack_next(tStack* const stack)
+{
+ _tStack* ns = *stack;
+
+ int step = 0;
+ if (ns->size != 0) // if there is at least one note in the stack
+ {
+ if (ns->pos > 0) // if you're not at the most recent note (first one), then go backward in the array (moving from earliest to latest)
+ {
+ ns->pos--;
+ }
+ else
+ {
+ ns->pos = (ns->size - 1); // if you are the most recent note, go back to the earliest note in the array
+ }
+
+ step = ns->data[ns->pos];
+ return step;
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+int tStack_get(tStack* const stack, int which)
+{
+ _tStack* ns = *stack;
+ return ns->data[which];
+}
+
+int tStack_first(tStack* const stack)
+{
+ _tStack* ns = *stack;
+ return ns->data[0];
+}
+
+
+// POLY
+void tPoly_init(tPoly* const polyh, int maxNumVoices)
+{
+ _tPoly* poly = *polyh = (_tPoly*) leaf_alloc(sizeof(_tPoly));
+
+ poly->numVoices = maxNumVoices;
+ poly->maxNumVoices = maxNumVoices;
+ poly->lastVoiceToChange = 0;
+
+ // Arp mode stuff
+ poly->currentVoice = 0;
+ poly->maxLength = 128;
+ poly->currentNote = -1;
+
+ //default learned CCs and notes are just the CCs 1-128 - notes are skipped
+ for (int i = 0; i < 128; i++)
+ {
+ poly->notes[i][0] = 0;
+ poly->notes[i][1] = -1;
+ }
+
+ poly->glideTime = 5.0f;
+
+ poly->ramps = (tRamp*) leaf_alloc(sizeof(tRamp) * poly->maxNumVoices);
+ poly->rampVals = (float*) leaf_alloc(sizeof(float) * poly->maxNumVoices);
+ poly->firstReceived = (oBool*) leaf_alloc(sizeof(oBool) * poly->maxNumVoices);
+ poly->voices = (int**) leaf_alloc(sizeof(int*) * poly->maxNumVoices);
+
+ for (int i = 0; i < poly->maxNumVoices; ++i)
+ {
+ poly->voices[i] = (int*) leaf_alloc(sizeof(int) * 2);
+ poly->voices[i][0] = -1;
+ poly->firstReceived[i] = OFALSE;
+
+ tRamp_init(&poly->ramps[i], poly->glideTime, 1);
+ }
+
+ poly->pitchBend = 0.0f;
+
+ tRamp_init(&poly->pitchBendRamp, 1.0f, 1);
+ tStack_init(&poly->stack);
+ tStack_init(&poly->orderStack);
+
+ poly->pitchGlideIsActive = OFALSE;
+}
+
+void tPoly_free(tPoly* const polyh)
+{
+ _tPoly* poly = *polyh;
+
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ tRamp_free(&poly->ramps[i]);
+ leaf_free((char*)poly->voices[i]);
+ }
+ tRamp_free(&poly->pitchBendRamp);
+ tStack_free(&poly->stack);
+ tStack_free(&poly->orderStack);
+
+ leaf_free((char*)poly->voices);
+ leaf_free((char*)poly->ramps);
+ leaf_free((char*)poly->rampVals);
+ leaf_free((char*)poly->firstReceived);
+
+ leaf_free((char*)poly);
+}
+
+void tPoly_initToPool (tPoly* const polyh, int maxNumVoices, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPoly* poly = *polyh = (_tPoly*) mpool_alloc(sizeof(_tPoly), m);
+
+ poly->numVoices = maxNumVoices;
+ poly->maxNumVoices = maxNumVoices;
+ poly->lastVoiceToChange = 0;
+
+ // Arp mode stuff
+ poly->currentVoice = 0;
+ poly->maxLength = 128;
+ poly->currentNote = -1;
+
+ //default learned CCs and notes are just the CCs 1-128 - notes are skipped
+ for (int i = 0; i < 128; i++)
+ {
+ poly->notes[i][0] = 0;
+ poly->notes[i][1] = -1;
+ }
+
+ poly->glideTime = 5.0f;
+
+ poly->ramps = (tRamp*) mpool_alloc(sizeof(tRamp) * poly->maxNumVoices, m);
+ poly->rampVals = (float*) mpool_alloc(sizeof(float) * poly->maxNumVoices, m);
+ poly->firstReceived = (oBool*) mpool_alloc(sizeof(oBool) * poly->maxNumVoices, m);
+ poly->voices = (int**) mpool_alloc(sizeof(int*) * poly->maxNumVoices, m);
+
+ for (int i = 0; i < poly->maxNumVoices; ++i)
+ {
+ poly->voices[i] = (int*) mpool_alloc(sizeof(int) * 2, m);
+ poly->voices[i][0] = -1;
+ poly->firstReceived[i] = OFALSE;
+
+ tRamp_initToPool(&poly->ramps[i], poly->glideTime, 1, mp);
+ }
+
+ poly->pitchBend = 0.0f;
+
+ tRamp_initToPool(&poly->pitchBendRamp, 1.0f, 1, mp);
+ tStack_initToPool(&poly->stack, mp);
+ tStack_initToPool(&poly->orderStack, mp);
+
+ poly->pitchGlideIsActive = OFALSE;
+}
+
+void tPoly_freeFromPool (tPoly* const polyh, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPoly* poly = *polyh;
+
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ tRamp_freeFromPool(&poly->ramps[i], mp);
+ mpool_free((char*)poly->voices[i], m);
+ }
+ tRamp_freeFromPool(&poly->pitchBendRamp, mp);
+ tStack_freeFromPool(&poly->stack, mp);
+ tStack_freeFromPool(&poly->orderStack, mp);
+
+ mpool_free((char*)poly->voices, m);
+ mpool_free((char*)poly->ramps, m);
+ mpool_free((char*)poly->rampVals, m);
+ mpool_free((char*)poly->firstReceived, m);
+
+ mpool_free((char*)poly, m);
+}
+
+void tPoly_tickPitch(tPoly* polyh)
+{
+ tPoly_tickPitchGlide(polyh);
+ tPoly_tickPitchBend(polyh);
+}
+
+void tPoly_tickPitchGlide(tPoly* polyh)
+{
+ _tPoly* poly = *polyh;
+ for (int i = 0; i < poly->maxNumVoices; ++i)
+ {
+ tRamp_tick(&poly->ramps[i]);
+ }
+}
+
+void tPoly_tickPitchBend(tPoly* polyh)
+{
+ _tPoly* poly = *polyh;
+ tRamp_tick(&poly->pitchBendRamp);
+}
+
+void tPoly_setPitchBend(tPoly* const polyh, float pitchBend)
+{
+ _tPoly* poly = *polyh;
+ poly->pitchBend = pitchBend;
+ tRamp_setDest(&poly->pitchBendRamp, poly->pitchBend);
+}
+
+int tPoly_noteOn(tPoly* const polyh, int note, uint8_t vel)
+{
+ _tPoly* poly = *polyh;
+
+ // if not in keymap or already on stack, dont do anything. else, add that note.
+ if (tStack_contains(&poly->stack, note) >= 0) return -1;
+ else
+ {
+ tPoly_orderedAddToStack(polyh, note);
+ tStack_add(&poly->stack, note);
+
+ int alteredVoice = -1;
+ oBool found = OFALSE;
+ for (int i = 0; i < poly->numVoices; i++)
+ {
+ if (poly->voices[i][0] < 0) // if inactive voice, give this note to voice
+ {
+ if (!poly->firstReceived[i] || !poly->pitchGlideIsActive)
+ {
+ tRamp_setVal(&poly->ramps[i], note);
+ poly->firstReceived[i] = OTRUE;
+ }
+
+ found = OTRUE;
+
+ poly->voices[i][0] = note;
+ poly->voices[i][1] = vel;
+ poly->lastVoiceToChange = i;
+ poly->notes[note][0] = vel;
+ poly->notes[note][1] = i;
+
+ tRamp_setDest(&poly->ramps[i], poly->voices[i][0]);
+
+ alteredVoice = i;
+ break;
+ }
+ }
+
+ if (!found) //steal
+ {
+ int whichVoice, whichNote;
+ for (int j = tStack_getSize(&poly->stack) - 1; j >= 0; j--)
+ {
+ whichNote = tStack_get(&poly->stack, j);
+ whichVoice = poly->notes[whichNote][1];
+ if (whichVoice >= 0)
+ {
+ poly->lastVoiceToChange = whichVoice;
+ int oldNote = poly->voices[whichVoice][0];
+ poly->voices[whichVoice][0] = note;
+ poly->voices[whichVoice][1] = vel;
+ poly->notes[oldNote][1] = -1; //mark the stolen voice as inactive (in the second dimension of the notes array)
+ poly->notes[note][0] = vel;
+ poly->notes[note][1] = whichVoice;
+
+ if (poly->pitchGlideIsActive)
+ {
+ tRamp_setTime(&poly->ramps[whichVoice], poly->glideTime);
+ }
+ else
+ {
+ tRamp_setVal(&poly->ramps[whichVoice], note);
+ }
+ tRamp_setDest(&poly->ramps[whichVoice], poly->voices[whichVoice][0]);
+
+ alteredVoice = whichVoice;
+
+ break;
+ }
+ }
+ }
+ return alteredVoice;
+ }
+}
+
+
+int16_t noteToTest = -1;
+
+int tPoly_noteOff(tPoly* const polyh, uint8_t note)
+{
+ _tPoly* poly = *polyh;
+
+ tStack_remove(&poly->stack, note);
+ tStack_remove(&poly->orderStack, note);
+ poly->notes[note][0] = 0;
+ poly->notes[note][1] = -1;
+
+ int deactivatedVoice = -1;
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ if (poly->voices[i][0] == note)
+ {
+ poly->voices[i][0] = -1;
+ poly->voices[i][1] = 0;
+ poly->lastVoiceToChange = i;
+ deactivatedVoice = i;
+ break;
+ }
+ }
+ /*
+ //monophonic handling
+ if ((poly->numVoices == 1) && (tStack_getSize(poly->stack) > 0))
+ {
+ int oldNote = tStack_first(poly->stack);
+ poly->voices[0][0] = oldNote;
+ poly->voices[0][1] = poly->notes[oldNote][0];
+ poly->lastVoiceToChange = 0;
+ }
+ */
+
+ //grab old notes off the stack if there are notes waiting to replace the free voice
+ if (deactivatedVoice >= 0)
+ {
+ for (int j = 0; j < tStack_getSize(&poly->stack); ++j)
+ {
+ noteToTest = tStack_get(&poly->stack, j);
+
+ if (poly->notes[noteToTest][1] < 0) //if there is a stolen note waiting (marked inactive but on the stack)
+ {
+ poly->voices[deactivatedVoice][0] = noteToTest; //set the newly free voice to use the old stolen note
+ if (poly->pitchGlideIsActive)
+ {
+ tRamp_setTime(&poly->ramps[deactivatedVoice], poly->glideTime);
+ }
+ else
+ {
+ tRamp_setVal(&poly->ramps[deactivatedVoice], noteToTest);
+ }
+ tRamp_setDest(&poly->ramps[deactivatedVoice], poly->voices[deactivatedVoice][0]);
+ poly->voices[deactivatedVoice][1] = poly->notes[noteToTest][0]; // set the velocity of the voice to be the velocity of that note
+ poly->notes[noteToTest][1] = deactivatedVoice; //mark that it is no longer stolen and is now active
+ return -1;
+ }
+ }
+ }
+ return deactivatedVoice;
+}
+
+void tPoly_orderedAddToStack(tPoly* const polyh, uint8_t noteVal)
+{
+ _tPoly* poly = *polyh;
+
+ uint8_t j;
+ int myPitch, thisPitch, nextPitch;
+
+ tStack ns = poly->orderStack;
+
+ int whereToInsert = 0;
+
+ for (j = 0; j < ns->size; j++)
+ {
+ myPitch = noteVal;
+ thisPitch = ns->data[j];
+ nextPitch = ns->data[j+1];
+
+ if (myPitch > thisPitch)
+ {
+ if ((myPitch < nextPitch) || (nextPitch == -1))
+ {
+ whereToInsert = j+1;
+ break;
+ }
+ }
+ }
+
+ //first move notes that are already in the stack one position to the right
+ for (j = ns->size; j > whereToInsert; j--)
+ {
+ ns->data[j] = ns->data[(j - 1)];
+ }
+
+ //then, insert the new note into the front of the stack
+ ns->data[whereToInsert] = noteVal;
+
+ ns->size++;
+
+}
+
+void tPoly_setNumVoices(tPoly* const polyh, uint8_t numVoices)
+{
+ _tPoly* poly = *polyh;
+ poly->numVoices = (numVoices > poly->maxNumVoices) ? poly->maxNumVoices : numVoices;
+}
+
+void tPoly_setPitchGlideActive(tPoly* const polyh, oBool isActive)
+{
+ _tPoly* poly = *polyh;
+ poly->pitchGlideIsActive = isActive;
+}
+
+void tPoly_setPitchGlideTime(tPoly* const polyh, float t)
+{
+ _tPoly* poly = *polyh;
+ poly->glideTime = t;
+ for (int i = 0; i < poly->maxNumVoices; ++i)
+ {
+ tRamp_setTime(&poly->ramps[i], poly->glideTime);
+ }
+}
+
+void tPoly_setBendGlideTime(tPoly* const polyh, float t)
+{
+ _tPoly* poly = *polyh;
+ tRamp_setTime(&poly->pitchBendRamp, t);
+}
+
+void tPoly_setBendSamplesPerTick(tPoly* const polyh, float t)
+{
+ _tPoly* poly = *polyh;
+ poly->pitchBendRamp->samples_per_tick = t;
+}
+
+int tPoly_getNumVoices(tPoly* const polyh)
+{
+ _tPoly* poly = *polyh;
+ return poly->numVoices;
+}
+
+int tPoly_getNumActiveVoices(tPoly* const polyh)
+{
+ _tPoly* poly = *polyh;
+ return LEAF_clip(0, tStack_getSize(&poly->stack), poly->numVoices);
+}
+
+float tPoly_getPitch(tPoly* const polyh, uint8_t voice)
+{
+ _tPoly* poly = *polyh;
+ return tRamp_sample(&poly->ramps[voice]) + tRamp_sample(&poly->pitchBendRamp);
+}
+
+int tPoly_getKey(tPoly* const polyh, uint8_t voice)
+{
+ _tPoly* poly = *polyh;
+ return poly->voices[voice][0];
+}
+
+int tPoly_getVelocity(tPoly* const polyh, uint8_t voice)
+{
+ _tPoly* poly = *polyh;
+ return poly->voices[voice][1];
+}
+
+int tPoly_isOn(tPoly* const polyh, uint8_t voice)
+{
+ _tPoly* poly = *polyh;
+ return (poly->voices[voice][0] > 0) ? 1 : 0;
+}
+
+
+
+
+//tSimplePoly = much more efficient implementation without ramps and glide
+
+
+// SIMPLE POLY
+void tSimplePoly_init(tSimplePoly* const polyh, int maxNumVoices)
+{
+ tSimplePoly_initToPool(polyh, maxNumVoices, &leaf.mempool);
+}
+
+void tSimplePoly_free(tSimplePoly* const polyh)
+{
+ tSimplePoly_freeFromPool(polyh, &leaf.mempool);
+}
+
+void tSimplePoly_initToPool (tSimplePoly* const polyh, int maxNumVoices, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSimplePoly* poly = *polyh = (_tSimplePoly*) mpool_alloc(sizeof(_tSimplePoly), m);
+
+ poly->numVoices = maxNumVoices;
+ poly->maxNumVoices = maxNumVoices;
+
+ for (int i = 0; i < 128; i++)
+ {
+ poly->notes[i][0] = -1;
+ poly->notes[i][1] = 0;
+ }
+ poly->stealing_on = 1;
+ poly->recover_stolen = 1;
+ poly->voices = (int**) mpool_alloc(sizeof(int*) * poly->maxNumVoices, m);
+
+ for (int i = 0; i < poly->maxNumVoices; ++i)
+ {
+ poly->voices[i] = (int*) mpool_alloc(sizeof(int) * 3, m);
+ poly->voices[i][0] = -1;
+ }
+ tStack_initToPool(&poly->stack, mp);
+
+}
+
+void tSimplePoly_freeFromPool (tSimplePoly* const polyh, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSimplePoly* poly = *polyh;
+
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ mpool_free((char*)poly->voices[i], m);
+ }
+ tStack_freeFromPool(&poly->stack, mp);
+ mpool_free((char*)poly->voices, m);
+ mpool_free((char*)poly, m);
+}
+
+int tSimplePoly_noteOn(tSimplePoly* const polyh, int note, uint8_t vel)
+{
+ _tSimplePoly* poly = *polyh;
+ int whichVoice, whichNote, oldNote, alteredVoice;
+ // if not in keymap or already on stack, dont do anything. else, add that note.
+ if (tStack_contains(&poly->stack, note) >= 0) return -1;
+ else
+ {
+ alteredVoice = -1;
+ oBool found = OFALSE;
+ for (int i = 0; i < poly->numVoices; i++)
+ {
+ if (poly->voices[i][0] == -1) // if inactive voice, give this note to voice
+ {
+
+ found = OTRUE;
+
+ poly->voices[i][0] = note;
+ poly->voices[i][1] = vel;
+ poly->notes[note][0] = i;
+ poly->notes[note][1] = vel;
+ poly->voices[i][2] = note; // voices[i][2] is the output midi note, (avoiding the -1 when a voice is inactive)
+
+ alteredVoice = i;
+ tStack_add(&poly->stack, note);
+ break;
+ }
+ }
+ if (!found)
+ {
+ //second preference is grabbing one that is in release phase but not finished sounding yet
+ for (int i = 0 ; i < poly->numVoices; i++)
+ {
+ if (poly->voices[i][0] == -2) // if voice is released but still sounding, take over this voice
+ {
+
+ found = OTRUE;
+
+ poly->voices[i][0] = note;
+ poly->voices[i][1] = vel;
+ poly->notes[note][0] = i;
+ poly->notes[note][1] = vel;
+ poly->voices[i][2] = note; // voices[i][2] is the output midi note, (avoiding the -1 when a voice is inactive)
+
+ alteredVoice = i;
+ tStack_add(&poly->stack, note);
+ break;
+ }
+ }
+ }
+ if ((!found) && (poly->stealing_on)) //steal
+ {
+ for (int j = tStack_getSize(&poly->stack) - 1; j >= 0; j--)
+ {
+ whichNote = tStack_get(&poly->stack, j);
+ whichVoice = poly->notes[whichNote][0];
+ if (whichVoice >= 0)
+ {
+ oldNote = poly->voices[whichVoice][0];
+ poly->voices[whichVoice][0] = note;
+ poly->voices[whichVoice][1] = vel;
+ poly->notes[oldNote][0] = -3; //mark the stolen voice as stolen (in the second dimension of the notes array)
+ poly->notes[note][0] = whichVoice;
+ poly->notes[note][1] = vel;
+
+ poly->voices[whichVoice][2] = note;
+
+ alteredVoice = whichVoice;
+ tStack_add(&poly->stack, note);
+ break;
+ }
+ }
+ }
+ return alteredVoice;
+ }
+}
+
+
+
+int tSimplePoly_noteOff(tSimplePoly* const polyh, uint8_t note)
+{
+ _tSimplePoly* poly = *polyh;
+ int16_t noteToTest = -1;
+
+ tStack_remove(&poly->stack, note);
+ poly->notes[note][0] = -1;
+
+ int deactivatedVoice = -1;
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ if (poly->voices[i][0] == note)
+ {
+ poly->voices[i][0] = -1;
+ poly->voices[i][1] = 0;
+ deactivatedVoice = i;
+ break;
+ }
+ }
+
+ if (poly->recover_stolen)
+ {
+ //grab old notes off the stack if there are notes waiting to replace the free voice
+ if (deactivatedVoice >= 0)
+ {
+ for (int j = 0; j < tStack_getSize(&poly->stack); ++j)
+ {
+ noteToTest = tStack_get(&poly->stack, j);
+
+ if (poly->notes[noteToTest][0] == -3) //if there is a stolen note waiting (marked inactive but on the stack)
+ {
+ poly->voices[deactivatedVoice][0] = noteToTest; //set the newly free voice to use the old stolen note
+ poly->voices[deactivatedVoice][1] = poly->notes[noteToTest][1]; // set the velocity of the voice to be the velocity of that note
+ poly->voices[deactivatedVoice][2] = noteToTest;
+ poly->notes[noteToTest][0] = deactivatedVoice; //mark that it is no longer stolen and is now active
+ return -1;
+ }
+ }
+ }
+ }
+ return deactivatedVoice;
+}
+
+
+void tSimplePoly_deactivateVoice(tSimplePoly* const polyh, uint8_t voice)
+{
+ _tSimplePoly* poly = *polyh;
+
+ if (poly->voices[voice][0] == -2) //only do this if the voice is waiting for deactivation (not already reassigned while waiting)
+ {
+ poly->voices[voice][0] = -1;
+ poly->voices[voice][1] = 0;
+ if (poly->recover_stolen)
+ {
+ //grab old notes off the stack if there are notes waiting to replace the free voice
+ for (int j = 0; j < tStack_getSize(&poly->stack); ++j)
+ {
+ noteToTest = tStack_get(&poly->stack, j);
+
+ if (poly->notes[noteToTest][0] == -3) //if there is a stolen note waiting (marked inactive but on the stack)
+ {
+ poly->voices[voice][0] = noteToTest; //set the newly free voice to use the old stolen note
+ poly->voices[voice][1] = poly->notes[noteToTest][1]; // set the velocity of the voice to be the velocity of that note
+ poly->voices[voice][2] = noteToTest;
+ poly->notes[noteToTest][0] = voice; //mark that it is no longer stolen and is now active
+ }
+ }
+ }
+ }
+}
+
+int tSimplePoly_findVoiceAssignedToNote(tSimplePoly* const polyh, uint8_t note)
+{
+ _tSimplePoly* poly = *polyh;
+
+
+ int voiceWithThatNote = -1;
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ if (poly->voices[i][0] == note)
+ {
+ voiceWithThatNote = i;
+ break;
+ }
+ }
+ return voiceWithThatNote;
+}
+
+
+int tSimplePoly_markPendingNoteOff(tSimplePoly* const polyh, uint8_t note)
+{
+ _tSimplePoly* poly = *polyh;
+ int deactivatedVoice = -1;
+
+ if (tStack_remove(&poly->stack, note))
+
+ {
+
+ poly->notes[note][0] = -2;
+
+
+
+ for (int i = 0; i < poly->maxNumVoices; i++)
+ {
+ if (poly->voices[i][0] == note)
+ {
+ poly->voices[i][0] = -2;
+ poly->voices[i][1] = 0;
+ deactivatedVoice = i;
+ break;
+ }
+ }
+
+
+ }
+ return deactivatedVoice;
+}
+
+void tSimplePoly_setNumVoices(tSimplePoly* const polyh, uint8_t numVoices)
+{
+ _tSimplePoly* poly = *polyh;
+ poly->numVoices = (numVoices > poly->maxNumVoices) ? poly->maxNumVoices : numVoices;
+}
+
+
+int tSimplePoly_getNumVoices(tSimplePoly* const polyh)
+{
+ _tSimplePoly* poly = *polyh;
+ return poly->numVoices;
+}
+
+int tSimplePoly_getNumActiveVoices(tSimplePoly* const polyh)
+{
+ _tSimplePoly* poly = *polyh;
+ return LEAF_clip(0, tStack_getSize(&poly->stack), poly->numVoices);
+}
+
+
+int tSimplePoly_getPitch(tSimplePoly* const polyh, uint8_t voice)
+{
+ _tSimplePoly* poly = *polyh;
+ return poly->voices[voice][2];
+}
+
+//this one returns negative one if the voice is inactive
+int tSimplePoly_getPitchAndCheckActive(tSimplePoly* const polyh, uint8_t voice)
+{
+ _tSimplePoly* poly = *polyh;
+ return poly->voices[voice][0];
+}
+
+int tSimplePoly_getVelocity(tSimplePoly* const polyh, uint8_t voice)
+{
+ _tSimplePoly* poly = *polyh;
+ return poly->voices[voice][1];
+}
+
+int tSimplePoly_isOn(tSimplePoly* const polyh, uint8_t voice)
+{
+ _tSimplePoly* poly = *polyh;
+ return (poly->voices[voice][0] > 0) ? 1 : 0;
+}
--- /dev/null
+++ b/leaf/Src/leaf-oscillators.c
@@ -1,0 +1,1660 @@
+/*==============================================================================
+ leaf-oscillators.c
+ Created: 20 Jan 2017 12:00:58pm
+ Author: Michael R Mulshine
+ ==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-oscillators.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-oscillators.h"
+#include "../leaf.h"
+
+#endif
+
+// Cycle
+void tCycle_init(tCycle* const cy)
+{
+ tCycle_initToPool(cy, &leaf.mempool);
+}
+
+void tCycle_free(tCycle* const cy)
+{
+ tCycle_freeFromPool(cy, &leaf.mempool);
+}
+
+void tCycle_initToPool (tCycle* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCycle* c = *cy = (_tCycle*) mpool_alloc(sizeof(_tCycle), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+
+}
+
+void tCycle_freeFromPool (tCycle* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tCycle* c = *cy;
+
+ mpool_free((char*)c, m);
+}
+
+void tCycle_setFreq(tCycle* const cy, float freq)
+{
+ _tCycle* c = *cy;
+
+ c->freq = freq;
+
+ c->inc = freq * leaf.invSampleRate;
+}
+
+//need to check bounds and wrap table properly to allow through-zero FM
+float tCycle_tick(tCycle* const cy)
+{
+ _tCycle* c = *cy;
+ float temp;;
+ int intPart;;
+ float fracPart;
+ float samp0;
+ float samp1;
+
+ // Phasor increment
+ c->phase += c->inc;
+ while (c->phase >= 1.0f) c->phase -= 1.0f;
+ while (c->phase < 0.0f) c->phase += 1.0f;
+
+ // Wavetable synthesis
+
+ temp = SINE_TABLE_SIZE * c->phase;
+ intPart = (int)temp;
+ fracPart = temp - (float)intPart;
+ samp0 = __leaf_table_sinewave[intPart];
+ if (++intPart >= SINE_TABLE_SIZE) intPart = 0;
+ samp1 = __leaf_table_sinewave[intPart];
+
+ return (samp0 + (samp1 - samp0) * fracPart);
+
+}
+
+void tCycleSampleRateChanged (tCycle* const cy)
+{
+ _tCycle* c = *cy;
+
+ c->inc = c->freq * leaf.invSampleRate;
+}
+
+//========================================================================
+/* Triangle */
+void tTriangle_init(tTriangle* const cy)
+{
+ tTriangle_initToPool(cy, &leaf.mempool);
+}
+
+void tTriangle_free(tTriangle* const cy)
+{
+ tTriangle_freeFromPool(cy, &leaf.mempool);
+}
+
+void tTriangle_initToPool (tTriangle* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTriangle* c = *cy = (_tTriangle*) mpool_alloc(sizeof(_tTriangle), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ tTriangle_setFreq(cy, 220);
+}
+
+void tTriangle_freeFromPool (tTriangle* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTriangle* c = *cy;
+
+ mpool_free((char*)c, m);
+}
+
+void tTriangle_setFreq(tTriangle* const cy, float freq)
+{
+ _tTriangle* c = *cy;
+
+ c->freq = freq;
+
+ c->inc = c->freq * leaf.invSampleRate;
+
+ c->w = c->freq * INV_20;
+ for (c->oct = 0; c->w > 2.0f; c->oct++)
+ {
+ c->w = 0.5f * c->w;
+ }
+ c->w = 2.0f - c->w;
+}
+
+
+float tTriangle_tick(tTriangle* const cy)
+{
+ _tTriangle* c = *cy;
+
+ // Phasor increment
+ c->phase += c->inc;
+ while (c->phase >= 1.0f) c->phase -= 1.0f;
+ while (c->phase < 0.0f) c->phase += 1.0f;
+
+ float out = 0.0f;
+
+ int idx = (int)(c->phase * TRI_TABLE_SIZE);
+
+ // Wavetable synthesis
+ out = __leaf_table_triangle[c->oct+1][idx] +
+ (__leaf_table_triangle[c->oct][idx] - __leaf_table_triangle[c->oct+1][idx]) * c->w;
+
+ return out;
+}
+
+void tTriangleSampleRateChanged (tTriangle* const cy)
+{
+ _tTriangle* c = *cy;
+
+ c->inc = c->freq * leaf.invSampleRate;
+}
+
+//========================================================================
+/* Square */
+void tSquare_init(tSquare* const cy)
+{
+ tSquare_initToPool(cy, &leaf.mempool);
+}
+
+void tSquare_free(tSquare* const cy)
+{
+ tSquare_freeFromPool(cy, &leaf.mempool);
+}
+
+void tSquare_initToPool (tSquare* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSquare* c = *cy = (_tSquare*) mpool_alloc(sizeof(_tSquare), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ tSquare_setFreq(cy, 220);
+}
+
+void tSquare_freeFromPool(tSquare* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSquare* c = *cy;
+
+ mpool_free((char*)c, m);
+}
+
+void tSquare_setFreq(tSquare* const cy, float freq)
+{
+ _tSquare* c = *cy;
+
+ c->freq = freq;
+
+ c->inc = c->freq * leaf.invSampleRate;
+
+ c->w = c->freq * INV_20;
+ for (c->oct = 0; c->w > 2.0f; c->oct++)
+ {
+ c->w = 0.5f * c->w;
+ }
+ c->w = 2.0f - c->w;
+}
+
+float tSquare_tick(tSquare* const cy)
+{
+ _tSquare* c = *cy;
+
+ // Phasor increment
+ c->phase += c->inc;
+ while (c->phase >= 1.0f) c->phase -= 1.0f;
+ while (c->phase < 0.0f) c->phase += 1.0f;
+
+ float out = 0.0f;
+
+ int idx = (int)(c->phase * SQR_TABLE_SIZE);
+
+ // Wavetable synthesis
+ out = __leaf_table_squarewave[c->oct+1][idx] +
+ (__leaf_table_squarewave[c->oct][idx] - __leaf_table_squarewave[c->oct+1][idx]) * c->w;
+
+ return out;
+}
+
+void tSquareSampleRateChanged (tSquare* const cy)
+{
+ _tSquare* c = *cy;
+
+ c->inc = c->freq * leaf.invSampleRate;
+}
+
+//=====================================================================
+// Sawtooth
+void tSawtooth_init(tSawtooth* const cy)
+{
+ tSawtooth_initToPool(cy, &leaf.mempool);
+}
+
+void tSawtooth_free(tSawtooth* const cy)
+{
+ tSawtooth_freeFromPool(cy, &leaf.mempool);
+}
+
+void tSawtooth_initToPool (tSawtooth* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSawtooth* c = *cy = (_tSawtooth*) mpool_alloc(sizeof(_tSawtooth), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ tSawtooth_setFreq(cy, 220);
+}
+
+void tSawtooth_freeFromPool (tSawtooth* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSawtooth* c = *cy;
+
+ mpool_free((char*)c, m);
+}
+
+void tSawtooth_setFreq(tSawtooth* const cy, float freq)
+{
+ _tSawtooth* c = *cy;
+
+ c->freq = freq;
+
+ c->inc = c->freq * leaf.invSampleRate;
+
+ c->w = c->freq * INV_20;
+ for (c->oct = 0; c->w > 2.0f; c->oct++)
+ {
+ c->w = 0.5f * c->w;
+ }
+ c->w = 2.0f - c->w;
+}
+
+float tSawtooth_tick(tSawtooth* const cy)
+{
+ _tSawtooth* c = *cy;
+
+ // Phasor increment
+ c->phase += c->inc;
+ while (c->phase >= 1.0f) c->phase -= 1.0f;
+ while (c->phase < 0.0f) c->phase += 1.0f;
+
+ float out = 0.0f;
+
+ int idx = (int)(c->phase * SAW_TABLE_SIZE);
+
+ // Wavetable synthesis
+ out = __leaf_table_sawtooth[c->oct+1][idx] +
+ (__leaf_table_sawtooth[c->oct][idx] - __leaf_table_sawtooth[c->oct+1][idx]) * c->w;
+
+ return out;
+}
+
+void tSawtoothSampleRateChanged (tSawtooth* const cy)
+{
+ _tSawtooth* c = *cy;
+
+ c->inc = c->freq * leaf.invSampleRate;
+}
+
+//========================================================================
+// Sine
+void tSine_init(tSine* const cy, int size)
+{
+ tSine_initToPool(cy, size, &leaf.mempool);
+}
+
+void tSine_free(tSine* const cy)
+{
+ tSine_freeFromPool(cy, &leaf.mempool);
+}
+
+void tSine_initToPool (tSine* const cy, int size, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSine* c = *cy = (_tSine*) mpool_alloc(sizeof(_tSine), m);
+
+ c->size = size;
+ c->sine = (float*) mpool_alloc(sizeof(float) * c->size, m);
+ LEAF_generate_sine(c->sine, size);
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+}
+
+void tSine_freeFromPool (tSine* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSine* c = *cy;
+
+ mpool_free((char*)c->sine, m);
+ mpool_free((char*)c, m);
+}
+
+void tSine_setFreq(tSine* const cy, float freq)
+{
+ _tSine* c = *cy;
+
+ c->freq = freq;
+ c->inc = freq * leaf.invSampleRate;
+}
+
+float tSine_tick(tSine* const cy)
+{
+ _tSine* c = *cy;
+ float temp;
+ int intPart;
+ float fracPart;
+ float samp0;
+ float samp1;
+
+ // Phasor increment
+ c->phase += c->inc;
+ while (c->phase >= 1.0f) c->phase -= 1.0f;
+ while (c->phase < 0.0f) c->phase += 1.0f;
+
+ // Wavetable synthesis
+
+ temp = c->size * c->phase;
+ intPart = (int)temp;
+ fracPart = temp - (float)intPart;
+ samp0 = c->sine[intPart];
+ if (++intPart >= c->size) intPart = 0;
+ samp1 = c->sine[intPart];
+
+ return (samp0 + (samp1 - samp0) * fracPart);
+
+}
+
+void tSineSampleRateChanged (tSine* const cy)
+{
+ _tSine* c = *cy;
+
+ c->inc = c->freq * leaf.invSampleRate;
+}
+
+//==============================================================================
+
+/* tTri: Anti-aliased Triangle waveform. */
+void tTri_init (tTri* const osc)
+{
+ tTri_initToPool(osc, &leaf.mempool);
+}
+
+void tTri_free (tTri* const osc)
+{
+ tTri_freeFromPool(osc, &leaf.mempool);
+}
+
+void tTri_initToPool (tTri* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTri* c = *osc = (_tTri*) mpool_alloc(sizeof(_tTri), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ c->skew = 0.5f;
+ c->lastOut = 0.0f;
+}
+
+void tTri_freeFromPool (tTri* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tTri* c = *cy;
+
+ mpool_free((char*)c, m);
+}
+
+float tTri_tick (tTri* const osc)
+{
+ _tTri* c = *osc;
+
+ float out;
+ float skew;
+
+ if (c->phase < c->skew)
+ {
+ out = 1.0f;
+ skew = (1.0f - c->skew) * 2.0f;
+ }
+ else
+ {
+ out = -1.0f;
+ skew = c->skew * 2.0f;
+ }
+
+ out += LEAF_poly_blep(c->phase, c->inc);
+ out -= LEAF_poly_blep(fmod(c->phase + (1.0f - c->skew), 1.0f), c->inc);
+
+ out = (skew * c->inc * out) + ((1 - c->inc) * c->lastOut);
+ c->lastOut = out;
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ }
+
+ return out;
+}
+
+void tTri_setFreq (tTri* const osc, float freq)
+{
+ _tTri* c = *osc;
+
+ c->freq = freq;
+ c->inc = freq * leaf.invSampleRate;
+}
+
+void tTri_setSkew (tTri* const osc, float skew)
+{
+ _tTri* c = *osc;
+ c->skew = (skew + 1.0f) * 0.5f;
+}
+
+
+//==============================================================================
+
+/* tPulse: Anti-aliased pulse waveform. */
+void tPulse_init (tPulse* const osc)
+{
+ tPulse_initToPool(osc, &leaf.mempool);
+}
+
+void tPulse_free (tPulse* const osc)
+{
+ tPulse_freeFromPool(osc, &leaf.mempool);
+}
+
+void tPulse_initToPool (tPulse* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPulse* c = *osc = (_tPulse*) mpool_alloc(sizeof(_tPulse), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ c->width = 0.5f;
+}
+
+void tPulse_freeFromPool(tPulse* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPulse* c = *osc;
+
+ mpool_free((char*)c, m);
+}
+
+float tPulse_tick (tPulse* const osc)
+{
+ _tPulse* c = *osc;
+
+ float out;
+ if (c->phase < c->width) out = 1.0f;
+ else out = -1.0f;
+ out += LEAF_poly_blep(c->phase, c->inc);
+ out -= LEAF_poly_blep(fmod(c->phase + (1.0f - c->width), 1.0f), c->inc);
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ }
+
+ return out;
+}
+
+void tPulse_setFreq (tPulse* const osc, float freq)
+{
+ _tPulse* c = *osc;
+
+ c->freq = freq;
+ c->inc = freq * leaf.invSampleRate;
+}
+
+void tPulse_setWidth (tPulse* const osc, float width)
+{
+ _tPulse* c = *osc;
+ c->width = width;
+}
+
+
+//==============================================================================
+
+/* tSawtooth: Anti-aliased Sawtooth waveform. */
+void tSaw_init (tSaw* const osc)
+{
+ tSaw_initToPool(osc, &leaf.mempool);
+}
+
+void tSaw_free (tSaw* const osc)
+{
+ tSaw_freeFromPool(osc, &leaf.mempool);
+}
+
+void tSaw_initToPool (tSaw* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSaw* c = *osc = (_tSaw*) mpool_alloc(sizeof(_tSaw), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+}
+
+void tSaw_freeFromPool (tSaw* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSaw* c = *osc;
+
+ mpool_free((char*)c, m);
+}
+
+float tSaw_tick (tSaw* const osc)
+{
+ _tSaw* c = *osc;
+
+ float out = (c->phase * 2.0f) - 1.0f;
+ out -= LEAF_poly_blep(c->phase, c->inc);
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ }
+
+ return out;
+}
+
+void tSaw_setFreq (tSaw* const osc, float freq)
+{
+ _tSaw* c = *osc;
+
+ c->freq = freq;
+
+ c->inc = freq * leaf.invSampleRate;
+}
+
+//========================================================================
+/* Phasor */
+void tPhasorSampleRateChanged (tPhasor* const ph)
+{
+ _tPhasor* p = *ph;
+
+ p->inc = p->freq * leaf.invSampleRate;
+};
+
+void tPhasor_init(tPhasor* const ph)
+{
+ tPhasor_initToPool(ph, &leaf.mempool);
+}
+
+void tPhasor_free(tPhasor* const ph)
+{
+ tPhasor_freeFromPool(ph, &leaf.mempool);
+}
+
+void tPhasor_initToPool (tPhasor* const ph, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPhasor* p = *ph = (_tPhasor*) mpool_alloc(sizeof(_tPhasor), m);
+
+ p->phase = 0.0f;
+ p->inc = 0.0f;
+ p->phaseDidReset = 0;
+}
+
+void tPhasor_freeFromPool(tPhasor* const ph, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPhasor* p = *ph;
+
+ mpool_free((char*)p, m);
+}
+
+void tPhasor_setFreq(tPhasor* const ph, float freq)
+{
+ _tPhasor* p = *ph;
+
+ p->freq = freq;
+
+ p->inc = freq * leaf.invSampleRate;
+}
+
+float tPhasor_tick(tPhasor* const ph)
+{
+ _tPhasor* p = *ph;
+
+ p->phase += p->inc;
+
+
+ p->phaseDidReset = 0;
+ if (p->phase >= 1.0f)
+ {
+ p->phaseDidReset = 1;
+ p->phase -= 1.0f;
+ }
+
+ return p->phase;
+}
+
+/* Noise */
+void tNoise_init(tNoise* const ns, NoiseType type)
+{
+ tNoise_initToPool(ns, type, &leaf.mempool);
+}
+
+void tNoise_free(tNoise* const ns)
+{
+ tNoise_freeFromPool(ns, &leaf.mempool);
+}
+
+void tNoise_initToPool (tNoise* const ns, NoiseType type, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNoise* n = *ns = (_tNoise*) mpool_alloc(sizeof(_tNoise), m);
+
+ n->type = type;
+ n->rand = leaf.random;
+}
+
+void tNoise_freeFromPool (tNoise* const ns, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNoise* n = *ns;
+
+ mpool_free((char*)n, m);
+}
+
+float tNoise_tick(tNoise* const ns)
+{
+ _tNoise* n = *ns;
+
+ float rand = (n->rand() * 2.0f) - 1.0f;
+
+ if (n->type == PinkNoise)
+ {
+ float tmp;
+ n->pinkb0 = 0.99765f * n->pinkb0 + rand * 0.0990460f;
+ n->pinkb1 = 0.96300f * n->pinkb1 + rand * 0.2965164f;
+ n->pinkb2 = 0.57000f * n->pinkb2 + rand * 1.0526913f;
+ tmp = n->pinkb0 + n->pinkb1 + n->pinkb2 + rand * 0.1848f;
+ return (tmp * 0.05f);
+ }
+ else // WhiteNoise
+ {
+ return rand;
+ }
+}
+
+//=================================================================================
+/* Neuron */
+
+void tNeuronSampleRateChanged(tNeuron* nr)
+{
+
+}
+
+void tNeuron_init(tNeuron* const nr)
+{
+ tNeuron_initToPool(nr, &leaf.mempool);
+}
+
+void tNeuron_free(tNeuron* const nr)
+{
+ tNeuron_freeFromPool(nr, &leaf.mempool);
+}
+
+void tNeuron_initToPool (tNeuron* const nr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNeuron* n = *nr = (_tNeuron*) mpool_alloc(sizeof(_tNeuron), m);
+
+ tPoleZero_initToPool(&n->f, mp);
+
+ tPoleZero_setBlockZero(&n->f, 0.99f);
+
+ n->timeStep = 1.0f / 50.0f;
+
+ n->current = 0.0f; // 100.0f for sound
+ n->voltage = 0.0f;
+
+ n->mode = NeuronNormal;
+
+ n->P[0] = 0.0f;
+ n->P[1] = 0.0f;
+ n->P[2] = 1.0f;
+
+ n->V[0] = -12.0f;
+ n->V[1] = 115.0f;
+ n->V[2] = 10.613f;
+
+ n->gK = 36.0f;
+ n->gN = 120.0f;
+ n->gL = 0.3f;
+ n->C = 1.0f;
+
+ n->rate[2] = n->gL/n->C;
+}
+
+void tNeuron_freeFromPool(tNeuron* const nr, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNeuron* n = *nr;
+
+ tPoleZero_free(&n->f);
+ mpool_free((char*)n, m);
+}
+
+void tNeuron_reset(tNeuron* const nr)
+{
+ _tNeuron* n = *nr;
+
+ tPoleZero_setBlockZero(&n->f, 0.99f);
+
+ n->timeStep = 1.0f / 50.0f;
+
+ n->current = 0.0f; // 100.0f for sound
+ n->voltage = 0.0f;
+
+ n->mode = NeuronNormal;
+
+ n->P[0] = 0.0f;
+ n->P[1] = 0.0f;
+ n->P[2] = 1.0f;
+
+ n->V[0] = -12.0f;
+ n->V[1] = 115.0f;
+ n->V[2] = 10.613f;
+
+ n->gK = 36.0f;
+ n->gN = 120.0f;
+ n->gL = 0.3f;
+ n->C = 1.0f;
+
+ n->rate[2] = n->gL/n->C;
+}
+
+void tNeuron_setV1(tNeuron* const nr, float V1)
+{
+ _tNeuron* n = *nr;
+ n->V[0] = V1;
+}
+
+
+void tNeuron_setV2(tNeuron* const nr, float V2)
+{
+ _tNeuron* n = *nr;
+ n->V[1] = V2;
+}
+
+void tNeuron_setV3(tNeuron* const nr, float V3)
+{
+ _tNeuron* n = *nr;
+ n->V[2] = V3;
+}
+
+void tNeuron_setTimeStep(tNeuron* const nr, float timeStep)
+{
+ _tNeuron* n = *nr;
+ n->timeStep = timeStep;
+}
+
+void tNeuron_setK(tNeuron* const nr, float K)
+{
+ _tNeuron* n = *nr;
+ n->gK = K;
+}
+
+void tNeuron_setL(tNeuron* const nr, float L)
+{
+ _tNeuron* n = *nr;
+ n->gL = L;
+ n->rate[2] = n->gL/n->C;
+}
+
+void tNeuron_setN(tNeuron* const nr, float N)
+{
+ _tNeuron* n = *nr;
+ n->gN = N;
+}
+
+void tNeuron_setC(tNeuron* const nr, float C)
+{
+ _tNeuron* n = *nr;
+ n->C = C;
+ n->rate[2] = n->gL/n->C;
+}
+
+float tNeuron_tick(tNeuron* const nr)
+{
+ _tNeuron* n = *nr;
+
+ float output = 0.0f;
+ float voltage = n->voltage;
+
+ n->alpha[0] = (0.01f * (10.0f - voltage)) / (expf((10.0f - voltage)/10.0f) - 1.0f);
+ n->alpha[1] = (0.1f * (25.0f-voltage)) / (expf((25.0f-voltage)/10.0f) - 1.0f);
+ n->alpha[2] = (0.07f * expf((-1.0f * voltage)/20.0f));
+
+ n->beta[0] = (0.125f * expf((-1.0f* voltage)/80.0f));
+ n->beta[1] = (4.0f * expf((-1.0f * voltage)/18.0f));
+ n->beta[2] = (1.0f / (expf((30.0f-voltage)/10.0f) + 1.0f));
+
+ for (int i = 0; i < 3; i++)
+ {
+ n->P[i] = (n->alpha[i] * n->timeStep) + ((1.0f - ((n->alpha[i] + n->beta[i]) * n->timeStep)) * n->P[i]);
+
+ if (n->P[i] > 1.0f) n->P[i] = 0.0f;
+ else if (n->P[i] < -1.0f) n->P[i] = 0.0f;
+ }
+ // rate[0]= k ; rate[1] = Na ; rate[2] = l
+ n->rate[0] = ((n->gK * powf(n->P[0], 4.0f)) / n->C);
+ n->rate[1] = ((n->gN * powf(n->P[1], 3.0f) * n->P[2]) / n->C);
+
+ //calculate the final membrane voltage based on the computed variables
+ n->voltage = voltage +
+ (n->timeStep * n->current / n->C) -
+ (n->timeStep * ( n->rate[0] * (voltage - n->V[0]) + n->rate[1] * (voltage - n->V[1]) + n->rate[2] * (voltage - n->V[2])));
+
+ if (n->mode == NeuronTanh)
+ {
+ n->voltage = 100.0f * tanhf(0.01f * n->voltage);
+ }
+ else if (n->mode == NeuronAaltoShaper)
+ {
+ float shapeVoltage = 0.01f * n->voltage;
+
+ float w, c, xc, xc2, xc4;
+
+ float sqrt8 = 2.82842712475f;
+
+ float wscale = 1.30612244898f;
+ float m_drive = 1.0f;
+
+ xc = LEAF_clip(-sqrt8, shapeVoltage, sqrt8);
+
+ xc2 = xc*xc;
+
+ c = 0.5f * shapeVoltage * (3.0f - (xc2));
+
+ xc4 = xc2 * xc2;
+
+ w = (1.0f - xc2 * 0.25f + xc4 * 0.015625f) * wscale;
+
+ shapeVoltage = w * (c + 0.05f * xc2) * (m_drive + 0.75f);
+
+ n->voltage = 100.0f * shapeVoltage;
+ }
+
+
+ if (n->voltage > 100.0f) n->voltage = 100.0f;
+ else if (n->voltage < -100.) n->voltage = -100.0f;
+
+ //(inputCurrent + (voltage - ((voltage * timeStep) / timeConstant)) + P[0] + P[1] + P[2]) => voltage;
+ // now we should have a result
+ //set the output voltage to the "step" ugen, which controls the DAC.
+ output = n->voltage * 0.01f; // volts
+
+ output = tPoleZero_tick(&n->f, output);
+
+ return output;
+
+}
+
+void tNeuron_setMode (tNeuron* const nr, NeuronMode mode)
+{
+ _tNeuron* n = *nr;
+ n->mode = mode;
+}
+
+void tNeuron_setCurrent (tNeuron* const nr, float current)
+{
+ _tNeuron* n = *nr;
+ n->current = current;
+}
+
+
+
+void tMinBLEP_init (tMinBLEP* const minblep, int zeroCrossings, int oversamplerRatio)
+{
+ tMinBLEP_initToPool(minblep, zeroCrossings, oversamplerRatio, &leaf.mempool);
+}
+
+void tMinBLEP_free (tMinBLEP* const minblep)
+{
+ tMinBLEP_freeFromPool(minblep, &leaf.mempool);
+}
+
+void tMinBLEP_initToPool (tMinBLEP* const minblep, int zeroCrossings, int oversamplerRatio, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMinBLEP* mb = *minblep = (_tMinBLEP*) mpool_alloc(sizeof(_tMinBLEP), m);
+
+ mb->overSamplingRatio = zeroCrossings;
+ mb->zeroCrossings = oversamplerRatio;
+ mb->returnDerivative = 0;
+ mb->proportionalBlepFreq = (float) mb->zeroCrossings / (float) mb->overSamplingRatio; // defaults to NyQuist ....
+
+ mb->lastValue = 0;
+ mb->lastDelta = 0;
+
+// float* x1, x2, y1, y2;
+ // AA FILTER
+// zeromem (coefficients, sizeof (coefficients));
+
+ mb->minBlepSize = (mb->zeroCrossings * 2 * mb->overSamplingRatio) + 1;
+
+ mb->ratio = 1;
+ mb->lastRatio = 1;
+
+// createLowPass (ratio);
+// resetFilters();
+
+ mb->blepIndex = 0;
+ mb->numActiveBleps = 0;
+ //currentActiveBlepOffsets;
+
+ // These probably don't need to be this large
+ mb->offset = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+// mb->freqMultiple = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+ mb->pos_change_magnitude = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+ mb->vel_change_magnitude = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+
+ mb->minBlepArray = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+ mb->minBlepDerivArray = (float*) mpool_alloc(sizeof(float) * mb->minBlepSize, m);
+
+ tMinBLEP_buildBLEP(minblep);
+}
+
+void tMinBLEP_freeFromPool (tMinBLEP* const minblep, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMinBLEP* mb = *minblep;
+
+ mpool_free((char*)mb->offset, m);
+// mpool_free(mb->freqMultiple, m);
+ mpool_free((char*)mb->pos_change_magnitude, m);
+ mpool_free((char*)mb->vel_change_magnitude, m);
+
+ mpool_free((char*)mb->minBlepArray, m);
+ mpool_free((char*)mb->minBlepDerivArray, m);
+
+ mpool_free((char*)mb, m);
+}
+
+// SINC Function
+static float SINC(float x)
+{
+ float pix;
+
+ if(x == 0.0f)
+ return 1.0f;
+ else
+ {
+ pix = PI * x;
+ return sinf(pix) / pix;
+ }
+}
+
+// Generate Blackman Window
+static void BlackmanWindow(int n, float *w)
+{
+ int m = n - 1;
+ int i;
+ float f1, f2, fm;
+
+ fm = (float)m;
+ for(i = 0; i <= m; i++)
+ {
+ f1 = (2.0f * PI * (float)i) / fm;
+ f2 = 2.0f * f1;
+ w[i] = 0.42f - (0.5f * cosf(f1)) + (0.08f * cosf(f2));
+ }
+}
+
+// Discrete Fourier Transform
+static void DFT(int n, float *realTime, float *imagTime, float *realFreq, float *imagFreq)
+{
+ int k, i;
+ float sr, si, p;
+
+ for(k = 0; k < n; k++)
+ {
+ realFreq[k] = 0.0f;
+ imagFreq[k] = 0.0f;
+ }
+
+ for(k = 0; k < n; k++)
+ for(i = 0; i < n; i++)
+ {
+ p = (2.0f * PI * (float)(k * i)) / n;
+ sr = cosf(p);
+ si = -sinf(p);
+ realFreq[k] += (realTime[i] * sr) - (imagTime[i] * si);
+ imagFreq[k] += (realTime[i] * si) + (imagTime[i] * sr);
+ }
+}
+
+// Inverse Discrete Fourier Transform
+static void InverseDFT(int n, float *realTime, float *imagTime, float *realFreq, float *imagFreq)
+{
+ int k, i;
+ float sr, si, p;
+
+ for(k = 0; k < n; k++)
+ {
+ realTime[k] = 0.0f;
+ imagTime[k] = 0.0f;
+ }
+
+ for(k = 0; k < n; k++)
+ {
+ for(i = 0; i < n; i++)
+ {
+ p = (2.0f * PI * (float)(k * i)) / n;
+ sr = cosf(p);
+ si = -sinf(p);
+ realTime[k] += (realFreq[i] * sr) + (imagFreq[i] * si);
+ imagTime[k] += (realFreq[i] * si) - (imagFreq[i] * sr);
+ }
+ realTime[k] /= n;
+ imagTime[k] /= n;
+ }
+}
+
+// Complex Absolute Value
+static float complexabs(float x, float y)
+{
+ return sqrtf((x * x) + (y * y));
+}
+
+// Complex Exponential
+static void complexexp(float x, float y, float *zx, float *zy)
+{
+ float expx;
+
+ expx = expf(x);
+ *zx = expx * cosf(y);
+ *zy = expx * sinf(y);
+}
+
+// Compute Real Cepstrum Of Signal
+static void RealCepstrum(int n, float *signal, float *realCepstrum)
+{
+ int i;
+
+ float realTime[n];
+ float imagTime[n];
+ float realFreq[n];
+ float imagFreq[n];
+
+ // Compose Complex FFT Input
+
+ for(i = 0; i < n; i++)
+ {
+ realTime[i] = signal[i];
+ imagTime[i] = 0.0f;
+ }
+
+ // Perform DFT
+
+ DFT(n, realTime, imagTime, realFreq, imagFreq);
+
+ // Calculate Log Of Absolute Value
+
+ for(i = 0; i < n; i++)
+ {
+ realFreq[i] = logf(complexabs(realFreq[i], imagFreq[i]));
+ imagFreq[i] = 0.0f;
+ }
+
+ // Perform Inverse FFT
+
+ InverseDFT(n, realTime, imagTime, realFreq, imagFreq);
+
+ // Output Real Part Of FFT
+ for(i = 0; i < n; i++)
+ realCepstrum[i] = realTime[i];
+}
+
+// Compute Minimum Phase Reconstruction Of Signal
+static void MinimumPhase(int n, float *realCepstrum, float *minimumPhase)
+{
+ int i, nd2;
+ float realTime[n];
+ float imagTime[n];
+ float realFreq[n];
+ float imagFreq[n];
+
+ nd2 = n / 2;
+
+ if((n % 2) == 1)
+ {
+ realTime[0] = realCepstrum[0];
+ for(i = 1; i < nd2; i++)
+ realTime[i] = 2.0f * realCepstrum[i];
+ for(i = nd2; i < n; i++)
+ realTime[i] = 0.0f;
+ }
+ else
+ {
+ realTime[0] = realCepstrum[0];
+ for(i = 1; i < nd2; i++)
+ realTime[i] = 2.0f * realCepstrum[i];
+ realTime[nd2] = realCepstrum[nd2];
+ for(i = nd2 + 1; i < n; i++)
+ realTime[i] = 0.0f;
+ }
+
+ for(i = 0; i < n; i++)
+ imagTime[i] = 0.0f;
+
+ DFT(n, realTime, imagTime, realFreq, imagFreq);
+
+ for(i = 0; i < n; i++)
+ complexexp(realFreq[i], imagFreq[i], &realFreq[i], &imagFreq[i]);
+
+ InverseDFT(n, realTime, imagTime, realFreq, imagFreq);
+
+ for(i = 0; i < n; i++)
+ minimumPhase[i] = realTime[i];
+}
+
+
+// Generate the MinBLEP
+void tMinBLEP_buildBLEP(tMinBLEP* const minblep)
+{
+ _tMinBLEP* m = *minblep;
+
+ int i, n;
+ float r, a, b;
+
+ n = m->minBlepSize;
+
+ // Generate Sinc
+
+ a = -m->overSamplingRatio;
+ b = m->overSamplingRatio;
+ for(i = 0; i < n; i++)
+ {
+ r = ((float)i) / ((float)(n - 1));
+ m->minBlepArray[i] = SINC(a + (r * (b - a)));
+ m->minBlepDerivArray[i] = 0;
+ }
+
+ // Window Sinc
+
+ BlackmanWindow(n, m->minBlepDerivArray);
+ for(i = 0; i < n; i++)
+ m->minBlepArray[i] *= m->minBlepDerivArray[i];
+
+ // Minimum Phase Reconstruction
+
+ RealCepstrum(n, m->minBlepArray, m->minBlepDerivArray);
+ MinimumPhase(n, m->minBlepDerivArray, m->minBlepArray);
+
+ // Integrate Into MinBLEP
+ a = 0.0f;
+ float secondInt = 0.0f;
+ for(i = 0; i < n; i++)
+ {
+ a += m->minBlepArray[i];
+ m->minBlepArray[i] = a;
+
+ secondInt += a;
+ m->minBlepDerivArray[i] = secondInt;
+ }
+
+ // Normalize
+ a = m->minBlepArray[n - 1];
+ a = 1.0f / a;
+ b = 0.0f;
+ for(i = 0; i < n; i++)
+ {
+ m->minBlepArray[i] *= a;
+ b = fmaxf(b, m->minBlepDerivArray[i]);
+ }
+
+ // Normalize ...
+ b = 1.0f/b;
+ for (i = 0; i < n; i++)
+ {
+ m->minBlepDerivArray[i] *= b;
+ m->minBlepDerivArray[i] -= ((float)i) / ((float) n-1);
+
+ // SUBTRACT 1 and invert so the signal (so it goes 1->0)
+ m->minBlepArray[i] -= 1.0f;
+ m->minBlepArray[i] = -m->minBlepArray[i];
+ }
+}
+
+void tMinBLEP_addBLEP (tMinBLEP* const minblep, float offset, float posChange, float velChange)
+{
+ _tMinBLEP* m = *minblep;
+
+ int n = m->minBlepSize;
+
+ m->offset[m->blepIndex] = offset;
+// m->freqMultiple[m->blepIndex] = m->overSamplingRatio*m->proportionalBlepFreq;
+ m->pos_change_magnitude[m->blepIndex] = posChange;
+ m->vel_change_magnitude[m->blepIndex] = velChange;
+
+ m->blepIndex++;
+ if (m->blepIndex >= n) m->blepIndex = 0;
+
+ m->numActiveBleps++;
+}
+
+float tMinBLEP_tick (tMinBLEP* const minblep, float input)
+{
+ _tMinBLEP* m = *minblep;
+ // PROCESS ALL BLEPS -
+ /// for each offset, copy a portion of the blep array to the output ....
+
+ float sample = input;
+
+ int n = m->minBlepSize;
+
+ for (int blep = 1; blep <= m->numActiveBleps; blep++)
+ {
+ int i = (m->blepIndex - blep + n) % n;
+ float adjusted_Freq = m->overSamplingRatio*m->proportionalBlepFreq;//m->freqMultiple[i];
+ float exactPosition = m->offset[i];
+
+ float blepPosExact = adjusted_Freq*(exactPosition + 1); // +1 because this needs to trigger on the LOW SAMPLE
+ float blepPosSample = 0;
+ float fraction = modff(blepPosExact, &blepPosSample);
+
+ // LIMIT the scaling on the derivative array
+ // otherwise, it can get TOO large
+ float depthLimited = m->proportionalBlepFreq; //jlimit<double>(.1, 1, proportionalBlepFreq);
+ float blepDeriv_PosExact = depthLimited*m->overSamplingRatio*(exactPosition + 1);
+ float blepDeriv_Sample = 0;
+ float fraction_Deriv = modff(blepDeriv_PosExact, &blepDeriv_Sample);
+
+
+ // DONE ... we reached the end ...
+ if (((int) blepPosExact > n) && ((int) blepDeriv_PosExact > n))
+ break;
+
+ // BLEP has not yet occurred ...
+ if (blepPosExact < 0)
+ continue;
+
+
+ // 0TH ORDER COMPENSATION ::::
+ /// add the BLEP to compensate for discontinuties in the POSITION
+ if ( fabs(m->pos_change_magnitude[i]) > 0 && blepPosSample < n)
+ {
+ // LINEAR INTERPOLATION ::::
+ float lowValue = m->minBlepArray[(int) blepPosSample];
+ float hiValue = lowValue;
+
+ if ((int) blepPosSample + 1 < n)
+ hiValue = m->minBlepArray[(int) blepPosSample + 1];
+
+ float delta = hiValue - lowValue;
+ float exactValue = lowValue + fraction*delta;
+
+ // SCALE by the discontinuity magnitude
+ exactValue *= m->pos_change_magnitude[i];
+
+ // ADD to the thruput
+ sample += exactValue;
+ }
+
+
+ // 1ST ORDER COMPENSATION ::::
+ /// add the BLEP DERIVATIVE to compensate for discontinuties in the VELOCITY
+ if ( fabs(m->vel_change_magnitude[i]) > 0 && blepDeriv_PosExact < n)
+ {
+
+ // LINEAR INTERPOLATION ::::
+ double lowValue = m->minBlepDerivArray[(int) blepDeriv_PosExact];
+ double hiValue = lowValue;
+
+ if ((int) blepDeriv_PosExact + 1 < n)
+ hiValue = m->minBlepDerivArray[(int) blepDeriv_PosExact + 1];
+
+ double delta = hiValue - lowValue;
+ double exactValue = lowValue + fraction_Deriv*delta;
+
+ // SCALE by the discontinuity magnitude`
+ exactValue *= m->vel_change_magnitude[i];
+
+ // ADD to the thruput
+ sample += exactValue;
+
+ }
+
+ // UPDATE ::::
+ m->offset[i] += 1.0f;
+ if (m->offset[i] * adjusted_Freq > n)
+ {
+ m->numActiveBleps--;
+ }
+ }
+ return sample;
+}
+
+//==============================================================================
+
+/* tMBTriangle: Anti-aliased Triangle waveform. */
+void tMBTriangle_init (tMBTriangle* const osc)
+{
+ tMBTriangle_initToPool(osc, &leaf.mempool);
+}
+
+void tMBTriangle_free (tMBTriangle* const osc)
+{
+ tMBTriangle_freeFromPool(osc, &leaf.mempool);
+}
+
+void tMBTriangle_initToPool (tMBTriangle* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBTriangle* c = *osc = (_tMBTriangle*) mpool_alloc(sizeof(_tMBTriangle), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ c->skew = 0.5f;
+ c->lastOut = 0.0f;
+
+ tMinBLEP_initToPool(&c->minBlep, 16, 32, mp);
+ tHighpass_initToPool(&c->dcBlock, 5.0f, mp);
+}
+
+void tMBTriangle_freeFromPool (tMBTriangle* const cy, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBTriangle* c = *cy;
+
+ tMinBLEP_freeFromPool(&c->minBlep, mp);
+ tHighpass_freeFromPool(&c->dcBlock, mp);
+
+ mpool_free((char*)c, m);
+}
+
+float tMBTriangle_tick (tMBTriangle* const osc)
+{
+ _tMBTriangle* c = *osc;
+
+ float out;
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ float offset = 1.0f - ((c->inc - c->phase) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, -2, 0.0f);
+ }
+ if (c->skew <= c->phase && c->phase < c->skew + c->inc)
+ {
+ float offset = 1.0f - ((c->inc - c->phase + c->skew) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, 2, 0.0f);
+ }
+
+ if (c->phase < c->skew)
+ {
+ out = (1.0f - c->skew) * 2.0f;
+ }
+ else
+ {
+ out = -c->skew * 2.0f;
+ }
+
+ out = tMinBLEP_tick(&c->minBlep, out);// - phasor->inc * 2.0f;
+
+ out = (c->inc * out) + ((1 - c->inc) * c->lastOut);
+ c->lastOut = out;
+
+ return tHighpass_tick(&c->dcBlock, out * 4.0f);
+
+// float offset;
+// float vel = 2;
+// c->phase += c->inc;
+// if (c->phase >= 1.0f)
+// {
+// c->phase -= 1.0f;
+// offset = 1.0f - ((c->inc - c->phase) / c->inc);
+// tMinBLEP_addBLEP(&c->minBlep, offset, 0.0f, -vel);
+// }
+// if (c->skew <= c->phase && c->phase < c->skew + c->inc)
+// {
+// offset = 1.0f - ((c->inc - c->phase + c->skew) / c->inc);
+// tMinBLEP_addBLEP(&c->minBlep, offset, 0.0f, vel);
+// }
+//
+// float out;
+// if (c->phase < c->skew) out = 1.0f - (c->phase / c->skew);
+// else out = (c->phase - c->skew) / (1 - c->skew);
+//
+// out = (out - 0.5f) * 2.0f;
+//
+//// return tHighpass_tick(&c->dcBlock, tMinBLEP_tick(&c->minBlep, out));
+// return tMinBLEP_tick(&c->minBlep, out);
+}
+
+void tMBTriangle_setFreq (tMBTriangle* const osc, float freq)
+{
+ _tMBTriangle* c = *osc;
+
+ c->freq = freq;
+ c->inc = freq * leaf.invSampleRate;
+
+// tHighpass_setFreq(&c->dcBlock, freq*0.5);
+}
+
+void tMBTriangle_setSkew (tMBTriangle* const osc, float skew)
+{
+ _tMBTriangle* c = *osc;
+ c->skew = (skew + 1.0f) * 0.5f;
+}
+
+void tMBTriangle_sync (tMBTriangle* const osc, float phase)
+{
+ _tMBTriangle* c = *osc;
+
+ phase += 0.5f;
+
+ int intPart = (int) phase;
+ phase = phase - (float) intPart;
+
+ float before, after;
+
+ if (c->phase < c->skew) before = (1.0f - c->skew - c->phase) * 2.0f;
+ else before = -(c->skew - c->phase) * 2.0f;
+
+ if (phase < c->skew) after = (1.0f - c->skew - c->phase) * 2.0f;
+ else after = -(c->skew - c->phase) * 2.0f;
+
+ c->phase = phase;
+
+ float offset = 0.0f;//1.0f - ((c->inc - c->phase) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, before - after, 0.0f);
+
+ if (c->phase < c->skew) c->lastOut = 1.0f - (c->phase / c->skew);
+ else c->lastOut = (c->phase - c->skew) / (1.0f - c->skew);
+}
+
+//==============================================================================
+
+/* tMBPulse: Anti-aliased pulse waveform. */
+void tMBPulse_init (tMBPulse* const osc)
+{
+ tMBPulse_initToPool(osc, &leaf.mempool);
+}
+
+void tMBPulse_free (tMBPulse* const osc)
+{
+ tMBPulse_freeFromPool(osc, &leaf.mempool);
+}
+
+void tMBPulse_initToPool (tMBPulse* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBPulse* c = *osc = (_tMBPulse*) mpool_alloc(sizeof(_tMBPulse), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+ c->width = 0.5f;
+
+ tMinBLEP_initToPool(&c->minBlep, 16, 32, mp);
+ tHighpass_initToPool(&c->dcBlock, 10.0f, mp);
+}
+
+void tMBPulse_freeFromPool(tMBPulse* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBPulse* c = *osc;
+
+ tMinBLEP_freeFromPool(&c->minBlep, mp);
+ tHighpass_freeFromPool(&c->dcBlock, mp);
+
+ mpool_free((char*)c, m);
+}
+
+float tMBPulse_tick (tMBPulse* const osc)
+{
+ _tMBPulse* c = *osc;
+
+
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ float offset = 1.0f - ((c->inc - c->phase) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, -2.0f, 0.0f);
+ }
+ if (c->width <= c->phase && c->phase < c->width + c->inc)
+ {
+ float offset = 1.0f - ((c->inc - c->phase + c->width) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, 2.0f, 0.0f);
+ }
+
+ float out;
+ if (c->phase < c->width) out = 1.0f;
+ else out = -1.0f;
+
+ return tHighpass_tick(&c->dcBlock, tMinBLEP_tick(&c->minBlep, out));
+}
+
+void tMBPulse_setFreq (tMBPulse* const osc, float freq)
+{
+ _tMBPulse* c = *osc;
+
+ c->freq = freq;
+ c->inc = freq * leaf.invSampleRate;
+}
+
+void tMBPulse_setWidth (tMBPulse* const osc, float width)
+{
+ _tMBPulse* c = *osc;
+ c->width = width;
+}
+
+void tMBPulse_sync (tMBPulse* const osc, float phase)
+{
+ _tMBPulse* c = *osc;
+ int intPart = (int) phase;
+ phase = phase - (float) intPart;
+
+ float before, after;
+
+ if (c->phase < c->width) before = 1.0f;
+ else before = -1.0f;
+
+ if (phase < c->width) after = 1.0;
+ else after = -1.0f;
+
+ float offset = 0.0f;//1.0f - ((c->inc - c->phase) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, before - after, 0.0f);
+
+ c->phase = phase;
+}
+
+
+//==============================================================================
+
+/* tMBSawtooth: Anti-aliased Sawtooth waveform. */
+void tMBSaw_init (tMBSaw* const osc)
+{
+ tMBSaw_initToPool(osc, &leaf.mempool);
+}
+
+void tMBSaw_free (tMBSaw* const osc)
+{
+ tMBSaw_freeFromPool(osc, &leaf.mempool);
+}
+
+void tMBSaw_initToPool (tMBSaw* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBSaw* c = *osc = (_tMBSaw*) mpool_alloc(sizeof(_tMBSaw), m);
+
+ c->inc = 0.0f;
+ c->phase = 0.0f;
+
+ tMinBLEP_initToPool(&c->minBlep, 16, 32, mp);
+ tHighpass_initToPool(&c->dcBlock, 10.0f, mp);
+}
+
+void tMBSaw_freeFromPool (tMBSaw* const osc, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tMBSaw* c = *osc;
+
+ tMinBLEP_freeFromPool(&c->minBlep, mp);
+ tHighpass_freeFromPool(&c->dcBlock, mp);
+
+ mpool_free((char*)c, m);
+}
+
+float tMBSaw_tick (tMBSaw* const osc)
+{
+ _tMBSaw* c = *osc;
+
+ c->phase += c->inc;
+ if (c->phase >= 1.0f)
+ {
+ c->phase -= 1.0f;
+ float offset = 1.0f - ((c->inc - c->phase) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, 2.0f, 0.0f);
+ }
+
+ float out = (c->phase * 2.0f) - 1.0f;
+
+ return tHighpass_tick(&c->dcBlock, tMinBLEP_tick(&c->minBlep, out));
+}
+
+void tMBSaw_setFreq (tMBSaw* const osc, float freq)
+{
+ _tMBSaw* c = *osc;
+
+ c->freq = freq;
+
+ c->inc = freq * leaf.invSampleRate;
+}
+
+void tMBSaw_sync (tMBSaw* const osc, float phase)
+{
+ _tMBSaw* c = *osc;
+ int intPart = (int) phase;
+ phase = phase - (float) intPart;
+
+ float offset = 0.0f;//1.0f - ((c->inc - phase +) / c->inc);
+ tMinBLEP_addBLEP(&c->minBlep, offset, (c->phase - phase) * 2.0f, 0.0f);
+
+ c->phase = phase;
+}
--- /dev/null
+++ b/leaf/Src/leaf-physical.c
@@ -1,0 +1,747 @@
+/*==============================================================================
+
+ leaf-string.c
+ Created: 30 Nov 2018 10:41:42am
+ Author: airship
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-physical.h"
+
+#else
+
+#include "../Inc/leaf-physical.h"
+
+#endif
+
+/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ tPluck ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
+void tPluck_init (tPluck* const pl, float lowestFrequency)
+{
+ tPluck_initToPool(pl, lowestFrequency, &leaf.mempool);
+}
+
+void tPluck_free (tPluck* const pl)
+{
+ tPluck_freeFromPool(pl, &leaf.mempool);
+}
+
+void tPluck_initToPool (tPluck* const pl, float lowestFrequency, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPluck* p = *pl = (_tPluck*) mpool_alloc(sizeof(_tPluck), m);
+
+ if ( lowestFrequency <= 0.0f ) lowestFrequency = 10.0f;
+
+ tNoise_initToPool(&p->noise, WhiteNoise, mp);
+
+ tOnePole_initToPool(&p->pickFilter, 0.0f, mp);
+
+ tOneZero_initToPool(&p->loopFilter, 0.0f, mp);
+
+ tAllpassDelay_initToPool(&p->delayLine, 0.0f, leaf.sampleRate * 2, mp);
+ tAllpassDelay_clear(&p->delayLine);
+
+ tPluck_setFrequency(pl, 220.0f);
+}
+
+void tPluck_freeFromPool (tPluck* const pl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPluck* p = *pl;
+
+ tNoise_freeFromPool(&p->noise, mp);
+ tOnePole_freeFromPool(&p->pickFilter, mp);
+ tOneZero_freeFromPool(&p->loopFilter, mp);
+ tAllpassDelay_freeFromPool(&p->delayLine, mp);
+
+ mpool_free((char*)p, m);
+}
+
+float tPluck_getLastOut (tPluck* const pl)
+{
+ _tPluck* p = *pl;
+ return p->lastOut;
+}
+
+float tPluck_tick (tPluck* const pl)
+{
+ _tPluck* p = *pl;
+ return (p->lastOut = 3.0f * tAllpassDelay_tick(&p->delayLine, tOneZero_tick(&p->loopFilter, tAllpassDelay_getLastOut(&p->delayLine) * p->loopGain ) ));
+}
+
+void tPluck_pluck (tPluck* const pl, float amplitude)
+{
+ _tPluck* p = *pl;
+
+ if ( amplitude < 0.0f) amplitude = 0.0f;
+ else if (amplitude > 1.0f) amplitude = 1.0f;
+
+ tOnePole_setPole(&p->pickFilter, 0.999f - (amplitude * 0.15f));
+ tOnePole_setGain(&p->pickFilter, amplitude * 0.5f );
+
+ // Fill delay with noise additively with current contents.
+ for ( uint32_t i = 0; i < (uint32_t)tAllpassDelay_getDelay(&p->delayLine); i++ )
+ tAllpassDelay_tick(&p->delayLine, 0.6f * tAllpassDelay_getLastOut(&p->delayLine) + tOnePole_tick(&p->pickFilter, tNoise_tick(&p->noise) ) );
+}
+
+// Start a note with the given frequency and amplitude.;
+void tPluck_noteOn (tPluck* const pl, float frequency, float amplitude )
+{
+ _tPluck* p = *pl;
+ p->lastFreq = frequency;
+ tPluck_setFrequency( pl, frequency );
+ tPluck_pluck( pl, amplitude );
+}
+
+// Stop a note with the given amplitude (speed of decay).
+void tPluck_noteOff (tPluck* const pl, float amplitude )
+{
+ _tPluck* p = *pl;
+
+ if ( amplitude < 0.0f) amplitude = 0.0f;
+ else if (amplitude > 1.0f) amplitude = 1.0f;
+
+ p->loopGain = 1.0f - amplitude;
+}
+
+// Set instrument parameters for a particular frequency.
+void tPluck_setFrequency (tPluck* const pl, float frequency )
+{
+ _tPluck* p = *pl;
+
+ if ( frequency <= 0.0f ) frequency = 0.001f;
+
+ // Delay = length - filter delay.
+ float delay = ( leaf.sampleRate / frequency ) - tOneZero_getPhaseDelay(&p->loopFilter, frequency );
+
+ tAllpassDelay_setDelay(&p->delayLine, delay );
+
+ p->loopGain = 0.99f + (frequency * 0.000005f);
+
+ if ( p->loopGain >= 0.999f ) p->loopGain = 0.999f;
+
+}
+
+// Perform the control change specified by \e number and \e value (0.0 - 128.0).
+void tPluck_controlChange (tPluck* const pl, int number, float value)
+{
+ return;
+}
+
+void tPluckSampleRateChanged(tPluck* const pl)
+{
+ _tPluck* p = *pl;
+ tPluck_setFrequency(pl, p->lastFreq);
+}
+
+/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ tKarplusStrong ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
+void tKarplusStrong_init (tKarplusStrong* const pl, float lowestFrequency)
+{
+ tKarplusStrong_initToPool(pl, lowestFrequency, &leaf.mempool);
+}
+
+void tKarplusStrong_free (tKarplusStrong* const pl)
+{
+ tKarplusStrong_freeFromPool(pl, &leaf.mempool);
+}
+
+void tKarplusStrong_initToPool (tKarplusStrong* const pl, float lowestFrequency, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tKarplusStrong* p = *pl = (_tKarplusStrong*) mpool_alloc(sizeof(_tKarplusStrong), m);
+
+ if ( lowestFrequency <= 0.0f ) lowestFrequency = 8.0f;
+
+ tAllpassDelay_initToPool(&p->delayLine, 0.0f, leaf.sampleRate * 2, mp);
+ tAllpassDelay_clear(&p->delayLine);
+
+ tLinearDelay_initToPool(&p->combDelay, 0.0f, leaf.sampleRate * 2, mp);
+ tLinearDelay_clear(&p->combDelay);
+
+ tOneZero_initToPool(&p->filter, 0.0f, mp);
+
+ tNoise_initToPool(&p->noise, WhiteNoise, mp);
+
+ for (int i = 0; i < 4; i++)
+ {
+ tBiQuad_initToPool(&p->biquad[i], mp);
+ }
+
+ p->pluckAmplitude = 0.3f;
+ p->pickupPosition = 0.4f;
+
+ p->stretching = 0.9999f;
+ p->baseLoopGain = 0.995f;
+ p->loopGain = 0.999f;
+
+ tKarplusStrong_setFrequency( pl, 220.0f );
+}
+
+void tKarplusStrong_freeFromPool (tKarplusStrong* const pl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tKarplusStrong* p = *pl;
+
+ tAllpassDelay_freeFromPool(&p->delayLine, mp);
+ tLinearDelay_freeFromPool(&p->combDelay, mp);
+ tOneZero_freeFromPool(&p->filter, mp);
+ tNoise_freeFromPool(&p->noise, mp);
+
+ for (int i = 0; i < 4; i++)
+ {
+ tBiQuad_freeFromPool(&p->biquad[i], mp);
+ }
+
+ mpool_free((char*)p, m);
+}
+
+float tKarplusStrong_getLastOut (tKarplusStrong* const pl)
+{
+ _tKarplusStrong* p = *pl;
+ return p->lastOut;
+}
+
+float tKarplusStrong_tick (tKarplusStrong* const pl)
+{
+ _tKarplusStrong* p = *pl;
+
+ float temp = tAllpassDelay_getLastOut(&p->delayLine) * p->loopGain;
+
+ // Calculate allpass stretching.
+ for (int i=0; i<4; i++) temp = tBiQuad_tick(&p->biquad[i],temp);
+
+ // Moving average filter.
+ temp = tOneZero_tick(&p->filter, temp);
+
+ float out = tAllpassDelay_tick(&p->delayLine, temp);
+ out = out - tLinearDelay_tick(&p->combDelay, out);
+ p->lastOut = out;
+
+ return p->lastOut;
+}
+
+void tKarplusStrong_pluck (tKarplusStrong* const pl, float amplitude)
+{
+ _tKarplusStrong* p = *pl;
+
+ if ( amplitude < 0.0f) amplitude = 0.0f;
+ else if (amplitude > 1.0f) amplitude = 1.0f;
+
+ p->pluckAmplitude = amplitude;
+
+ for ( uint32_t i=0; i < (uint32_t)tAllpassDelay_getDelay(&p->delayLine); i++ )
+ {
+ // Fill delay with noise additively with current contents.
+ tAllpassDelay_tick(&p->delayLine, (tAllpassDelay_getLastOut(&p->delayLine) * 0.6f) + 0.4f * tNoise_tick(&p->noise) * p->pluckAmplitude );
+ //delayLine_.tick( combDelay_.tick((delayLine_.lastOut() * 0.6) + 0.4 * noise->tick() * pluckAmplitude_) );
+ }
+}
+
+// Start a note with the given frequency and amplitude.;
+void tKarplusStrong_noteOn (tKarplusStrong* const pl, float frequency, float amplitude )
+{
+ tKarplusStrong_setFrequency( pl, frequency );
+ tKarplusStrong_pluck( pl, amplitude );
+}
+
+// Stop a note with the given amplitude (speed of decay).
+void tKarplusStrong_noteOff (tKarplusStrong* const pl, float amplitude )
+{
+ _tKarplusStrong* p = *pl;
+
+ if ( amplitude < 0.0f) amplitude = 0.0f;
+ else if (amplitude > 1.0f) amplitude = 1.0f;
+
+ p->loopGain = 1.0f - amplitude;
+}
+
+// Set instrument parameters for a particular frequency.
+void tKarplusStrong_setFrequency (tKarplusStrong* const pl, float frequency )
+{
+ _tKarplusStrong* p = *pl;
+
+ if ( frequency <= 0.0f ) frequency = 0.001f;
+
+ p->lastFrequency = frequency;
+ p->lastLength = leaf.sampleRate / p->lastFrequency;
+ float delay = p->lastLength - 0.5f;
+ tAllpassDelay_setDelay(&p->delayLine, delay);
+
+ // MAYBE MODIFY LOOP GAINS
+ p->loopGain = p->baseLoopGain + (frequency * 0.000005f);
+ if (p->loopGain >= 1.0f) p->loopGain = 0.99999f;
+
+ tKarplusStrong_setStretch(pl, p->stretching);
+
+ tLinearDelay_setDelay(&p->combDelay, 0.5f * p->pickupPosition * p->lastLength );
+
+}
+
+// Set the stretch "factor" of the string (0.0 - 1.0).
+void tKarplusStrong_setStretch (tKarplusStrong* const pl, float stretch )
+{
+ _tKarplusStrong* p = *pl;
+
+ p->stretching = stretch;
+ float coefficient;
+ float freq = p->lastFrequency * 2.0f;
+ float dFreq = ( (0.5f * leaf.sampleRate) - freq ) * 0.25f;
+ float temp = 0.5f + (stretch * 0.5f);
+ if ( temp > 0.9999f ) temp = 0.9999f;
+
+ for ( int i=0; i<4; i++ )
+ {
+ coefficient = temp * temp;
+ tBiQuad_setA2(&p->biquad[i], coefficient);
+ tBiQuad_setB0(&p->biquad[i], coefficient);
+ tBiQuad_setB2(&p->biquad[i], 1.0f);
+
+ coefficient = -2.0f * temp * cos(TWO_PI * freq / leaf.sampleRate);
+ tBiQuad_setA1(&p->biquad[i], coefficient);
+ tBiQuad_setB1(&p->biquad[i], coefficient);
+
+ freq += dFreq;
+ }
+}
+
+// Set the pluck or "excitation" position along the string (0.0 - 1.0).
+void tKarplusStrong_setPickupPosition (tKarplusStrong* const pl, float position )
+{
+ _tKarplusStrong* p = *pl;
+
+ if (position < 0.0f) p->pickupPosition = 0.0f;
+ else if (position <= 1.0f) p->pickupPosition = position;
+ else p->pickupPosition = 1.0f;
+
+ tLinearDelay_setDelay(&p->combDelay, 0.5f * p->pickupPosition * p->lastLength);
+}
+
+// Set the base loop gain.
+void tKarplusStrong_setBaseLoopGain (tKarplusStrong* const pl, float aGain )
+{
+ _tKarplusStrong* p = *pl;
+
+ p->baseLoopGain = aGain;
+ p->loopGain = p->baseLoopGain + (p->lastFrequency * 0.000005f);
+ if ( p->loopGain > 0.99999f ) p->loopGain = 0.99999f;
+}
+
+// Perform the control change specified by \e number and \e value (0.0 - 128.0).
+void tKarplusStrong_controlChange (tKarplusStrong* const pl, SKControlType type, float value)
+{
+ if ( value < 0.0f ) value = 0.0f;
+ else if (value > 128.0f) value = 128.0f;
+
+ float normalizedValue = value * INV_128;
+
+ if (type == SKPickPosition) // 4
+ tKarplusStrong_setPickupPosition( pl, normalizedValue );
+ else if (type == SKStringDamping) // 11
+ tKarplusStrong_setBaseLoopGain( pl, 0.97f + (normalizedValue * 0.03f) );
+ else if (type == SKDetune) // 1
+ tKarplusStrong_setStretch( pl, 0.91f + (0.09f * (1.0f - normalizedValue)) );
+}
+
+void tKarplusStrongSampleRateChanged (tKarplusStrong* const pl)
+{
+ _tKarplusStrong* p = *pl;
+
+ tKarplusStrong_setFrequency(pl, p->lastFrequency);
+ tKarplusStrong_setStretch(pl, p->stretching);
+}
+
+/* Simple Living String*/
+
+void tSimpleLivingString_init(tSimpleLivingString* const pl, float freq, float dampFreq,
+ float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode)
+{
+ tSimpleLivingString_initToPool(pl, freq, dampFreq, decay, targetLev, levSmoothFactor, levStrength, levMode, &leaf.mempool);
+}
+
+void tSimpleLivingString_free(tSimpleLivingString* const pl)
+{
+ tSimpleLivingString_freeFromPool(pl, &leaf.mempool);
+}
+
+void tSimpleLivingString_initToPool (tSimpleLivingString* const pl, float freq, float dampFreq,
+ float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSimpleLivingString* p = *pl = (_tSimpleLivingString*) mpool_alloc(sizeof(_tSimpleLivingString), m);
+
+ p->curr=0.0f;
+ tExpSmooth_initToPool(&p->wlSmooth, leaf.sampleRate/freq, 0.01, mp); // smoother for string wavelength (not freq, to avoid expensive divisions)
+ tSimpleLivingString_setFreq(pl, freq);
+ tLinearDelay_initToPool(&p->delayLine,p->waveLengthInSamples, 2400, mp);
+ tLinearDelay_clear(&p->delayLine);
+ tOnePole_initToPool(&p->bridgeFilter, dampFreq, mp);
+ tHighpass_initToPool(&p->DCblocker,13, mp);
+ p->decay=decay;
+ tFeedbackLeveler_initToPool(&p->fbLev, targetLev, levSmoothFactor, levStrength, levMode, mp);
+ p->levMode=levMode;
+}
+
+void tSimpleLivingString_freeFromPool (tSimpleLivingString* const pl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSimpleLivingString* p = *pl;
+
+ tExpSmooth_freeFromPool(&p->wlSmooth, mp);
+ tLinearDelay_freeFromPool(&p->delayLine, mp);
+ tOnePole_freeFromPool(&p->bridgeFilter, mp);
+ tHighpass_freeFromPool(&p->DCblocker, mp);
+ tFeedbackLeveler_freeFromPool(&p->fbLev, mp);
+
+ mpool_free((char*)p, m);
+}
+
+void tSimpleLivingString_setFreq(tSimpleLivingString* const pl, float freq)
+{
+ _tSimpleLivingString* p = *pl;
+
+ if (freq<20) freq=20;
+ else if (freq>10000) freq=10000;
+ p->waveLengthInSamples = leaf.sampleRate/freq;
+ tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
+}
+
+void tSimpleLivingString_setWaveLength(tSimpleLivingString* const pl, float waveLength)
+{
+ _tSimpleLivingString* p = *pl;
+
+ if (waveLength<4.8) waveLength=4.8;
+ else if (waveLength>2400) waveLength=2400;
+ p->waveLengthInSamples = waveLength;
+ tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
+}
+
+void tSimpleLivingString_setDampFreq(tSimpleLivingString* const pl, float dampFreq)
+{
+ _tSimpleLivingString* p = *pl;
+ tOnePole_setFreq(&p->bridgeFilter, dampFreq);
+}
+
+void tSimpleLivingString_setDecay(tSimpleLivingString* const pl, float decay)
+{
+ _tSimpleLivingString* p = *pl;
+ p->decay=decay;
+}
+
+void tSimpleLivingString_setTargetLev(tSimpleLivingString* const pl, float targetLev)
+{
+ _tSimpleLivingString* p = *pl;
+ tFeedbackLeveler_setTargetLevel(&p->fbLev, targetLev);
+}
+
+void tSimpleLivingString_setLevSmoothFactor(tSimpleLivingString* const pl, float levSmoothFactor)
+{
+ _tSimpleLivingString* p = *pl;
+ tFeedbackLeveler_setFactor(&p->fbLev, levSmoothFactor);
+}
+
+void tSimpleLivingString_setLevStrength(tSimpleLivingString* const pl, float levStrength)
+{
+ _tSimpleLivingString* p = *pl;
+ tFeedbackLeveler_setStrength(&p->fbLev, levStrength);
+}
+
+void tSimpleLivingString_setLevMode(tSimpleLivingString* const pl, int levMode)
+{
+ _tSimpleLivingString* p = *pl;
+ tFeedbackLeveler_setMode(&p->fbLev, levMode);
+ p->levMode=levMode;
+}
+
+float tSimpleLivingString_tick(tSimpleLivingString* const pl, float input)
+{
+ _tSimpleLivingString* p = *pl;
+
+ float stringOut=tOnePole_tick(&p->bridgeFilter,tLinearDelay_tickOut(&p->delayLine));
+ float stringInput=tHighpass_tick(&p->DCblocker, tFeedbackLeveler_tick(&p->fbLev, (p->levMode==0?p->decay*stringOut:stringOut)+input));
+ tLinearDelay_tickIn(&p->delayLine, stringInput);
+ tLinearDelay_setDelay(&p->delayLine, tExpSmooth_tick(&p->wlSmooth));
+ p->curr = stringOut;
+ return p->curr;
+}
+
+float tSimpleLivingString_sample(tSimpleLivingString* const pl)
+{
+ _tSimpleLivingString* p = *pl;
+ return p->curr;
+}
+
+/* Living String*/
+
+void tLivingString_init(tLivingString* const pl, float freq, float pickPos, float prepIndex,
+ float dampFreq, float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode)
+{
+ tLivingString_initToPool(pl, freq, pickPos, prepIndex, dampFreq, decay, targetLev, levSmoothFactor, levStrength, levMode, &leaf.mempool);
+}
+
+void tLivingString_free(tLivingString* const pl)
+{
+ tLivingString_freeFromPool(pl, &leaf.mempool);
+}
+
+void tLivingString_initToPool (tLivingString* const pl, float freq, float pickPos, float prepIndex,
+ float dampFreq, float decay, float targetLev, float levSmoothFactor,
+ float levStrength, int levMode, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLivingString* p = *pl = (_tLivingString*) mpool_alloc(sizeof(_tLivingString), m);
+
+ p->curr=0.0f;
+ tExpSmooth_initToPool(&p->wlSmooth, leaf.sampleRate/freq, 0.01, mp); // smoother for string wavelength (not freq, to avoid expensive divisions)
+ tLivingString_setFreq(pl, freq);
+ p->freq = freq;
+ tExpSmooth_initToPool(&p->ppSmooth, pickPos, 0.01, mp); // smoother for pick position
+ tLivingString_setPickPos(pl, pickPos);
+ p->prepIndex=prepIndex;
+ tLinearDelay_initToPool(&p->delLF,p->waveLengthInSamples, 2400, mp);
+ tLinearDelay_initToPool(&p->delUF,p->waveLengthInSamples, 2400, mp);
+ tLinearDelay_initToPool(&p->delUB,p->waveLengthInSamples, 2400, mp);
+ tLinearDelay_initToPool(&p->delLB,p->waveLengthInSamples, 2400, mp);
+ tLinearDelay_clear(&p->delLF);
+ tLinearDelay_clear(&p->delUF);
+ tLinearDelay_clear(&p->delUB);
+ tLinearDelay_clear(&p->delLB);
+ p->dampFreq = dampFreq;
+ tOnePole_initToPool(&p->bridgeFilter, dampFreq, mp);
+ tOnePole_initToPool(&p->nutFilter, dampFreq, mp);
+ tOnePole_initToPool(&p->prepFilterU, dampFreq, mp);
+ tOnePole_initToPool(&p->prepFilterL, dampFreq, mp);
+ tHighpass_initToPool(&p->DCblockerU,13, mp);
+ tHighpass_initToPool(&p->DCblockerL,13, mp);
+ p->decay=decay;
+ p->prepIndex = prepIndex;
+ tFeedbackLeveler_initToPool(&p->fbLevU, targetLev, levSmoothFactor, levStrength, levMode, mp);
+ tFeedbackLeveler_initToPool(&p->fbLevL, targetLev, levSmoothFactor, levStrength, levMode, mp);
+ p->levMode=levMode;
+}
+
+void tLivingString_freeFromPool (tLivingString* const pl, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tLivingString* p = *pl;
+
+ tExpSmooth_freeFromPool(&p->wlSmooth, mp);
+ tExpSmooth_freeFromPool(&p->ppSmooth, mp);
+ tLinearDelay_freeFromPool(&p->delLF, mp);
+ tLinearDelay_freeFromPool(&p->delUF, mp);
+ tLinearDelay_freeFromPool(&p->delUB, mp);
+ tLinearDelay_freeFromPool(&p->delLB, mp);
+ tOnePole_freeFromPool(&p->bridgeFilter, mp);
+ tOnePole_freeFromPool(&p->nutFilter, mp);
+ tOnePole_freeFromPool(&p->prepFilterU, mp);
+ tOnePole_freeFromPool(&p->prepFilterL, mp);
+ tHighpass_freeFromPool(&p->DCblockerU, mp);
+ tHighpass_freeFromPool(&p->DCblockerL, mp);
+ tFeedbackLeveler_freeFromPool(&p->fbLevU, mp);
+ tFeedbackLeveler_freeFromPool(&p->fbLevL, mp);
+
+ mpool_free((char*)p, m);
+}
+
+void tLivingString_setFreq(tLivingString* const pl, float freq)
+{ // NOTE: It is faster to set wavelength in samples directly
+ _tLivingString* p = *pl;
+ if (freq<20) freq=20;
+ else if (freq>10000) freq=10000;
+ p->waveLengthInSamples = leaf.sampleRate/freq;
+ tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
+}
+
+void tLivingString_setWaveLength(tLivingString* const pl, float waveLength)
+{
+ _tLivingString* p = *pl;
+ if (waveLength<4.8) waveLength=4.8;
+ else if (waveLength>2400) waveLength=2400;
+ p->waveLengthInSamples = waveLength;
+ tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
+}
+
+void tLivingString_setPickPos(tLivingString* const pl, float pickPos)
+{ // between 0 and 1
+ _tLivingString* p = *pl;
+ if (pickPos<0.f) pickPos=0.f;
+ else if (pickPos>1.f) pickPos=1.f;
+ p->pickPos = pickPos;
+ tExpSmooth_setDest(&p->ppSmooth, p->pickPos);
+}
+
+void tLivingString_setPrepIndex(tLivingString* const pl, float prepIndex)
+{ // between 0 and 1
+ _tLivingString* p = *pl;
+ if (prepIndex<0.f) prepIndex=0.f;
+ else if (prepIndex>1.f) prepIndex=1.f;
+ p->prepIndex = prepIndex;
+}
+
+void tLivingString_setDampFreq(tLivingString* const pl, float dampFreq)
+{
+ _tLivingString* p = *pl;
+ tOnePole_setFreq(&p->bridgeFilter, dampFreq);
+ tOnePole_setFreq(&p->nutFilter, dampFreq);
+ tOnePole_setFreq(&p->prepFilterU, dampFreq);
+ tOnePole_setFreq(&p->prepFilterL, dampFreq);
+}
+
+void tLivingString_setDecay(tLivingString* const pl, float decay)
+{
+ _tLivingString* p = *pl;
+ p->decay=decay;
+}
+
+void tLivingString_setTargetLev(tLivingString* const pl, float targetLev)
+{
+ _tLivingString* p = *pl;
+ tFeedbackLeveler_setTargetLevel(&p->fbLevU, targetLev);
+ tFeedbackLeveler_setTargetLevel(&p->fbLevL, targetLev);
+}
+
+void tLivingString_setLevSmoothFactor(tLivingString* const pl, float levSmoothFactor)
+{
+ _tLivingString* p = *pl;
+ tFeedbackLeveler_setFactor(&p->fbLevU, levSmoothFactor);
+ tFeedbackLeveler_setFactor(&p->fbLevL, levSmoothFactor);
+}
+
+void tLivingString_setLevStrength(tLivingString* const pl, float levStrength)
+{
+ _tLivingString* p = *pl;
+ tFeedbackLeveler_setStrength(&p->fbLevU, levStrength);
+ tFeedbackLeveler_setStrength(&p->fbLevL, levStrength);
+}
+
+void tLivingString_setLevMode(tLivingString* const pl, int levMode)
+{
+ _tLivingString* p = *pl;
+ tFeedbackLeveler_setMode(&p->fbLevU, levMode);
+ tFeedbackLeveler_setMode(&p->fbLevL, levMode);
+ p->levMode=levMode;
+}
+
+float tLivingString_tick(tLivingString* const pl, float input)
+{
+ _tLivingString* p = *pl;
+
+ // from pickPos upwards=forwards
+ float fromLF=tLinearDelay_tickOut(&p->delLF);
+ float fromUF=tLinearDelay_tickOut(&p->delUF);
+ float fromUB=tLinearDelay_tickOut(&p->delUB);
+ float fromLB=tLinearDelay_tickOut(&p->delLB);
+ // into upper half of string, from nut, going backwards
+ float fromNut=-tFeedbackLeveler_tick(&p->fbLevU, (p->levMode==0?p->decay:1)*tHighpass_tick(&p->DCblockerU, tOnePole_tick(&p->nutFilter, fromUF)));
+ tLinearDelay_tickIn(&p->delUB, fromNut);
+ // into lower half of string, from pickpoint, going backwards
+ float fromLowerPrep=-tOnePole_tick(&p->prepFilterL, fromLF);
+ float intoLower=p->prepIndex*fromLowerPrep+(1.0f - p->prepIndex)*fromUB+input;
+ tLinearDelay_tickIn(&p->delLB, intoLower);
+ // into lower half of string, from bridge
+ float fromBridge=-tFeedbackLeveler_tick(&p->fbLevL, (p->levMode==0?p->decay:1.0f)*tHighpass_tick(&p->DCblockerL, tOnePole_tick(&p->bridgeFilter, fromLB)));
+ tLinearDelay_tickIn(&p->delLF, fromBridge);
+ // into upper half of string, from pickpoint, going forwards/upwards
+ float fromUpperPrep=-tOnePole_tick(&p->prepFilterU, fromUB);
+ float intoUpper=p->prepIndex*fromUpperPrep+(1.0f - p->prepIndex)*fromLF+input;
+ tLinearDelay_tickIn(&p->delUF, intoUpper);
+ // update all delay lengths
+ float pickP=tExpSmooth_tick(&p->ppSmooth);
+ float wLen=tExpSmooth_tick(&p->wlSmooth);
+ float lowLen=pickP*wLen;
+ float upLen=(1.0f-pickP)*wLen;
+ tLinearDelay_setDelay(&p->delLF, lowLen);
+ tLinearDelay_setDelay(&p->delLB, lowLen);
+ tLinearDelay_setDelay(&p->delUF, upLen);
+ tLinearDelay_setDelay(&p->delUB, upLen);
+ p->curr = fromBridge;
+ return p->curr;
+}
+
+float tLivingString_sample(tLivingString* const pl)
+{
+ _tLivingString* p = *pl;
+ return p->curr;
+}
+
+///Reed Table model
+//default values from STK are 0.6 offset and -0.8 slope
+
+void tReedTable_init (tReedTable* const pm, float offset, float slope)
+{
+ _tReedTable* p = *pm = (_tReedTable*) leaf_alloc(sizeof(_tReedTable));
+
+ p->offset = offset;
+ p->slope = slope;
+}
+
+void tReedTable_free (tReedTable* const pm)
+{
+ _tReedTable* p = *pm;
+
+ leaf_free((char*)p);
+}
+
+void tReedTable_initToPool (tReedTable* const pm, float offset, float slope, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tReedTable* p = *pm = (_tReedTable*) mpool_alloc(sizeof(_tReedTable), m);
+
+ p->offset = offset;
+ p->slope = slope;
+}
+
+void tReedTable_freeFromPool (tReedTable* const pm, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tReedTable* p = *pm;
+
+ mpool_free((char*)p, m);
+}
+
+float tReedTable_tick (tReedTable* const pm, float input)
+{
+ _tReedTable* p = *pm;
+
+ // The input is differential pressure across the reed.
+ float output = p->offset + (p->slope * input);
+
+ // If output is > 1, the reed has slammed shut and the
+ // reflection function value saturates at 1.0.
+ if ( output > 1.0f) output = 1.0f;
+
+ // This is nearly impossible in a physical system, but
+ // a reflection function value of -1.0 corresponds to
+ // an open end (and no discontinuity in bore profile).
+ if ( output < -1.0f) output = -1.0f;
+
+ return output;
+}
+
+float tReedTable_tanh_tick (tReedTable* const pm, float input)
+{
+ _tReedTable* p = *pm;
+
+ // The input is differential pressure across the reed.
+ float output = p->offset + (p->slope * input);
+
+ // If output is > 1, the reed has slammed shut and the
+ // reflection function value saturates at 1.0.
+ return tanhf(output);
+}
+
+void tReedTable_setOffset (tReedTable* const pm, float offset)
+{
+ _tReedTable* p = *pm;
+ p->offset = offset;
+}
+
+void tReedTable_setSlope (tReedTable* const pm, float slope)
+{
+ _tReedTable* p = *pm;
+ p->slope = slope;
+}
--- /dev/null
+++ b/leaf/Src/leaf-reverb.c
@@ -1,0 +1,925 @@
+/*==============================================================================
+
+ leaf-reverb.c
+ Created: 20 Jan 2017 12:02:04pm
+ Author: Michael R Mulshine
+
+==============================================================================*/
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-reverb.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-reverb.h"
+#include "../leaf.h"
+
+#endif
+
+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ PRCReverb ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
+void tPRCReverb_init(tPRCReverb* const rev, float t60)
+{
+ _tPRCReverb* r = *rev = (_tPRCReverb*) leaf_alloc(sizeof(_tPRCReverb));
+
+ if (t60 <= 0.0f) t60 = 0.001f;
+
+ r->inv_441 = 1.0f/44100.0f;
+
+ int lengths[4] = { 341, 613, 1557, 2137 }; // Delay lengths for 44100 Hz sample rate.
+ double scaler = leaf.sampleRate * r->inv_441;
+
+ int delay, i;
+ if (scaler != 1.0f)
+ {
+ for (i=0; i<4; i++)
+ {
+ delay = (int) scaler * lengths[i];
+
+ if ( (delay & 1) == 0) delay++;
+
+ while ( !LEAF_isPrime(delay) ) delay += 2;
+
+ lengths[i] = delay;
+ }
+ }
+
+ tDelay_init(&r->allpassDelays[0], lengths[0], lengths[0] * 2);
+ tDelay_init(&r->allpassDelays[1], lengths[1], lengths[1] * 2);
+ tDelay_init(&r->combDelay, lengths[2], lengths[2] * 2);
+
+ tPRCReverb_setT60(rev, t60);
+
+ r->allpassCoeff = 0.7f;
+ r->mix = 0.5f;
+}
+
+void tPRCReverb_free(tPRCReverb* const rev)
+{
+ _tPRCReverb* r = *rev;
+
+ tDelay_free(&r->allpassDelays[0]);
+ tDelay_free(&r->allpassDelays[1]);
+ tDelay_free(&r->combDelay);
+ leaf_free((char*)r);
+}
+
+void tPRCReverb_initToPool (tPRCReverb* const rev, float t60, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPRCReverb* r = *rev = (_tPRCReverb*) mpool_alloc(sizeof(_tPRCReverb), m);
+
+ if (t60 <= 0.0f) t60 = 0.001f;
+
+ r->inv_441 = 1.0f/44100.0f;
+
+ int lengths[4] = { 341, 613, 1557, 2137 }; // Delay lengths for 44100 Hz sample rate.
+ double scaler = leaf.sampleRate * r->inv_441;
+
+ int delay, i;
+ if (scaler != 1.0f)
+ {
+ for (i=0; i<4; i++)
+ {
+ delay = (int) scaler * lengths[i];
+
+ if ( (delay & 1) == 0) delay++;
+
+ while ( !LEAF_isPrime(delay) ) delay += 2;
+
+ lengths[i] = delay;
+ }
+ }
+
+ tDelay_initToPool(&r->allpassDelays[0], lengths[0], lengths[0] * 2, mp);
+ tDelay_initToPool(&r->allpassDelays[1], lengths[1], lengths[1] * 2, mp);
+ tDelay_initToPool(&r->combDelay, lengths[2], lengths[2] * 2, mp);
+
+ tPRCReverb_setT60(rev, t60);
+
+ r->allpassCoeff = 0.7f;
+ r->mix = 0.5f;
+}
+
+void tPRCReverb_freeFromPool (tPRCReverb* const rev, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tPRCReverb* r = *rev;
+
+ tDelay_freeFromPool(&r->allpassDelays[0], mp);
+ tDelay_freeFromPool(&r->allpassDelays[1], mp);
+ tDelay_freeFromPool(&r->combDelay, mp);
+ mpool_free((char*)r, m);
+}
+
+void tPRCRevert_clear(tPRCReverb* const rev)
+{
+ _tPRCReverb* r = *rev;
+
+ tDelay_clear(&r->allpassDelays[0]);
+ tDelay_clear(&r->allpassDelays[1]);
+ tDelay_clear(&r->combDelay);
+}
+
+void tPRCReverb_setT60(tPRCReverb* const rev, float t60)
+{
+ _tPRCReverb* r = *rev;
+
+ if ( t60 <= 0.0f ) t60 = 0.001f;
+
+ r->t60 = t60;
+
+ r->combCoeff = pow(10.0f, (-3.0f * tDelay_getDelay(&r->combDelay) * leaf.invSampleRate / t60 ));
+
+}
+
+void tPRCReverb_setMix(tPRCReverb* const rev, float mix)
+{
+ _tPRCReverb* r = *rev;
+ r->mix = mix;
+}
+
+float tPRCReverb_tick(tPRCReverb* const rev, float input)
+{
+ _tPRCReverb* r = *rev;
+
+ float temp, temp0, temp1, temp2;
+ float out;
+
+ r->lastIn = input;
+
+ temp = tDelay_getLastOut(&r->allpassDelays[0]);
+ temp0 = r->allpassCoeff * temp;
+ temp0 += input;
+ tDelay_tick(&r->allpassDelays[0], temp0);
+ temp0 = -( r->allpassCoeff * temp0) + temp;
+
+ temp = tDelay_getLastOut(&r->allpassDelays[1]);
+ temp1 = r->allpassCoeff * temp;
+ temp1 += temp0;
+ tDelay_tick(&r->allpassDelays[1], temp1);
+ temp1 = -(r->allpassCoeff * temp1) + temp;
+
+ temp2 = temp1 + ( r->combCoeff * tDelay_getLastOut(&r->combDelay));
+
+ out = r->mix * tDelay_tick(&r->combDelay, temp2);
+
+ temp = (1.0f - r->mix) * input;
+
+ out += temp;
+
+ r->lastOut = out;
+
+ return out;
+}
+
+void tPRCReverbSampleRateChanged (tPRCReverb* const rev)
+{
+ _tPRCReverb* r = *rev;
+ r->combCoeff = pow(10.0f, (-3.0f * tDelay_getDelay(&r->combDelay) * leaf.invSampleRate / r->t60 ));
+}
+
+/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NReverb ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
+void tNReverb_init(tNReverb* const rev, float t60)
+{
+ _tNReverb* r = *rev = (_tNReverb*) leaf_alloc(sizeof(_tNReverb));
+
+ if (t60 <= 0.0f) t60 = 0.001f;
+
+ r->inv_441 = 1.0f/44100.0f;
+
+ int lengths[15] = {1433, 1601, 1867, 2053, 2251, 2399, 347, 113, 37, 59, 53, 43, 37, 29, 19}; // Delay lengths for 44100 Hz sample rate.
+ double scaler = leaf.sampleRate / 25641.0f;
+
+ int delay, i;
+
+ for (i=0; i < 15; i++)
+ {
+ delay = (int) scaler * lengths[i];
+ if ( (delay & 1) == 0)
+ delay++;
+ while ( !LEAF_isPrime(delay) )
+ delay += 2;
+ lengths[i] = delay;
+ }
+
+ for ( i=0; i<6; i++ )
+ {
+ tLinearDelay_init(&r->combDelays[i], lengths[i], lengths[i] * 2.0f);
+ tLinearDelay_clear(&r->combDelays[i]);
+ r->combCoeffs[i] = pow(10.0, (-3 * lengths[i] * leaf.invSampleRate / t60));
+ }
+
+ for ( i=0; i<8; i++ )
+ {
+ tLinearDelay_init(&r->allpassDelays[i], lengths[i+6], lengths[i+6] * 2.0f);
+ tLinearDelay_clear(&r->allpassDelays[i]);
+ }
+
+
+ tNReverb_setT60(rev, t60);
+ r->allpassCoeff = 0.7f;
+ r->mix = 0.3f;
+}
+
+void tNReverb_free(tNReverb* const rev)
+{
+ _tNReverb* r = *rev;
+
+ for (int i = 0; i < 6; i++)
+ {
+ tLinearDelay_free(&r->combDelays[i]);
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ tLinearDelay_free(&r->allpassDelays[i]);
+ }
+
+ leaf_free((char*)r);
+}
+
+void tNReverb_initToPool (tNReverb* const rev, float t60, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNReverb* r = *rev = (_tNReverb*) mpool_alloc(sizeof(_tNReverb), m);
+
+ if (t60 <= 0.0f) t60 = 0.001f;
+
+ r->inv_441 = 1.0f/44100.0f;
+
+ int lengths[15] = {1433, 1601, 1867, 2053, 2251, 2399, 347, 113, 37, 59, 53, 43, 37, 29, 19}; // Delay lengths for 44100 Hz sample rate.
+ double scaler = leaf.sampleRate / 25641.0f;
+
+ int delay, i;
+
+ for (i=0; i < 15; i++)
+ {
+ delay = (int) scaler * lengths[i];
+ if ( (delay & 1) == 0)
+ delay++;
+ while ( !LEAF_isPrime(delay) )
+ delay += 2;
+ lengths[i] = delay;
+ }
+
+ for ( i=0; i<6; i++ )
+ {
+ tLinearDelay_initToPool(&r->combDelays[i], lengths[i], lengths[i] * 2.0f, mp);
+ r->combCoeffs[i] = pow(10.0, (-3 * lengths[i] * leaf.invSampleRate / t60));
+ }
+
+ for ( i=0; i<8; i++ )
+ {
+ tLinearDelay_initToPool(&r->allpassDelays[i], lengths[i+6], lengths[i+6] * 2.0f, mp);
+ }
+
+
+ tNReverb_setT60(rev, t60);
+ r->allpassCoeff = 0.7f;
+ r->mix = 0.3f;
+}
+
+void tNReverb_freeFromPool (tNReverb* const rev, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tNReverb* r = *rev;
+
+ for (int i = 0; i < 6; i++)
+ {
+ tLinearDelay_freeFromPool(&r->combDelays[i], mp);
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ tLinearDelay_freeFromPool(&r->allpassDelays[i], mp);
+ }
+
+ mpool_free((char*)r, m);
+}
+
+void tNReverb_setT60(tNReverb* const rev, float t60)
+{
+ _tNReverb* r = *rev;
+
+ if (t60 <= 0.0f) t60 = 0.001f;
+
+ r->t60 = t60;
+
+ for (int i=0; i<6; i++) r->combCoeffs[i] = pow(10.0, (-3.0 * tLinearDelay_getDelay(&r->combDelays[i]) * leaf.invSampleRate / t60 ));
+
+}
+
+void tNReverb_setMix(tNReverb* const rev, float mix)
+{
+ _tNReverb* r = *rev;
+ r->mix = mix;
+}
+
+void tNReverb_clear (tNReverb* const rev)
+{
+ _tNReverb* r = *rev;
+
+ for (int i = 0; i < 6; i++)
+ {
+ tLinearDelay_clear(&r->combDelays[i]);
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ tLinearDelay_clear(&r->allpassDelays[i]);
+ }
+}
+
+float tNReverb_tick(tNReverb* const rev, float input)
+{
+ _tNReverb* r = *rev;
+ r->lastIn = input;
+
+ float temp, temp0, temp1, temp2, out;
+ int i;
+
+ temp0 = 0.0;
+ for ( i=0; i<6; i++ )
+ {
+ temp = input + (r->combCoeffs[i] * tLinearDelay_getLastOut(&r->combDelays[i]));
+ temp0 += tLinearDelay_tick(&r->combDelays[i],temp);
+ }
+
+ for ( i=0; i<3; i++ )
+ {
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[i]);
+ temp1 = r->allpassCoeff * temp;
+ temp1 += temp0;
+ tLinearDelay_tick(&r->allpassDelays[i], temp1);
+ temp0 = -(r->allpassCoeff * temp1) + temp;
+ }
+
+ // One-pole lowpass filter.
+ r->lowpassState = 0.7f * r->lowpassState + 0.3f * temp0;
+
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[3]);
+ temp1 = r->allpassCoeff * temp;
+ temp1 += r->lowpassState;
+ tLinearDelay_tick(&r->allpassDelays[3], temp1 );
+ temp1 = -(r->allpassCoeff * temp1) + temp;
+
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[4]);
+ temp2 = r->allpassCoeff * temp;
+ temp2 += temp1;
+ tLinearDelay_tick(&r->allpassDelays[4], temp2 );
+ out = -( r->allpassCoeff * temp2 ) + temp ;
+
+ //the other channel in stereo version below
+/*
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[5]);
+ temp3 = r->allpassCoeff * temp;
+ temp3 += temp1;
+ tLinearDelay_tick(&r->allpassDelays[5], temp3 );
+ out = r->mix *( - ( r->allpassCoeff * temp3 ) + temp );
+*/
+
+ temp = ( 1.0f - r->mix ) * input;
+
+ out += temp;
+
+ r->lastOut = out;
+
+ return out;
+}
+
+void tNReverb_tickStereo(tNReverb* const rev, float input, float* output)
+{
+ _tNReverb* r = *rev;
+ r->lastIn = input;
+
+ float temp, temp0, temp1, temp2, temp3, out;
+ int i;
+
+ temp0 = 0.0;
+ for ( i=0; i<6; i++ )
+ {
+ temp = input + (r->combCoeffs[i] * tLinearDelay_getLastOut(&r->combDelays[i]));
+ temp0 += tLinearDelay_tick(&r->combDelays[i],temp);
+ }
+
+ for ( i=0; i<3; i++ )
+ {
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[i]);
+ temp1 = r->allpassCoeff * temp;
+ temp1 += temp0;
+ tLinearDelay_tick(&r->allpassDelays[i], temp1);
+ temp0 = -(r->allpassCoeff * temp1) + temp;
+ }
+
+ // One-pole lowpass filter.
+ r->lowpassState = 0.7f * r->lowpassState + 0.3f * temp0;
+
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[3]);
+ temp1 = r->allpassCoeff * temp;
+ temp1 += r->lowpassState;
+ tLinearDelay_tick(&r->allpassDelays[3], temp1 );
+ temp1 = -(r->allpassCoeff * temp1) + temp;
+
+ float drymix = ( 1.0f - r->mix ) * input;
+
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[4]);
+ temp2 = r->allpassCoeff * temp;
+ temp2 += temp1;
+ tLinearDelay_tick(&r->allpassDelays[4], temp2 );
+ output[0] = -( r->allpassCoeff * temp2 ) + temp + drymix;
+ out = output[0];
+
+
+ temp = tLinearDelay_getLastOut(&r->allpassDelays[5]);
+ temp3 = r->allpassCoeff * temp;
+ temp3 += temp1;
+ tLinearDelay_tick(&r->allpassDelays[5], temp3 );
+ output[1] = r->mix *( - ( r->allpassCoeff * temp3 ) + temp + drymix);
+
+ r->lastOut = out;
+}
+
+void tNReverbSampleRateChanged (tNReverb* const rev)
+{
+ _tNReverb* r = *rev;
+ for (int i=0; i<6; i++) r->combCoeffs[i] = pow(10.0, (-3.0 * tLinearDelay_getDelay(&r->combDelays[i]) * leaf.invSampleRate / r->t60 ));
+}
+
+// ======================================DATTORRO=========================================
+
+#define SAMP(in) (in*r->t)
+
+float in_allpass_delays[4] = { 4.771f, 3.595f, 12.73f, 9.307f };
+float in_allpass_gains[4] = { 0.75f, 0.75f, 0.625f, 0.625f };
+
+
+void tDattorroReverb_init (tDattorroReverb* const rev)
+{
+ tDattorroReverb_initToPool(rev, &leaf.mempool);
+}
+
+void tDattorroReverb_free (tDattorroReverb* const rev)
+{
+ tDattorroReverb_freeFromPool(rev, &leaf.mempool);
+}
+
+void tDattorroReverb_initToPool (tDattorroReverb* const rev, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tDattorroReverb* r = *rev = (_tDattorroReverb*) mpool_alloc(sizeof(_tDattorroReverb), m);
+
+ r->size_max = 2.0f;
+ r->size = 1.f;
+ r->t = r->size * leaf.sampleRate * 0.001f;
+ r->frozen = 0;
+ // INPUT
+ tTapeDelay_initToPool(&r->in_delay, 0.f, SAMP(200.f), mp);
+ tOnePole_initToPool(&r->in_filter, 1.f, mp);
+
+ for (int i = 0; i < 4; i++)
+ {
+ tAllpass_initToPool(&r->in_allpass[i], SAMP(in_allpass_delays[i]), SAMP(20.f), mp); // * r->size_max
+ tAllpass_setGain(&r->in_allpass[i], in_allpass_gains[i]);
+ }
+
+ // FEEDBACK 1
+ tAllpass_initToPool(&r->f1_allpass, SAMP(30.51f), SAMP(100.f), mp); // * r->size_max
+ tAllpass_setGain(&r->f1_allpass, 0.7f);
+
+ tTapeDelay_initToPool(&r->f1_delay_1, SAMP(141.69f), SAMP(200.0f) * r->size_max + 1, mp);
+ tTapeDelay_initToPool(&r->f1_delay_2, SAMP(89.24f), SAMP(100.0f) * r->size_max + 1, mp);
+ tTapeDelay_initToPool(&r->f1_delay_3, SAMP(125.f), SAMP(200.0f) * r->size_max + 1, mp);
+
+ tOnePole_initToPool(&r->f1_filter, 1.f, mp);
+
+ tHighpass_initToPool(&r->f1_hp, 20.f, mp);
+
+ tCycle_initToPool(&r->f1_lfo, mp);
+ tCycle_setFreq(&r->f1_lfo, 0.1f);
+
+ // FEEDBACK 2
+ tAllpass_initToPool(&r->f2_allpass, SAMP(22.58f), SAMP(100.f), mp); // * r->size_max
+ tAllpass_setGain(&r->f2_allpass, 0.7f);
+
+ tTapeDelay_initToPool(&r->f2_delay_1, SAMP(149.62f), SAMP(200.f) * r->size_max + 1, mp);
+ tTapeDelay_initToPool(&r->f2_delay_2, SAMP(60.48f), SAMP(100.f) * r->size_max + 1, mp);
+ tTapeDelay_initToPool(&r->f2_delay_3, SAMP(106.28f), SAMP(200.f) * r->size_max + 1, mp);
+
+ tOnePole_initToPool(&r->f2_filter, 1.f, mp);
+
+ tHighpass_initToPool(&r->f2_hp, 20.f, mp);
+
+ tCycle_initToPool(&r->f2_lfo, mp);
+ tCycle_setFreq(&r->f2_lfo, 0.07f);
+
+
+ // PARAMETERS
+ tDattorroReverb_setMix(rev, 0.5f);
+
+ tDattorroReverb_setInputDelay(rev, 0.f);
+
+ tDattorroReverb_setInputFilter(rev, 10000.f);
+
+ tDattorroReverb_setFeedbackFilter(rev, 5000.f);
+
+ tDattorroReverb_setFeedbackGain(rev, 0.4f);
+}
+
+void tDattorroReverb_freeFromPool (tDattorroReverb* const rev, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tDattorroReverb* r = *rev;
+
+ // INPUT
+ tTapeDelay_freeFromPool(&r->in_delay, mp);
+ tOnePole_freeFromPool(&r->in_filter, mp);
+
+ for (int i = 0; i < 4; i++)
+ {
+ tAllpass_freeFromPool(&r->in_allpass[i], mp);
+ }
+
+ // FEEDBACK 1
+ tAllpass_freeFromPool(&r->f1_allpass, mp);
+
+ tTapeDelay_freeFromPool(&r->f1_delay_1, mp);
+ tTapeDelay_freeFromPool(&r->f1_delay_2, mp);
+ tTapeDelay_freeFromPool(&r->f1_delay_3, mp);
+
+ tOnePole_freeFromPool(&r->f1_filter, mp);
+
+ tHighpass_freeFromPool(&r->f1_hp, mp);
+
+ tCycle_freeFromPool(&r->f1_lfo, mp);
+
+ // FEEDBACK 2
+ tAllpass_freeFromPool(&r->f2_allpass, mp);
+
+ tTapeDelay_freeFromPool(&r->f2_delay_1, mp);
+ tTapeDelay_freeFromPool(&r->f2_delay_2, mp);
+ tTapeDelay_freeFromPool(&r->f2_delay_3, mp);
+
+ tOnePole_freeFromPool(&r->f2_filter, mp);
+
+ tHighpass_freeFromPool(&r->f2_hp, mp);
+
+ tCycle_freeFromPool(&r->f2_lfo, mp);
+
+ mpool_free((char*)r, m);
+}
+
+void tDattorroReverb_clear (tDattorroReverb* const rev)
+{
+ _tDattorroReverb* r = *rev;
+
+ tTapeDelay_clear(&r->in_delay);
+ tTapeDelay_clear(&r->f1_delay_1);
+ tTapeDelay_clear(&r->f1_delay_2);
+ tTapeDelay_clear(&r->f1_delay_3);
+ tTapeDelay_clear(&r->f2_delay_1);
+ tTapeDelay_clear(&r->f2_delay_2);
+ tTapeDelay_clear(&r->f2_delay_3);
+}
+
+float tDattorroReverb_tick (tDattorroReverb* const rev, float input)
+{
+ _tDattorroReverb* r = *rev;
+
+
+ float in_sample, f1_sample,f1_delay_2_sample, f2_sample, f2_delay_2_sample;
+
+ if (r->frozen)
+ {
+ input = 0.0f;
+ //r->f1_last = 0.0f;
+ //r->f2_last = 0.0f;
+ }
+ // INPUT
+ in_sample = tTapeDelay_tick(&r->in_delay, input);
+
+ in_sample = tOnePole_tick(&r->in_filter, in_sample);
+
+ for (int i = 0; i < 4; i++)
+ {
+ in_sample = tAllpass_tick(&r->in_allpass[i], in_sample);
+ }
+
+ // FEEDBACK 1
+ f1_sample = in_sample + r->f2_last; // + f2_last_out;
+
+ tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f) + tCycle_tick(&r->f1_lfo) * SAMP(4.0f));
+
+ f1_sample = tAllpass_tick(&r->f1_allpass, f1_sample);
+
+ f1_sample = tTapeDelay_tick(&r->f1_delay_1, f1_sample);
+
+ f1_sample = tOnePole_tick(&r->f1_filter, f1_sample);
+
+ f1_sample = f1_sample + r->f1_delay_2_last * 0.5f;
+
+ f1_delay_2_sample = tTapeDelay_tick(&r->f1_delay_2, f1_sample * 0.5f);
+
+ r->f1_delay_2_last = f1_delay_2_sample;
+
+ f1_sample = r->f1_delay_2_last + f1_sample;
+
+ f1_sample = tHighpass_tick(&r->f1_hp, f1_sample);
+
+ f1_sample *= r->feedback_gain;
+
+ r->f1_last = tTapeDelay_tick(&r->f1_delay_3, f1_sample);
+
+ // FEEDBACK 2
+ f2_sample = in_sample + r->f1_last;
+
+ tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f) + tCycle_tick(&r->f2_lfo) * SAMP(4.0f));
+
+ f2_sample = tAllpass_tick(&r->f2_allpass, f2_sample);
+
+ f2_sample = tTapeDelay_tick(&r->f2_delay_1, f2_sample);
+
+ f2_sample = tOnePole_tick(&r->f2_filter, f2_sample);
+
+ f2_sample = f2_sample + r->f2_delay_2_last * 0.5f;
+
+ f2_delay_2_sample = tTapeDelay_tick(&r->f2_delay_2, f2_sample * 0.5f);
+
+ r->f2_delay_2_last = f2_delay_2_sample;
+
+ f2_sample = r->f2_delay_2_last + f2_sample;
+
+ f2_sample = tHighpass_tick(&r->f2_hp, f2_sample);
+
+ f2_sample *= r->feedback_gain;
+
+ r->f2_last = tTapeDelay_tick(&r->f2_delay_3, f2_sample);
+
+ // TAP OUT 1
+ f1_sample = tTapeDelay_tapOut(&r->f1_delay_1, SAMP(8.9f)) +
+ tTapeDelay_tapOut(&r->f1_delay_1, SAMP(99.8f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f1_delay_2, SAMP(64.2f));
+
+ f1_sample += tTapeDelay_tapOut(&r->f1_delay_3, SAMP(67.f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_1, SAMP(66.8f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_3, SAMP(35.8f));
+
+ f1_sample *= 0.14f;
+
+ // TAP OUT 2
+ f2_sample = tTapeDelay_tapOut(&r->f2_delay_1, SAMP(11.8f)) +
+ tTapeDelay_tapOut(&r->f2_delay_1, SAMP(121.7f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
+
+ f2_sample += tTapeDelay_tapOut(&r->f2_delay_3, SAMP(89.7f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_1, SAMP(70.8f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_2, SAMP(11.2f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_3, SAMP(4.1f));
+
+ f2_sample *= 0.14f;
+
+ float sample = (f1_sample + f2_sample) * 0.5f;
+
+ return (input * (1.0f - r->mix) + sample * r->mix);
+}
+
+void tDattorroReverb_tickStereo (tDattorroReverb* const rev, float input, float* output)
+{
+ _tDattorroReverb* r = *rev;
+ float in_sample, f1_sample,f1_delay_2_sample, f2_sample, f2_delay_2_sample;
+
+ if (r->frozen)
+ {
+ input = 0.0f;
+ //r->f1_last = 0.0f;
+ //r->f2_last = 0.0f;
+ }
+ // INPUT
+ in_sample = tTapeDelay_tick(&r->in_delay, input);
+
+ in_sample = tOnePole_tick(&r->in_filter, in_sample);
+
+ for (int i = 0; i < 4; i++)
+ {
+ in_sample = tAllpass_tick(&r->in_allpass[i], in_sample);
+ }
+
+
+ // FEEDBACK 1
+ f1_sample = in_sample + r->f2_last; // + f2_last_out;
+
+ tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f) + tCycle_tick(&r->f1_lfo) * SAMP(4.0f));
+
+ f1_sample = tAllpass_tick(&r->f1_allpass, f1_sample);
+
+ f1_sample = tTapeDelay_tick(&r->f1_delay_1, f1_sample);
+
+ f1_sample = tOnePole_tick(&r->f1_filter, f1_sample);
+
+ f1_sample = f1_sample + r->f1_delay_2_last * 0.5f;
+
+ f1_delay_2_sample = tTapeDelay_tick(&r->f1_delay_2, f1_sample * 0.5f);
+
+ r->f1_delay_2_last = f1_delay_2_sample;
+
+ f1_sample = r->f1_delay_2_last + f1_sample;
+
+ f1_sample = tHighpass_tick(&r->f1_hp, f1_sample);
+
+ f1_sample *= r->feedback_gain;
+
+ if (r->frozen)
+ {
+ f1_sample = 0.0f;
+ }
+
+ r->f1_last = tTapeDelay_tick(&r->f1_delay_3, f1_sample);
+
+ // FEEDBACK 2
+ f2_sample = in_sample + r->f1_last;
+
+ tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f) + tCycle_tick(&r->f2_lfo) * SAMP(4.0f));
+
+ f2_sample = tAllpass_tick(&r->f2_allpass, f2_sample);
+
+ f2_sample = tTapeDelay_tick(&r->f2_delay_1, f2_sample);
+
+ f2_sample = tOnePole_tick(&r->f2_filter, f2_sample);
+
+ f2_sample = f2_sample + r->f2_delay_2_last * 0.5f;
+
+ f2_delay_2_sample = tTapeDelay_tick(&r->f2_delay_2, f2_sample * 0.5f);
+
+ r->f2_delay_2_last = f2_delay_2_sample;
+
+ f2_sample = r->f2_delay_2_last + f2_sample;
+
+ f2_sample = tHighpass_tick(&r->f2_hp, f2_sample);
+
+ f2_sample *= r->feedback_gain;
+
+ if (r->frozen)
+ {
+ f2_sample = 0.0f;
+ }
+ r->f2_last = tTapeDelay_tick(&r->f2_delay_3, f2_sample);
+
+
+
+ // TAP OUT 1
+ f1_sample = tTapeDelay_tapOut(&r->f1_delay_1, SAMP(8.9f)) +
+ tTapeDelay_tapOut(&r->f1_delay_1, SAMP(99.8f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f1_delay_2, SAMP(64.2f));
+
+ f1_sample += tTapeDelay_tapOut(&r->f1_delay_3, SAMP(67.f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_1, SAMP(66.8f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
+
+ f1_sample -= tTapeDelay_tapOut(&r->f2_delay_3, SAMP(35.8f));
+
+ f1_sample *= 0.14f;
+
+ // TAP OUT 2
+ f2_sample = tTapeDelay_tapOut(&r->f2_delay_1, SAMP(11.8f)) +
+ tTapeDelay_tapOut(&r->f2_delay_1, SAMP(121.7f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
+
+ f2_sample += tTapeDelay_tapOut(&r->f2_delay_3, SAMP(89.7f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_1, SAMP(70.8f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_2, SAMP(11.2f));
+
+ f2_sample -= tTapeDelay_tapOut(&r->f1_delay_3, SAMP(4.1f));
+
+ f2_sample *= 0.14f;
+
+ output[0] = input * (1.0f - r->mix) + f1_sample * r->mix;
+ output[1] = input * (1.0f - r->mix) + f2_sample * r->mix;
+
+}
+
+void tDattorroReverb_setMix (tDattorroReverb* const rev, float mix)
+{
+ _tDattorroReverb* r = *rev;
+ r->mix = LEAF_clip(0.0f, mix, 1.0f);
+}
+
+void tDattorroReverb_setFreeze (tDattorroReverb* const rev, uint32_t freeze)
+{
+ _tDattorroReverb* r = *rev;
+ r->frozen = freeze;
+ if (freeze)
+ {
+ tAllpass_setGain(&r->f2_allpass, 1.0f);
+ tAllpass_setGain(&r->f1_allpass, 1.0f);
+ for (int i = 0; i < 4; i++)
+ {
+
+ //tAllpass_setGain(&r->in_allpass[i], 1.0f);
+ }
+ tCycle_setFreq(&r->f1_lfo, 0.0f);
+ tCycle_setFreq(&r->f2_lfo, 0.0f);
+ }
+ else
+ {
+ tAllpass_setGain(&r->f2_allpass, 0.7f);
+ tAllpass_setGain(&r->f1_allpass, 0.7f);
+ for (int i = 0; i < 4; i++)
+ {
+ //tAllpass_setGain(&r->in_allpass[i], in_allpass_gains[i]);
+ }
+ tCycle_setFreq(&r->f1_lfo, 0.1f);
+ tCycle_setFreq(&r->f2_lfo, 0.07f);
+ }
+}
+
+
+void tDattorroReverb_setHP (tDattorroReverb* const rev, float freq)
+{
+ _tDattorroReverb* r = *rev;
+ float newFreq = LEAF_clip(20.0f, freq, 20000.0f);
+ tHighpass_setFreq(&r->f1_hp, newFreq);
+ tHighpass_setFreq(&r->f2_hp, newFreq);
+}
+
+
+void tDattorroReverb_setSize (tDattorroReverb* const rev, float size)
+{
+ _tDattorroReverb* r = *rev;
+
+ r->size = LEAF_clip(0.01f, size*r->size_max, r->size_max);
+ r->t = r->size * leaf.sampleRate * 0.001f;
+
+ /*
+ for (int i = 0; i < 4; i++)
+ {
+ tAllpass_setDelay(&r->in_allpass[i], SAMP(in_allpass_delays[i]));
+ }
+ */
+
+ // FEEDBACK 1
+ //tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f));
+
+ tTapeDelay_setDelay(&r->f1_delay_1, SAMP(141.69f));
+ tTapeDelay_setDelay(&r->f1_delay_2, SAMP(89.24f));
+ tTapeDelay_setDelay(&r->f1_delay_3, SAMP(125.f));
+
+ // maybe change rate of SINE LFO's when size changes?
+ //tCycle_setFreq(&r->f2_lfo, 0.07f * size * r->size_max);
+
+ // FEEDBACK 2
+ //tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f));
+
+ tTapeDelay_setDelay(&r->f2_delay_1, SAMP(149.62f));
+ tTapeDelay_setDelay(&r->f2_delay_2, SAMP(60.48f));
+ tTapeDelay_setDelay(&r->f2_delay_3, SAMP(106.28f));
+}
+
+void tDattorroReverb_setInputDelay (tDattorroReverb* const rev, float preDelay)
+{
+ _tDattorroReverb* r = *rev;
+
+ r->predelay = LEAF_clip(0.0f, preDelay, 200.0f);
+
+ tTapeDelay_setDelay(&r->in_delay, SAMP(r->predelay));
+}
+
+void tDattorroReverb_setInputFilter (tDattorroReverb* const rev, float freq)
+{
+ _tDattorroReverb* r = *rev;
+
+ r->input_filter = LEAF_clip(0.0f, freq, 20000.0f);
+
+ tOnePole_setFreq(&r->in_filter, r->input_filter);
+}
+
+void tDattorroReverb_setFeedbackFilter (tDattorroReverb* const rev, float freq)
+{
+ _tDattorroReverb* r = *rev;
+
+ r->feedback_filter = LEAF_clip(0.0f, freq, 20000.0f);
+
+ tOnePole_setFreq(&r->f1_filter, r->feedback_filter);
+ tOnePole_setFreq(&r->f2_filter, r->feedback_filter);
+}
+
+void tDattorroReverb_setFeedbackGain (tDattorroReverb* const rev, float gain)
+{
+ _tDattorroReverb* r = *rev;
+ r->feedback_gain = gain;
+}
--- /dev/null
+++ b/leaf/Src/leaf-sampling.c
@@ -1,0 +1,866 @@
+/*
+ ==============================================================================
+
+ leaf-sampling.c
+ Created: 20 Jan 2017 12:02:17pm
+ Author: Michael R Mulshine
+
+ ==============================================================================
+ */
+
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-sampling.h"
+#include "..\leaf.h"
+
+#else
+
+#include "../Inc/leaf-sampling.h"
+#include "../leaf.h"
+
+
+#endif
+
+//==============================================================================
+
+void tBuffer_init (tBuffer* const sb, uint32_t length)
+{
+ tBuffer_initToPool(sb, length, &leaf.mempool);
+}
+
+void tBuffer_free (tBuffer* const sb)
+{
+ tBuffer_freeFromPool(sb, &leaf.mempool);
+}
+
+void tBuffer_initToPool (tBuffer* const sb, uint32_t length, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tBuffer* s = *sb = (_tBuffer*) mpool_alloc(sizeof(_tBuffer), m);
+
+ s->buff = (float*) mpool_alloc( sizeof(float) * length, m);
+
+ s->bufferLength = length;
+ s->recordedLength = 0;
+ s->active = 0;
+ s->idx = 0;
+ s->mode = RecordOneShot;
+}
+
+void tBuffer_freeFromPool (tBuffer* const sb, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tBuffer* s = *sb;
+
+ mpool_free((char*)s->buff, m);
+ mpool_free((char*)s, m);
+}
+
+void tBuffer_tick (tBuffer* const sb, float sample)
+{
+ _tBuffer* s = *sb;
+
+ if (s->active == 1)
+ {
+ s->buff[s->idx] = sample;
+
+ s->idx += 1;
+
+ if (s->idx >= s->bufferLength)
+ {
+ if (s->mode == RecordOneShot)
+ {
+ tBuffer_stop(sb);
+ }
+ else if (s->mode == RecordLoop)
+ {
+ s->idx = 0;
+ }
+ }
+ }
+}
+
+void tBuffer_read(tBuffer* const sb, float* buff, uint32_t len)
+{
+ _tBuffer* s = *sb;
+ for (int i = 0; i < s->bufferLength; i++)
+ {
+ if (i < len) s->buff[i] = buff[i];
+ else s->buff[i] = 0.f;
+ }
+ s->recordedLength = len;
+}
+
+float tBuffer_get (tBuffer* const sb, int idx)
+{
+ _tBuffer* s = *sb;
+ if ((idx < 0) || (idx >= s->bufferLength)) return 0.f;
+ return s->buff[idx];
+}
+
+void tBuffer_record(tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ s->active = 1;
+ s->idx = 0;
+}
+
+void tBuffer_stop(tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ s->active = 0;
+ s->recordedLength = s->idx;
+}
+
+int tBuffer_getRecordPosition(tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ return s->idx;
+}
+
+void tBuffer_setRecordMode (tBuffer* const sb, RecordMode mode)
+{
+ _tBuffer* s = *sb;
+ s->mode = mode;
+}
+
+void tBuffer_clear (tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ for (int i = 0; i < s->bufferLength; i++)
+ {
+ s->buff[i] = 0.f;
+ }
+}
+
+uint32_t tBuffer_getBufferLength(tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ return s->bufferLength;
+}
+
+uint32_t tBuffer_getRecordedLength(tBuffer* const sb)
+{
+ _tBuffer* s = *sb;
+ return s->recordedLength;
+}
+
+//================================tSampler=====================================
+
+static void handleStartEndChange(tSampler* const sp);
+
+static void attemptStartEndChange(tSampler* const sp);
+
+void tSampler_init(tSampler* const sp, tBuffer* const b)
+{
+ tSampler_initToPool(sp, b, &leaf.mempool);
+}
+
+void tSampler_free (tSampler* const sp)
+{
+ tSampler_freeFromPool(sp, &leaf.mempool);
+}
+
+void tSampler_initToPool(tSampler* const sp, tBuffer* const b, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSampler* p = *sp = (_tSampler*) mpool_alloc(sizeof(_tSampler), m);
+ _tBuffer* s = *b;
+
+ p->samp = s;
+
+ p->active = 0;
+
+ p->start = 0;
+ p->end = 0;
+
+ p->len = p->end - p->start;
+
+ p->idx = 0.f;
+ p->inc = 1.f;
+ p->iinc = 1.f;
+
+ p->dir = 1;
+ p->flip = 1;
+ p->bnf = 1;
+
+ p->mode = PlayNormal;
+
+ p->cfxlen = 500; // default 300 sample crossfade
+
+ tRamp_initToPool(&p->gain, 7.0f, 1, mp);
+ tRamp_setVal(&p->gain, 0.f);
+
+ p->targetstart = -1;
+ p->targetend = -1;
+
+ p->inCrossfade = 0;
+ p->flipStart = -1;
+ p->flipIdx = -1;
+}
+
+void tSampler_freeFromPool (tSampler* const sp, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tSampler* p = *sp;
+ tRamp_freeFromPool(&p->gain, mp);
+
+ mpool_free((char*)p, m);
+}
+
+void tSampler_setSample (tSampler* const sp, tBuffer* const b)
+{
+ _tSampler* p = *sp;
+ _tBuffer* s = *b;
+
+ p->samp = s;
+
+ p->start = 0;
+ p->end = p->samp->bufferLength - 1;
+
+ p->len = p->end - p->start;
+
+ p->idx = 0.f;
+}
+
+volatile uint32_t errorState = 0;
+
+float tSampler_tick (tSampler* const sp)
+{
+ _tSampler* p = *sp;
+
+ attemptStartEndChange(sp);
+
+ if (p->active == 0) return 0.f;
+
+ if ((p->inc == 0.0f) || (p->len < 2))
+ {
+ // p->inCrossfade = 1;
+ return p->last;
+ }
+
+ float sample = 0.0f;
+ float cfxsample = 0.0f;
+ float crossfadeMix = 0.0f;
+ float flipsample = 0.0f;
+ float flipMix = 0.0f;
+
+ float* buff = p->samp->buff;
+
+ // Variables so start is also before end
+ int32_t start = p->start;
+ int32_t end = p->end;
+ if (p->flip < 0)
+ {
+ start = p->end;
+ end = p->start;
+ }
+
+ // Get the direction and a reverse flag for some calcs
+ int dir = p->bnf * p->dir * p->flip;
+ int rev = 0;
+ if (dir < 0) rev = 1;
+
+ // Get the current integer index and alpha for interpolation
+ int idx = (int) p->idx;
+ float alpha = rev + (p->idx - idx) * dir;
+ idx += rev;
+
+ // Get the indexes for interpolation
+ int i1 = idx-(1*dir);
+ int i2 = idx;
+ int i3 = idx+(1*dir);
+ int i4 = idx+(2*dir);
+
+ int length = p->samp->recordedLength;
+
+ // Wrap as needed
+ i1 = (i1 < length*rev) ? i1 + (length * (1-rev)) : i1 - (length * rev);
+ i2 = (i2 < length*rev) ? i2 + (length * (1-rev)) : i2 - (length * rev);
+ i3 = (i3 < length*(1-rev)) ? i3 + (length * rev) : i3 - (length * (1-rev));
+ i4 = (i4 < length*(1-rev)) ? i4 + (length * rev) : i4 - (length * (1-rev));
+
+ sample = LEAF_interpolate_hermite_x (buff[i1],
+ buff[i2],
+ buff[i3],
+ buff[i4],
+ alpha);
+
+ uint32_t cfxlen = p->cfxlen;
+ if (p->len * 0.25f < cfxlen) cfxlen = p->len * 0.25f;
+
+ // Determine crossfade points
+ uint32_t fadeLeftStart = 0;
+ if (start >= cfxlen) fadeLeftStart = start - cfxlen;
+ uint32_t fadeLeftEnd = fadeLeftStart + cfxlen;
+
+ uint32_t fadeRightEnd = end;// + (fadeLeftEnd - start);
+ // if (fadeRightEnd >= length) fadeRightEnd = length - 1;
+ uint32_t fadeRightStart = fadeRightEnd - cfxlen;
+
+
+
+
+ if (p->mode == PlayLoop)
+ {
+
+ int offset = 0;
+ int cdx = 0;
+ if ((fadeLeftStart <= idx) && (idx <= fadeLeftEnd))
+ {
+ offset = fadeLeftEnd - idx;
+ cdx = fadeRightEnd - offset;
+ p->inCrossfade = 1;
+ }
+ else if ((fadeRightStart <= idx) && (idx <= fadeRightEnd))
+ {
+ offset = idx - fadeRightStart;
+ cdx = fadeLeftStart + offset;
+ p->inCrossfade = 1;
+ }
+ else p->inCrossfade = 0;
+
+ if (p->inCrossfade)
+ {
+ int c1 = cdx-(1*dir);
+ int c2 = cdx;
+ int c3 = cdx+(1*dir);
+ int c4 = cdx+(2*dir);
+
+ // Wrap as needed
+ c1 = (c1 < length * rev) ? c1 + (length * (1-rev)) : c1 - (length * rev);
+ c2 = (c2 < length * rev) ? c2 + (length * (1-rev)) : c2 - (length * rev);
+ c3 = (c3 < length * (1-rev)) ? c3 + (length * rev) : c3 - (length * (1-rev));
+ c4 = (c4 < length * (1-rev)) ? c4 + (length * rev) : c4 - (length * (1-rev));
+
+ cfxsample = LEAF_interpolate_hermite_x (buff[c1],
+ buff[c2],
+ buff[c3],
+ buff[c4],
+ alpha);
+ crossfadeMix = (float) offset / (float) cfxlen;
+ }
+
+ float flipLength = fabsf(p->flipIdx - p->flipStart);
+ if (flipLength > cfxlen)
+ {
+ p->flipStart = -1;
+ p->flipIdx = -1;
+ }
+ if (p->flipIdx >= 0)
+ {
+ if (p->flipStart == -1)
+ {
+ p->flipStart = p->idx;
+ p->flipIdx = p->idx;
+ }
+ flipLength = fabsf(p->flipIdx - p->flipStart);
+
+ int fdx = (int) p->flipIdx;
+ float falpha = (1-rev) - (p->flipIdx - fdx) * dir;
+ idx += (1-rev);
+
+ // Get the indexes for interpolation
+ int f1 = fdx+(1*dir);
+ int f2 = fdx;
+ int f3 = fdx-(1*dir);
+ int f4 = fdx-(2*dir);
+
+ // Wrap as needed
+ f1 = (f1 < length*(1-rev)) ? f1 + (length * rev) : f1 - (length * (1-rev));
+ f2 = (f2 < length*(1-rev)) ? f2 + (length * rev) : f2 - (length * (1-rev));
+ f3 = (f3 < length*rev) ? f3 + (length * (1-rev)) : f3 - (length * rev);
+ f4 = (f4 < length*rev) ? f4 + (length * (1-rev)) : f4 - (length * rev);
+
+ flipsample = LEAF_interpolate_hermite_x (buff[f1],
+ buff[f2],
+ buff[f3],
+ buff[f4],
+ falpha);
+ flipMix = (float) (cfxlen - flipLength) / (float) cfxlen;
+ }
+ }
+
+ float inc = fmod(p->inc, p->len);
+ p->idx += (dir * inc);
+ if (p->flipStart >= 0)
+ {
+ p->flipIdx += (-dir * inc);
+ if((int)p->flipIdx < 0)
+ {
+ p->idx += (float)length;
+ }
+ if((int)p->idx >= length)
+ {
+
+ p->idx -= (float)length;
+ }
+ }
+
+
+
+ attemptStartEndChange(sp);
+
+
+ if (p->mode == PlayLoop)
+ {
+ if((int)p->idx < start)
+ {
+ p->idx += (float)(fadeRightEnd - fadeLeftEnd);
+ }
+ if((int)p->idx > end)
+ {
+
+ p->idx -= (float)(fadeRightEnd - fadeLeftEnd);
+ }
+ }
+ else if (p->mode == PlayBackAndForth)
+ {
+ if (p->idx < start)
+ {
+ p->bnf = -p->bnf;
+ p->idx = start + 1;
+ }
+ else if (p->idx > end)
+ {
+ p->bnf = -p->bnf;
+ p->idx = end - 1;
+ }
+ }
+
+ float ticksToEnd = rev ? ((idx - start) * p->iinc) : ((end - idx) * p->iinc);
+ if (p->mode == PlayNormal)
+ {
+ if (ticksToEnd < (0.007f * leaf.sampleRate))
+ {
+ tRamp_setDest(&p->gain, 0.f);
+ p->active = -1;
+ }
+ }
+
+ sample = ((sample * (1.0f - crossfadeMix)) + (cfxsample * crossfadeMix)) * (1.0f - flipMix) + (flipsample * flipMix);
+
+ sample = sample * tRamp_tick(&p->gain);
+
+ if (p->active < 0)
+ {
+ if (tRamp_sample(&p->gain) <= 0.00001f)
+ {
+ if (p->retrigger == 1)
+ {
+ p->active = 1;
+ p->retrigger = 0;
+ tRamp_setDest(&p->gain, 1.f);
+
+ if (p->dir > 0)
+ {
+ if (p->flip > 0) p->idx = p->start;
+ else p->idx = p->end;
+ }
+ else
+ {
+ if (p->flip > 0) p->idx = p->end;
+ else p->idx = p->start;
+ }
+ }
+ else
+ {
+ p->active = 0;
+ }
+
+ }
+ }
+
+ if (fabsf(sample-p->last) > 0.1f)
+ {
+ errorState = 1;
+ }
+
+ p->last = sample;
+
+
+ return p->last;
+}
+
+void tSampler_setMode (tSampler* const sp, PlayMode mode)
+{
+ _tSampler* p = *sp;
+ p->mode = mode;
+}
+
+void tSampler_setCrossfadeLength (tSampler* const sp, uint32_t length)
+{
+ _tSampler* p = *sp;
+
+ uint32_t cfxlen = LEAF_clip(0, length, p->len * 0.25f);
+
+ p->cfxlen = cfxlen;
+}
+
+void tSampler_play (tSampler* const sp)
+{
+ _tSampler* p = *sp;
+
+ if (p->active != 0)
+ {
+ p->active = -1;
+ p->retrigger = 1;
+
+ tRamp_setDest(&p->gain, 0.f);
+ }
+ else
+ {
+ p->active = 1;
+ p->retrigger = 0;
+
+ tRamp_setDest(&p->gain, 1.f);
+
+ if (p->dir > 0)
+ {
+ if (p->flip > 0) p->idx = p->start;
+ else p->idx = p->end;
+ }
+ else
+ {
+ if (p->flip > 0) p->idx = p->end;
+ else p->idx = p->start;
+ }
+ handleStartEndChange(&p);
+ }
+}
+
+void tSampler_stop (tSampler* const sp)
+{
+ _tSampler* p = *sp;
+
+ p->active = -1;
+
+ tRamp_setDest(&p->gain, 0.f);
+}
+
+static void handleStartEndChange(tSampler* const sp)
+{
+ _tSampler* p = *sp;
+
+ p->len = abs(p->end - p->start);
+
+ if (p->cfxlen > (p->len * 0.25f)) p->cfxlen = p->len * 0.25f;
+
+ if (p->start > p->end)
+ {
+ p->flip = -1;
+ }
+ else
+ {
+ p->flip = 1;
+ }
+}
+
+static void attemptStartEndChange(tSampler* const sp)
+{
+ _tSampler* p = *sp;
+
+ // Try to update start/end if needed
+ if (p->targetstart >= 0)
+ {
+ tSampler_setStart(sp, p->targetstart);
+ }
+ if (p->targetend >= 0)
+ {
+ tSampler_setEnd(sp, p->targetend);
+ }
+}
+
+void tSampler_setStart (tSampler* const sp, int32_t start)
+{
+ _tSampler* p = *sp;
+
+ int tempflip;
+ /*
+ if (start == p->end)
+ {
+ return;
+ }
+ */
+ if (p->active) // only bother with these checks if we're actually playing
+ {
+ if (start > p->end)
+ {
+ tempflip = -1;
+ }
+ else
+ {
+ tempflip = 1;
+ }
+
+ int dir = p->bnf * p->dir * tempflip;
+
+ uint32_t cfxlen = p->cfxlen;
+ if (p->len * 0.25f < cfxlen) cfxlen = p->len * 0.25f;
+
+ if (p->inCrossfade || p->flipStart >= 0)
+ {
+ p->targetstart = start;
+ return;
+ }
+ if ((tempflip > 0) && (dir > 0)) // start is start and we're playing forward
+ {
+ if (start > p->idx)// start given is after current index or we're in a crossfade
+ {
+ p->targetstart = start;
+ float tempLen = abs(p->end - start) * 0.25f;
+ if (cfxlen > tempLen)
+ {
+ p->cfxlen = tempLen;
+ }
+ return;
+ }
+ }
+ else if ((tempflip < 0) && (dir < 0)) // start is end and we're playing in reverse
+ {
+ if (start < p->idx)// start given is before current index or we're in a crossfade
+ {
+ p->targetstart = start;
+ float tempLen = abs(p->end - start) * 0.25f;
+ if (cfxlen > tempLen)
+ {
+ p->cfxlen = tempLen;
+ }
+ return;
+ }
+ }
+ if (tempflip != p->flip && p->flipStart < 0)
+ {
+ p->flipIdx = 0;
+ }
+ }
+
+ p->start = LEAF_clipInt(0, start, p->samp->recordedLength-1);
+ handleStartEndChange(sp);
+ p->targetstart = -1;
+
+}
+
+void tSampler_setEnd (tSampler* const sp, int32_t end)
+{
+ _tSampler* p = *sp;
+
+ int tempflip;
+
+ /*
+ if (end == p->start)
+ {
+ return;
+ }
+ */
+ if (p->active) // only bother with these checks if we're actually playing
+ {
+ if (p->start > end)
+ {
+ tempflip = -1;
+ }
+ else
+ {
+ tempflip = 1;
+ }
+
+ int dir = p->bnf * p->dir * tempflip;
+
+ uint32_t cfxlen = p->cfxlen;
+ if (p->len * 0.25f < cfxlen) cfxlen = p->len * 0.25f;
+
+ if (p->inCrossfade || p->flipStart >= 0)
+ {
+ p->targetend = end;
+ return;
+ }
+ if (tempflip > 0 && dir < 0) // end is end and we're playing in reverse
+ {
+ if (end < p->idx) // end given is before current index or we're in a crossfade
+ {
+ p->targetend = end;
+ float tempLen = abs(end - p->start) * 0.25f;
+ if (cfxlen > tempLen)
+ {
+ p->cfxlen = tempLen;
+ }
+ return;
+ }
+ }
+ else if (tempflip < 0 && dir > 0) // end is start and we're playing forward
+ {
+ if (end > p->idx) // end given is after current index or we're in a crossfade
+ {
+ p->targetend = end;
+ float tempLen = abs(end - p->start) * 0.25f;
+ if (cfxlen > tempLen)
+ {
+ p->cfxlen = tempLen;
+ }
+ return;
+ }
+ }
+ if (tempflip != p->flip && p->flipStart < 0)
+ {
+ p->flipIdx = 0;
+ }
+ }
+
+ p->end = LEAF_clipInt(0, end, p->samp->recordedLength-1);
+ handleStartEndChange(sp);
+ p->targetend = -1;
+}
+
+void tSampler_setLength (tSampler* const sp, int32_t length)
+{
+ _tSampler* p = *sp;
+ if (length == 0) length = 1;
+ tSampler_setEnd(sp, p->start + length);
+}
+
+void tSampler_setRate (tSampler* const sp, float rate)
+{
+ _tSampler* p = *sp;
+
+ if (rate < 0.f)
+ {
+ rate = -rate;
+ p->dir = -1;
+ }
+ else
+ {
+ p->dir = 1;
+ }
+
+ p->inc = rate;
+ p->iinc = 1.f / p->inc;
+}
+
+//==============================================================================
+
+void tAutoSampler_init (tAutoSampler* const as, tBuffer* const b)
+{
+ tAutoSampler_initToPool(as, b, &leaf.mempool);
+}
+
+void tAutoSampler_free (tAutoSampler* const as)
+{
+ tAutoSampler_freeFromPool(as, &leaf.mempool);
+}
+
+void tAutoSampler_initToPool (tAutoSampler* const as, tBuffer* const b, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAutoSampler* a = *as = (_tAutoSampler*) mpool_alloc(sizeof(_tAutoSampler), m);
+
+ tBuffer_setRecordMode(b, RecordOneShot);
+ tSampler_initToPool(&a->sampler, b, mp);
+ tSampler_setMode(&a->sampler, PlayLoop);
+ tEnvelopeFollower_initToPool(&a->ef, 0.05f, 0.9999f, mp);
+}
+
+void tAutoSampler_freeFromPool (tAutoSampler* const as, tMempool* const mp)
+{
+ _tMempool* m = *mp;
+ _tAutoSampler* a = *as;
+
+ tEnvelopeFollower_freeFromPool(&a->ef, mp);
+ tSampler_freeFromPool(&a->sampler, mp);
+
+ mpool_free((char*)a, m);
+}
+
+float tAutoSampler_tick (tAutoSampler* const as, float input)
+{
+ _tAutoSampler* a = *as;
+ float currentPower = tEnvelopeFollower_tick(&a->ef, input);
+
+ if ((currentPower > (a->threshold)) &&
+ (currentPower > a->previousPower + 0.001f) &&
+ (a->sampleTriggered == 0) &&
+ (a->sampleCounter == 0))
+ {
+ a->sampleTriggered = 1;
+ tBuffer_record(&a->sampler->samp);
+ a->sampler->samp->recordedLength = a->sampler->samp->bufferLength;
+ a->sampleCounter = a->windowSize + 24;//arbitrary extra time to avoid resampling while playing previous sample - better solution would be alternating buffers and crossfading
+ a->powerCounter = 1000;
+ }
+
+ if (a->sampleCounter > 0)
+ {
+ a->sampleCounter--;
+ }
+
+
+ tSampler_setEnd(&a->sampler, a->windowSize);
+ tBuffer_tick(&a->sampler->samp, input);
+ //on it's way down
+ if (currentPower <= a->previousPower)
+ {
+ if (a->powerCounter > 0)
+ {
+ a->powerCounter--;
+ }
+ else if (a->sampleTriggered == 1)
+ {
+ a->sampleTriggered = 0;
+ }
+ }
+
+ a->previousPower = currentPower;
+
+ return tSampler_tick(&a->sampler);
+}
+
+void tAutoSampler_setBuffer (tAutoSampler* const as, tBuffer* const b)
+{
+ _tAutoSampler* a = *as;
+ tBuffer_setRecordMode(b, RecordOneShot);
+ if (a->windowSize > tBuffer_getBufferLength(b))
+ a->windowSize = tBuffer_getBufferLength(b);
+ tSampler_setSample(&a->sampler, b);
+}
+
+void tAutoSampler_setMode (tAutoSampler* const as, PlayMode mode)
+{
+ _tAutoSampler* a = *as;
+ tSampler_setMode(&a->sampler, mode);
+}
+
+void tAutoSampler_play (tAutoSampler* const as)
+{
+ _tAutoSampler* a = *as;
+ tSampler_play(&a->sampler);
+}
+void tAutoSampler_stop (tAutoSampler* const as)
+{
+ _tAutoSampler* a = *as;
+ tSampler_stop(&a->sampler);
+}
+
+void tAutoSampler_setThreshold (tAutoSampler* const as, float thresh)
+{
+ _tAutoSampler* a = *as;
+ a->threshold = thresh;
+}
+
+void tAutoSampler_setWindowSize (tAutoSampler* const as, uint32_t size)
+{
+ _tAutoSampler* a = *as;
+ if (size > tBuffer_getBufferLength(&a->sampler->samp))
+ a->windowSize = tBuffer_getBufferLength(&a->sampler->samp);
+ else a->windowSize = size;
+}
+
+void tAutoSampler_setCrossfadeLength (tAutoSampler* const as, uint32_t length)
+{
+ _tAutoSampler* a = *as;
+ tSampler_setCrossfadeLength(&a->sampler, length);
+}
+
+void tAutoSampler_setRate (tAutoSampler* const as, float rate)
+{
+ ;
+}
--- /dev/null
+++ b/leaf/Src/leaf-tables.c
@@ -1,0 +1,14061 @@
+/* sine wave table ripped from http://aquaticus.info/pwm-sine-wave */
+
+#if _WIN32 || _WIN64
+
+#include "..\Inc\leaf-tables.h"
+#include "..\Inc\leaf-global.h"
+#else
+
+#include "../Inc/leaf-tables.h"
+#include "../Inc/leaf-global.h"
+
+#endif
+
+
+#include "stdlib.h"
+
+const float __leaf_table_fir2XLow[32] = { 0.001067048115027622, -0.004557728776555209, -0.016711590887520535, -0.021065500881657994, -0.003828695019946828, 0.01865935152799254, 0.012036365576553658, -0.02064070362810112, -0.02682399333687091, 0.017862623081258543, 0.0492716766870816, -0.004310232755957251, -0.08571879958189704, -0.03828300159135686, 0.18420501161808442, 0.4054061613074031, 0.4054061613074031, 0.18420501161808442, -0.03828300159135686, -0.08571879958189704, -0.004310232755957251, 0.0492716766870816, 0.017862623081258543, -0.02682399333687091, -0.02064070362810112, 0.012036365576553658, 0.01865935152799254, -0.003828695019946828, -0.021065500881657994, -0.016711590887520535, -0.004557728776555209, 0.001067048115027622
+
+};
+const float __leaf_table_fir4XLow[64] = { 0.0006952369848543607, -0.0021602595656775407, -0.005046940892783684, -0.009045400833780066, -0.01291169046367334, -0.015115999752735221, -0.014305643164290147, -0.009951858009311934, -0.0028258377448417927, 0.004999374847547033, 0.010750729432710248, 0.012011264580991868, 0.007846433846826574, -0.0005004296670167205, -0.009772888585453377, -0.015810363406761653, -0.01525350231205246, -0.007226084282741553, 0.005835838890105145, 0.018676910759237414, 0.025091142837250335, 0.02056199072613674, 0.004658087892329196, -0.017877850338462058, -0.03800800914197999, -0.04518029996599868, -0.031146769751981856, 0.006553281738260734, 0.06282284508297871, 0.1257919544316159, 0.18007204974638935, 0.21145499612282317, 0.21145499612282317, 0.18007204974638935, 0.1257919544316159, 0.06282284508297871, 0.006553281738260734, -0.031146769751981856, -0.04518029996599868, -0.03800800914197999, -0.017877850338462058, 0.004658087892329196, 0.02056199072613674, 0.025091142837250335, 0.018676910759237414, 0.005835838890105145, -0.007226084282741553, -0.01525350231205246, -0.015810363406761653, -0.009772888585453377, -0.0005004296670167205, 0.007846433846826574, 0.012011264580991868, 0.010750729432710248, 0.004999374847547033, -0.0028258377448417927, -0.009951858009311934, -0.014305643164290147, -0.015115999752735221, -0.01291169046367334, -0.009045400833780066, -0.005046940892783684, -0.0021602595656775407, 0.0006952369848543607
+};
+const float __leaf_table_fir8XLow[64] = { 0.0006754949160790157, 0.0002779478357299437, 0.00016529299248029802, -0.00013134896547707938, -0.0006717131404275674, -0.0015110701381990592, -0.002691718323402088, -0.004233151560515273, -0.006122759810873029, -0.008309678451155357, -0.010700324896169348, -0.013154262594364387, -0.015486775440587882, -0.01748014690133886, -0.018887653514132675, -0.019456772349369558, -0.01894272181784527, -0.017131243827335194, -0.013858969256894846, -0.009032963777720983, -0.0026459262830678125, 0.00521276165394513, 0.01435273458276724, 0.024486845310977834, 0.03524172116254876, 0.04617574968276393, 0.05680505888194891, 0.06663123541320262, 0.07517390607705798, 0.08200222626654773, 0.0867639105153248, 0.08920930675382921, 0.08920930675382921, 0.0867639105153248, 0.08200222626654773, 0.07517390607705798, 0.06663123541320262, 0.05680505888194891, 0.04617574968276393, 0.03524172116254876, 0.024486845310977834, 0.01435273458276724, 0.00521276165394513, -0.0026459262830678125, -0.009032963777720983, -0.013858969256894846, -0.017131243827335194, -0.01894272181784527, -0.019456772349369558, -0.018887653514132675, -0.01748014690133886, -0.015486775440587882, -0.013154262594364387, -0.010700324896169348, -0.008309678451155357, -0.006122759810873029, -0.004233151560515273, -0.002691718323402088, -0.0015110701381990592, -0.0006717131404275674, -0.00013134896547707938, 0.00016529299248029802, 0.0002779478357299437, 0.0006754949160790157
+};
+
+
+const float __leaf_table_fir16XLow[128] = { 0.0046126349429950276, 0.002418251320043122, 0.002998396982119693, 0.0036278090719021024, 0.0042975430005925104, 0.004996222179947315, 0.005711926725799716, 0.00643079625328543, 0.007135468516004265, 0.007808520869830334, 0.008432568881455365, 0.008987453845736109, 0.00945525638237626, 0.009815890031354925, 0.01005214318250272, 0.0101471696783731, 0.010086582032584102, 0.009858344528406827, 0.009453351108896472, 0.00886647074448095, 0.008096771309653635, 0.00714751717242796, 0.006026566967445846, 0.004745997071949807, 0.0033222377606249025, 0.0017766711441555428, 0.00013504407845816216, -0.0015717347700967995, -0.0033094088955885038, -0.005040712758495562, -0.0067262136355625045, -0.00832548062138737, -0.009796853749250854, -0.011097728611024173, -0.012187337326564303, -0.013023698103098556, -0.013573509920266506, -0.013801755448129987, -0.013685636499932173, -0.0132011750541409, -0.012328290422335804, -0.011059565013468301, -0.009397775060844537, -0.007349071952063118, -0.004920665178899413, -0.002134336426912994, 0.0009664872092121234, 0.00436478920287496, 0.008003553325930378, 0.011839210717492617, 0.015814297525442545, 0.01987142580304551, 0.023948983229671674, 0.0279823843957138, 0.03190689232743185, 0.03565816745288488, 0.03917373689862927, 0.042395392373465575, 0.04526788671987817, 0.0477424527036618, 0.04977580760639264, 0.051332653704811104, 0.05238580079738586, 0.05291690409987073, 0.05291690409987073, 0.05238580079738586, 0.051332653704811104, 0.04977580760639264, 0.0477424527036618, 0.04526788671987817, 0.042395392373465575, 0.03917373689862927, 0.03565816745288488, 0.03190689232743185, 0.0279823843957138, 0.023948983229671674, 0.01987142580304551, 0.015814297525442545, 0.011839210717492617, 0.008003553325930378, 0.00436478920287496, 0.0009664872092121234, -0.002134336426912994, -0.004920665178899413, -0.007349071952063118, -0.009397775060844537, -0.011059565013468301, -0.012328290422335804, -0.0132011750541409, -0.013685636499932173, -0.013801755448129987, -0.013573509920266506, -0.013023698103098556, -0.012187337326564303, -0.011097728611024173, -0.009796853749250854, -0.00832548062138737, -0.0067262136355625045, -0.005040712758495562, -0.0033094088955885038, -0.0015717347700967995, 0.00013504407845816216, 0.0017766711441555428, 0.0033222377606249025, 0.004745997071949807, 0.006026566967445846, 0.00714751717242796, 0.008096771309653635, 0.00886647074448095, 0.009453351108896472, 0.009858344528406827, 0.010086582032584102, 0.0101471696783731, 0.01005214318250272, 0.009815890031354925, 0.00945525638237626, 0.008987453845736109, 0.008432568881455365, 0.007808520869830334, 0.007135468516004265, 0.00643079625328543, 0.005711926725799716, 0.004996222179947315, 0.0042975430005925104, 0.0036278090719021024, 0.002998396982119693, 0.002418251320043122, 0.0046126349429950276
+};
+
+const float __leaf_table_fir32XLow[256] = { 0.003135815035675548, 0.0008156232239328851, 0.000917068197598276, 0.0010233321389754753, 0.001134110218761504, 0.0012491667970169805, 0.0013680375075057851, 0.001490070275243389, 0.0016147643011084855, 0.0017417157238882276, 0.0018700914504121836, 0.0019991579415749683, 0.002128471863076254, 0.0022567566738769186, 0.002383672659264704, 0.002508166194956474, 0.002629506399721181, 0.0027467683378931368, 0.0028590361951993043, 0.0029653540222406116, 0.0030647286416823558, 0.00315623470697179, 0.003238837936508139, 0.0033114996375323753, 0.003373275427426179, 0.003423120728613286, 0.0034602078573979502, 0.00348370126489233, 0.0034928589363555137, 0.003487024926580723, 0.00346544617544127, 0.0034275901596743786, 0.003372744288160786, 0.003300374368830668, 0.0032100011629779615, 0.0031011259873207366, 0.0029734835473811155, 0.002826966057696581, 0.002661647372342504, 0.002477856491791658, 0.0022758592957851788, 0.002056324802981239, 0.0018188203182857804, 0.0015643564184398945, 0.0012926118931092972, 0.0010045690459120843, 0.0007018867678747181, 0.0003860391202902529, 0.00005849980158161824, -0.0002799696936324717, -0.0006296005356373679, -0.0009895247437558183, -0.0013546785675169304, -0.0017195561866995873, -0.0020963876502479964, -0.002468260301862593, -0.0028417218921490055, -0.0032120394918615683, -0.0035773608021516137, -0.003935505336691309, -0.004284369920502227, -0.004621670593236145, -0.004945031807804129, -0.005252279037886353, -0.005541035510098375, -0.0058089264241534076, -0.006054095814242929, -0.006274068947767563, -0.00646696244866887, -0.0066305675756926155, -0.006762900683506128, -0.0068620368760529005, -0.006926182735003765, -0.0069537046122919695, -0.006943019919480639, -0.006892771889917669, -0.006801741377343995, -0.006668838708546407, -0.006493264006045824, -0.006274267867821416, -0.006011320357808483, -0.0057040303527059145, -0.0053521596030233955, -0.004955865565614219, -0.0045153171035821945, -0.004031251472901679, -0.0035043462024212605, -0.002935495552851842, -0.0023258420785969196, -0.0016765768456949962, -0.0009892344368254917, -0.0002656979807816483, 0.0004919846584003508, 0.0012815018066687268, 0.0021009777555761797, 0.002947120990883713, 0.003818897132096946, 0.004711821532573362, 0.005623441877750917, 0.0065507318610126455, 0.00749007256295643, 0.008438601047417412, 0.009393231377415961, 0.010349728929990198, 0.011304034683748016, 0.012253787036798792, 0.0131957325172224, 0.014123534046112132, 0.015037407721547907, 0.015930638333497147, 0.016801083762848282, 0.017644931748342123, 0.018458926379618365, 0.019239740862760844, 0.0199842074278331, 0.02068926196032209, 0.021351902836904902, 0.021969538576994418, 0.022539688024890127, 0.02305979792910538, 0.023527892067270753, 0.023941757493848588, 0.02429975740762361, 0.024600378168866704, 0.02484241441905009, 0.025024893038415853, 0.025146995906550493, 0.025208214258904054, 0.025208214258904054, 0.025146995906550493, 0.025024893038415853, 0.02484241441905009, 0.024600378168866704, 0.02429975740762361, 0.023941757493848588, 0.023527892067270753, 0.02305979792910538, 0.022539688024890127, 0.021969538576994418, 0.021351902836904902, 0.02068926196032209, 0.0199842074278331, 0.019239740862760844, 0.018458926379618365, 0.017644931748342123, 0.016801083762848282, 0.015930638333497147, 0.015037407721547907, 0.014123534046112132, 0.0131957325172224, 0.012253787036798792, 0.011304034683748016, 0.010349728929990198, 0.009393231377415961, 0.008438601047417412, 0.00749007256295643, 0.0065507318610126455, 0.005623441877750917, 0.004711821532573362,
\ No newline at end of file
+};
+const float __leaf_table_fir64XLow[256] = { -0.007573012406345277, 0.00024079274850113426, 0.00024263723882202515, 0.0002481761013286244, 0.0002570861260137623, 0.0002699368701027846, 0.0002857208679875607, 0.00030498547559247845, 0.0003276748319944884, 0.0003537347795633787, 0.0003828493219762104, 0.00041517688767673063, 0.00045068714217736007, 0.0004893648798719514, 0.0005311398297784606, 0.0005760959724897604, 0.0006241866818625697, 0.00067534060229161, 0.0007295120216703175, 0.0007867375202056556, 0.00084702149975344, 0.0009103261049980538, 0.000976697360607544, 0.001046184181770156, 0.0011188000414977899, 0.0011944092399743605, 0.0012730564419046215, 0.0013547197757430203, 0.0014394035452673572, 0.0015269066196715306, 0.0016175658016292192, 0.0017113538530254156, 0.0018082288964809644, 0.0019074086707092258, 0.0020102102191501834, 0.002115750178775707, 0.0022249923434846707, 0.002324224442263978, 0.0024546715656463027, 0.0025707750602413674, 0.0026886907797787993, 0.0028092893752555753, 0.0029332425986383416, 0.003059760096689252, 0.0031892620828723227, 0.0033216131163189126, 0.00345667963318062, 0.003594116005810746, 0.00373401564369845, 0.003876285696289593, 0.004020837780560375, 0.004167535061341574, 0.004316384032044447, 0.004467271202856345, 0.004620059305184111, 0.00477464934326076, 0.004931017978539705, 0.005089107569792517, 0.005248795189805357, 0.005410043882397958, 0.00557279812512997, 0.005736960631925176, 0.005902264421456515, 0.006068673112862706, 0.006236075536115428, 0.006404404103216645, 0.006573347381526989, 0.006743241263261084, 0.006913918086775748, 0.007085185727911214, 0.007255841416075524, 0.007427788300814843, 0.007599440425756014, 0.007771491831017079, 0.007940210385740073, 0.008115982431613405, 0.008286230477311076, 0.008455728261315427, 0.008624828065636171, 0.0087938382520137, 0.008961934603559608, 0.009129309914478244, 0.009295705048569773, 0.009460895719293651, 0.009624512383898252, 0.009786590519239425, 0.009946995212091796, 0.010105592312872629, 0.010262212502414601, 0.010416818688520148, 0.010569268906811192, 0.010719396502249774, 0.010867082742078902, 0.011012274230511132, 0.011154883295408143, 0.01129473907939671, 0.011431766458575066, 0.011565861880187342, 0.011696890630696698, 0.011824548066976817, 0.011948823922340134, 0.012069629781346847, 0.012186937947306629, 0.012300432892104241, 0.01241055721228422, 0.012517086983512674, 0.012619772868365714, 0.01271694508250919, 0.012811738843612799, 0.012901614577029171, 0.012987520090940792, 0.013067705672196494, 0.013146659639966262, 0.013218602399208508, 0.013285987093409357, 0.013349032229359648, 0.013407929990549725, 0.013461999810303231, 0.013511437444384976, 0.013556082697096088, 0.013595835757053917, 0.013630499982440026, 0.01366023670087255, 0.013685042776887582, 0.013704903172994373, 0.013719772986706352, 0.013729721512429531, 0.01373472352074017, 0.01373472352074017, 0.013729721512429531, 0.013719772986706352, 0.013704903172994373, 0.013685042776887582, 0.01366023670087255, 0.013630499982440026, 0.013595835757053917, 0.013556082697096088, 0.013511437444384976, 0.013461999810303231, 0.013407929990549725, 0.013349032229359648, 0.013285987093409357, 0.013218602399208508, 0.013146659639966262, 0.013067705672196494, 0.012987520090940792, 0.012901614577029171, 0.012811738843612799, 0.01271694508250919, 0.012619772868365714, 0.012517086983512674, 0.01241055721228422, 0.012300432892104241, 0.012186937947306629, 0.012069629781346847, 0.011948823922340134, 0.011824548066976817, 0.011696890630696698, 0.011565861880187342, 0.011431766458575066, 0.01129473907939671,
\ No newline at end of file
+};
+
+const float __leaf_table_fir2XHigh[128] = { -2.84059575423864e-7, -0.00000136947295895967, -0.00000213110629785921, 5.807441351521463e-7, 0.000005239591854415941, 0.0000017841093721093506, -0.000011653029986124283, -0.000012481751035611902, 0.000014692437654954816, 0.00003091988960026406, -0.000011636477685383897, -0.00006163665493961978, -0.00001118322316939516, 0.0000961395818492714, 0.00006083206665324362, -0.00012648324239817438, -0.0001504708418330321, 0.00012753607518766694, 0.00027753923597010266, -0.00007473591299809917, -0.0004344444061086839, -0.00006832501012358436, 0.0005862297350582802, 0.00032465365599127654, -0.0006850628390191059, -0.0007096577214822187, 0.0006552234666252462, 0.0012010034203710784, -0.00041922406056782083, -0.0017446179378994388, -0.00010392099105524336, 0.002230631291161319, 0.0009594567093737222, -0.0025128059157130817, -0.002149706133662562, 0.0024038381899768617, 0.0035931253272614688, -0.0017176062590590708, -0.005125004981810711, 0.0002868765073834209, 0.006475023818177746, 0.001977797493927114, -0.007294746305130189, -0.005063375113227534, 0.007166496494812792, 0.008801581540883702, -0.005659099397006974, -0.012862366201787455, 0.00235384598511852, 0.016726921191779598, 0.0031052434033518096, -0.01970178000552065, -0.011028401875416302, 0.020882193937533836, 0.021743369519245558, -0.019061942568474207, -0.03589474387520175, 0.012292311428695956, 0.05536768370150782, 0.0038607600693388554, -0.08741418160721261, -0.046877671142694095, 0.18124004024261609, 0.41210996873316647, 0.41210996873316647, 0.18124004024261609, -0.046877671142694095, -0.08741418160721261, 0.0038607600693388554, 0.05536768370150782, 0.012292311428695956, -0.03589474387520175, -0.019061942568474207, 0.021743369519245558, 0.020882193937533836, -0.011028401875416302, -0.01970178000552065, 0.0031052434033518096, 0.016726921191779598, 0.00235384598511852, -0.012862366201787455, -0.005659099397006974, 0.008801581540883702, 0.007166496494812792, -0.005063375113227534, -0.007294746305130189, 0.001977797493927114, 0.006475023818177746, 0.0002868765073834209, -0.005125004981810711, -0.0017176062590590708, 0.0035931253272614688, 0.0024038381899768617, -0.002149706133662562, -0.0025128059157130817, 0.0009594567093737222, 0.002230631291161319, -0.00010392099105524336, -0.0017446179378994388, -0.00041922406056782083, 0.0012010034203710784, 0.0006552234666252462, -0.0007096577214822187, -0.0006850628390191059, 0.00032465365599127654, 0.0005862297350582802, -0.00006832501012358436, -0.0004344444061086839, -0.00007473591299809917, 0.00027753923597010266, 0.00012753607518766694, -0.0001504708418330321, -0.00012648324239817438, 0.00006083206665324362, 0.0000961395818492714, -0.00001118322316939516, -0.00006163665493961978, -0.000011636477685383897, 0.00003091988960026406, 0.000014692437654954816, -0.000012481751035611902, -0.000011653029986124283, 0.0000017841093721093506, 0.000005239591854415941, 5.807441351521463e-7, -0.00000213110629785921, -0.00000136947295895967, -2.84059575423864e-7
+};
+const float __leaf_table_fir4XHigh[256] = { -0.000005005316694254475, -0.000010486216859223391, -0.000020341389435584184, -0.000028297461945285203, -0.00003403970018224806, -0.00003356141383522181, -0.000028580071407296435, -0.000021726870316473222, -0.000018929805847104457, -0.000024937785475375726, -0.00004148092321827023, -0.00006494904958257674, -0.00008704299086494871, -0.00009817726370665003, -0.00009207287115371104, -0.000070350790919461, -0.000043204247279965386, -0.000026338754429996997, -0.00003337527183661095, -0.00006864404983689099, -0.00012208654155480072, -0.00017229784061896603, -0.00019443471041769651, -0.0001738448733058993, -0.00011458014625437172, -0.00004241909459592675, 0.000005858218684625342, -0.000001824861163195929, -0.00007376494795165521, -0.0001870435534541462, -0.00029242213522170924, -0.00033660459070401045, -0.00028781004597914193, -0.00015737268974254042, 2.4069038430437714e-7, 0.00010675981100488967, 0.00009819903503597289, -0.000041503003504151876, -0.00026298229853436046, -0.0004679330143401381, -0.000550680089032831, -0.00045235278384860993, -0.0001968527747134386, 0.00010787721721971545, 0.00031390651451180623, 0.0003015617300329922, 0.00004577001768172358, -0.0003593242009009715, -0.0007303801286775824, -0.0008768456304295432, -0.0006955854650565154, -0.00023554905807185743, 0.00030790928383371996, 0.0006717577010285365, 0.0006504775398685704, 0.00020580176646200433, -0.0004919858457618222, -0.0011250441730682327, -0.001368894036877941, -0.0010555177901930952, -0.00027554321698262794, 0.0006358082850902164, 0.0012391753523202087, 0.0011981314765901019, 0.0004602570434921762, -0.0006853292543951153, -0.0017133793271509106, -0.0020995520812018714, -0.0015812527530506791, -0.00031822317984990035, 0.0011425257824338887, 0.0020968295391595774, 0.0020180799074488486, 0.000837174097496827, -0.0009743823002432432, -0.0025836938014065975, -0.00317200799245191, -0.0023436048910665127, -0.0003642960983689493, 0.0019025392919524162, 0.0033649169125380706, 0.003219398725098763, 0.0013786588356217962, -0.001415068708295585, -0.003874469283244301, -0.004750945120551563, -0.0034548726172607498, -0.0004124431830693066, 0.003046185830666762, 0.005254266475282044, 0.004999101428335298, 0.002164099554982996, -0.0021053850268023615, -0.005843180111542266, -0.0071497618238720055, -0.0051353491910507984, -0.0004583930086451031, 0.004842595616255233, 0.008213402548972962, 0.00778770755309392, 0.003376641721920036, -0.003263596560752136, -0.00908888688929085, -0.011124936147882954, -0.007935453568187856, -0.0004986705357686102, 0.007998600315936934, 0.013466881500422878, 0.012810645017913123, 0.0055655403444453775, -0.00554207852540761, -0.015510462180576574, -0.019193722858760427, -0.013786276388279539, -0.0005292356782833587, 0.01526523041211863, 0.026109899142542758, 0.02555053211054643, 0.011414259133477645, -0.01233979307221452, -0.036160130412882435, -0.04790631293501779, -0.03735668670551693, -0.0005458966005379449, 0.0578178869957579, 0.12496957303698586, 0.18372600900451644, 0.21795911568314993, 0.21795911568314993, 0.18372600900451644, 0.12496957303698586, 0.0578178869957579, -0.0005458966005379449, -0.03735668670551693, -0.04790631293501779, -0.036160130412882435, -0.01233979307221452, 0.011414259133477645, 0.02555053211054643, 0.026109899142542758, 0.01526523041211863, -0.0005292356782833587, -0.013786276388279539, -0.019193722858760427, -0.015510462180576574, -0.00554207852540761, 0.0055655403444453775, 0.012810645017913123, 0.013466881500422878, 0.007998600315936934, -0.0004986705357686102, -0.007935453568187856, -0.011124936147882954, -0.
\ No newline at end of file
+};
+const float __leaf_table_fir8XHigh[256] = { 0.00003151783634577697, 0.00009875809063575779, 0.00011952623149469952, 0.00019849261073490482, 0.0002696485066015727, 0.0003584099608999308, 0.00044625388761023913, 0.0005319258847527823, 0.0006044238440905041, 0.0006561179367621888, 0.0006780841482803052, 0.0006636425833116022, 0.0006082918945412483, 0.0005111129662557197, 0.00037520607336543075, 0.00020804636935322743, 0.000021269501878054377, -0.00017002451555728345, -0.00034851615605358005, -0.0004962768841556523, -0.0005966792410792791, -0.0006363992327126103, -0.0006072812580573203, -0.0005078006712943802, -0.00034391453642163835, -0.0001291740152058233, 0.00011608199926386939, 0.0003663883172395964, 0.0005935643814352129, 0.0007697197860148682, 0.0008705060394986916, 0.0008782421413312541, 0.0007845404678866458, 0.0005921472961030223, 0.0003155390021514345, -0.00001975662025403667, -0.0003792242746719516, -0.0007226903878816747, -0.0010085916592065419, -0.0011987843551975912, -0.0012633390417589486, -0.0011847927602402282, -0.0009612078105002279, -0.000607656728473499, -0.00015580100244720835, 0.0003485912201162041, 0.0008499567444557006, 0.0012888238057625968, 0.0016085750487669262, 0.0017624573232133487, 0.0017198572703654494, 0.0014712649629561752, 0.0010309092850789008, 0.0004369297346610886, -0.0002514846038907312, -0.0009595058667715721, -0.0016045955886596882, -0.002105611566700304, -0.002392827139552557, -0.0024168530933362325, -0.00215621955374809, -0.0016217376891380843, -0.0008577023023227786, 0.00006118480472750677, 0.0010364584424907685, 0.001956049351551786, 0.002706696800527712, 0.00318733017834542, 0.003322096376141488, 0.0030709922507173265, 0.0024373280210738995, 0.0014701293295941087, 0.0002616176696267551, -0.0010608870493178752, -0.002347699681593795, -0.0034429894732297774, -0.004203029219555798, -0.00451398893736866, -0.004307677839041472, -0.0035726927213363046, -0.0023597776381211666, -0.0007800969761600126, 0.00100380173046076, 0.0027935634872831047, 0.0043761562977185555, 0.005547954061740437, 0.006139532362567163, 0.006038187372164252, 0.005205193104614497, 0.003685832364921369, 0.001610065959141185, -0.000816509624547802, -0.003331179568244694, -0.005640769473740277, -0.007453565321222198, -0.008513609412918493, -0.008633348531283494, -0.0077207439401804495, -0.005797651634024999, -0.003006470630061831, 0.00039645931697321107, 0.004060688288708085, 0.007573881722373314, 0.010503477916637444, 0.012443852783009171, 0.013064660267980682, 0.012154652149365373, 0.009656403107118496, 0.005687627159122434, 0.000545686660735971, -0.0053060804504155646, -0.011269885881064536, -0.016661104177372186, -0.02076782817847515, -0.022917127850131423, -0.022542073972735464, -0.01924294503235089, -0.012836088871532723, -0.0033855865368634104, 0.008786222880026725, 0.023111259021133423, 0.038810833745067747, 0.05495087979175688, 0.0705128544598909, 0.08447430461530625, 0.0958915908436123, 0.10397774191970133, 0.10816816138474043, 0.10816816138474043, 0.10397774191970133, 0.0958915908436123, 0.08447430461530625, 0.0705128544598909, 0.05495087979175688, 0.038810833745067747, 0.023111259021133423, 0.008786222880026725, -0.0033855865368634104, -0.012836088871532723, -0.01924294503235089, -0.022542073972735464, -0.022917127850131423, -0.02076782817847515, -0.016661104177372186, -0.011269885881064536, -0.0053060804504155646, 0.000545686660735971, 0.005687627159122434, 0.009656403107118496, 0.012154652149365373, 0.013064660267980682, 0.012443852783009171, 0.010503477916637444, 0.007573881722373314, 0.004060688288708085, 0.00039645931697321107, -0.0030064706
\ No newline at end of file
+};
+const float __leaf_table_fir16XHigh[512] = { -0.00004017374344384353, -0.00003227078919691645, -0.000044582740239682106, -0.000059425359817699515, -0.00007697752128893082, -0.00009737601811785888, -0.0001207053885646365, -0.0001469875004658367, -0.00017617089070723918, -0.00020812277783425573, -0.00024262055862920822, -0.0002793450290387454, -0.00031787504789909166, -0.0003576848687093178, -0.00039814402944626006, -0.0004385193477821247, -0.0004779801054675081, -0.0005156064224889276, -0.0005503998661674507, -0.0005812986840141297, -0.0006071960902571958, -0.0006269579055230081, -0.0006394482697590037, -0.0006435494696099878, -0.0006381976745823161, -0.0006223990810339609, -0.0005952724709135361, -0.0005560644539084499, -0.0005041884015231086, -0.00043924670962451254, -0.0003610522906867853, -0.00026965679983683306, -0.0001653614058088566, -0.00004873297752271577, 0.00007938716594862651, 0.0002178851248768366, 0.0003653745221459382, 0.0005202048736767491, 0.0006804822788501571, 0.000844091795557933, 0.0010087245432410705, 0.001171916285444633, 0.0013310914106543618, 0.0014836070887652329, 0.0016268044135357975, 0.0017580661564216042, 0.0018748692581644735, 0.0019748436871571654, 0.002055827323171664, 0.0021159244704237914, 0.002153555697975211, 0.002167506085967786, 0.0021569688626138744, 0.0021215783384772617, 0.002061435847387089, 0.0019771222276341416, 0.0018697088674027409, 0.0017407508215061904, 0.0015922694449783334, 0.0014267282165683897, 0.0012469961488860717, 0.001056296589672521, 0.0008581466323761644, 0.0006562897137528959, 0.0004546180492460159, 0.00025709020784146465, 0.00006764748603812152, -0.00010987539810307727, -0.00027183788464963423, -0.0004148795460643277, -0.0005360117384990369, -0.0006326924816840852, -0.0007028976477190042, -0.0007451789241688792, -0.0007587025992854616, -0.00074329154026803, -0.00069943732077003, -0.0006283153390612298, -0.0005317674541381928, -0.0004122736350806254, -0.0002728965175373041, -0.00011721898154916056, 0.000050727732077616854, 0.00022654511040849531, 0.0004055654685261572, 0.0005829725151929097, 0.0007539299891718014, 0.0009136968081628693, 0.001057727366040496, 0.0011817838315511687, 0.0012820768752281682, 0.0013553936088779655, 0.0013991567634035874, 0.0014114626691980761, 0.0013911994521601603, 0.001338158623469115, 0.0012529312652788224, 0.0011368782078168052, 0.0009924227419316402, 0.0008225367782712132, 0.0006311126153653432, 0.000422596130820185, 0.00020202566973633374, -0.000025140126274052846, -0.00025314012889659734, -0.00047605825978268214, -0.0006879757889763613, -0.0008831265836660278, -0.001056052961049124, -0.0012017570118505278, -0.0013158443800074546, -0.0013946550179738235, -0.00143537714856422, -0.0014361430413177665, -0.0013961025273104373, -0.0013154698934900741, -0.0011955448624625515, -0.001038705445344848, -0.000848370211905452, -0.0006289357238567322, -0.00038567726087640876, -0.00012464084542349136, 0.00014751424024790855, 0.00042365555592108265, 0.000696381707633601, 0.0009581911739190034, 0.0012016945125591883, 0.0014198129038021875, 0.0016059677163340854, 0.0017542822302381216, 0.0018597489437935104, 0.0019183843680031518, 0.001927370582069373, 0.0018851569558006424, 0.0017915316423764106, 0.0016476681649469273, 0.001456129721890939, 0.0012208322294896099, 0.0009469770920907817, 0.0006409478559993642, 0.0003101659717946291, -0.00003708137047780295, -0.0003918367361265021, -0.0007446984520565823, -0.0010860619549777095, -0.0014063764577860907, -0.001696397687712767, -0.0019474488265779002, -0.002151669227747982, -0.002302249012563522, -0.0023936395957784356, -0.0024217386080201218, -0.002
\ No newline at end of file
+};
+
+const float __leaf_table_fir32XHigh[512] = { 0.00001695726883388158, 0.000007675466747345142, 0.000009369969074343828, 0.000011279085806814155, 0.000013415806582636418, 0.00001579269222570207, 0.000018421887123570193, 0.00002131472780344219, 0.000024481596821410856, 0.000027931521966672674, 0.00003167253546774698, 0.00003571156802204514, 0.00004005385180859527, 0.00004470260388316558, 0.00004965901316017587, 0.00005492204008152043, 0.00006048845305842843, 0.00006635289665744708, 0.00007250665288501187, 0.0000789384885513108, 0.00008563367774264342, 0.00009257537368625661, 0.00009974252621593992, 0.00010711124658254552, 0.00011465337570751053, 0.00012233800287448705, 0.0001301305708291957, 0.00013799197926318244, 0.00014587929227876596, 0.00015374657372226684, 0.000161543746522965, 0.0001692168951984779, 0.00017670780599526637, 0.0001839550739841348, 0.00019089427588832468, 0.00019745677767765902, 0.00020357062514912954, 0.00020916210971675997, 0.0002141545274069432, 0.00021846768000518762, 0.00022202071352577454, 0.00022473075934779818, 0.00022651220405928228, 0.00022728022159501112, 0.0002269491553453425, 0.00022543136577234978, 0.00022264296187547415, 0.0002184968451898252, 0.00021291103136150344, 0.00020580302601570826, 0.00019709428929377538, 0.00018670887176183611, 0.00017457550213741742, 0.00016062706678436397, 0.0001448013951907719, 0.0001270421247034733, 0.00010729940118257597, 0.00008553038364340326, 0.00006169965119086659, 0.00003577991793585758, 0.000007752990690551504, -0.000022389783957090243, -0.00005464753929697829, -0.00008900834335751579, -0.0001254499161703673, -0.00016393632811230729, -0.0002044234554405178, -0.00024684930385593585, -0.000291146274450184, -0.0003372278537321366, -0.00038499799259658716, -0.00043434821843157495, -0.0004851539797413716, -0.000537279458928773, -0.0005905762825387684, -0.0006448805823763886, -0.0007000164290861944, -0.0007557967574505448, -0.0008120214850938284, -0.0008684784362018723, -0.000924945795118327, -0.0009811922513964621, -0.0010369764412132298, -0.0010920476659586364, -0.0011461469777671403, -0.0011990092591572569, -0.0012503626824092186, -0.001299930348337511, -0.0013474327014007098, -0.0013925895075579725, -0.0014351200205514354, -0.0014747442974922531, -0.0015111829899403478, -0.0015441601544571469, -0.0015734040663474662, -0.0015986504297413274, -0.0016196438588602622, -0.0016361410571864347, -0.0016479110521030553, -0.0016547353303458935, -0.0016564077630374632, -0.0016527363435263026, -0.0016435483225404998, -0.0016286956518505767, -0.0016080553748913375, -0.0015815237521207347, -0.0015490117157615478, -0.0015104528831698094, -0.001465823165002548, -0.0014151394219170251, -0.001358416974565312, -0.0012956736049528927, -0.0012270686956067616, -0.001152656073186285, -0.0010726190880063075, -0.0009871267066080157, -0.0008963952696138223, -0.0008006703533508123, -0.0007002299686741377, -0.0005953836139186328, -0.0004864723381871633, -0.0003738679720682553, -0.00025797228061734796, -0.00013921599931306062, -0.000018057446410729332, 0.00010501885598494471, 0.00022950336047164354, 0.00035486342787289485, 0.00048054572124056215, 0.0006059774135387564, 0.0007305691337782367, 0.0008537161333655127, 0.0009748030963864794, 0.0010932046990955392, 0.0012082904750566619, 0.0013194249851955161, 0.0014259733376771368, 0.001527303743896754, 0.0016227897956312704, 0.001711814456379326, 0.0017937737205012431, 0.0018680795987737412, 0.0019341641568400244, 0.0019914815935822066, 0.002039512595508008, 0.0020777684004774366, 0.002105792845115274, 0.002123165845077641, 0.0021295078285898787, 0.002124481676328226, 0.0021077949476114846,
\ No newline at end of file
+};
+const float __leaf_table_fir64XHigh[1024] = { 0.000022913289467138396, 0.0000053659189590266235, 0.0000059874129268137184, 0.000006651966903409214, 0.000007360859185648702, 0.000008116254962232182, 0.000008919034969234169, 0.000009771649771624484, 0.00001067513223630924, 0.000011631201209261511, 0.000012641797347255405, 0.00001370786337628007, 0.000014831347439124435, 0.00001601386713533323, 0.00001725659281802051, 0.000018561209740219567, 0.00001992924403854817, 0.00002136207377464052, 0.000022860960742170415, 0.00002442737159197627, 0.000026062787460182665, 0.00002776823090942686, 0.00002954497152514943, 0.000031394387750225555, 0.0000333174817796639, 0.00003531515315607694, 0.000037388352711032095, 0.00003953809180607858, 0.000041765124869157065, 0.00004406996003435772, 0.00004645314118637872, 0.00004891512239763599, 0.000051456283434024254, 0.000054076836400090634, 0.00005677675565218903, 0.00005955600371707976, 0.00006241451652786996, 0.0000653520878490535, 0.00006836828400903681, 0.00007146257248874113, 0.00007463447593939765, 0.00007788334878376474, 0.00008120828768996651, 0.00008460822180317937, 0.00008808197111592392, 0.00009162826246394013, 0.00009524561718379787, 0.0000989323217880672, 0.00010268641529207459, 0.00010650572670297642, 0.00011038797758602729, 0.00011433071893118852, 0.00011833127277888537, 0.0001223867211507117, 0.0001264939791526471, 0.0001306498943438022, 0.00013485120459499745, 0.0001390945080465441, 0.0001433761787732808, 0.0001476923508970611, 0.0001520390228045441, 0.00015641203030453322, 0.0001608069510673283, 0.00016521898552431528, 0.0001696430686231646, 0.0001740740165774301, 0.00017850636200629103, 0.0001829343448175031, 0.00018735205242694257, 0.000191753562437378, 0.00019613295450734188, 0.00020048414321002534, 0.00020480094575553342, 0.00020907706346541747, 0.00021330607883745088, 0.00021748145118260308, 0.00022159611743123445, 0.0002256425365807074, 0.0002296129456080256, 0.00023349938436811445, 0.00023729369397980805, 0.00024098757818162363, 0.0002445732198467269, 0.00024804316088030066, 0.00025138980120093706, 0.00025460575109546185, 0.00025768336513093236, 0.000260614166491108, 0.00026338871874574443, 0.000265996883919168, 0.00026842872851524756, 0.0002706745796903796, 0.00027272653793114146, 0.0002745790007011535, 0.0002762259706331217, 0.0002776600678298683, 0.0002788693645809233, 0.0002798371088712506, 0.0002805501390130166, 0.0002810071637276198, 0.0002812218387032567, 0.0002811853995116189, 0.0002808065268305555, 0.000280197444464886, 0.00027926833477321045, 0.0002780409500002217, 0.0002765020258372484, 0.00027464338678576605, 0.00027245845620400524, 0.0002699387312629035, 0.0002670776879725044, 0.0002638682356241208, 0.00026030295633048156, 0.0002563760351381784, 0.00025208079324849864, 0.00024741089077219824, 0.00024236092911432053, 0.00023692535214431433, 0.00023109887243694582, 0.0002248766203312044, 0.00021825436568685826, 0.0002112279751888258, 0.00020379342129965214, 0.00019594765441000844, 0.00018768793613519225, 0.00017901156693343162, 0.0001699163889323255, 0.00016040086314937234, 0.00015046397564821766, 0.00014010492118016657, 0.00012932331202118152, 0.00011811939311034222, 0.00010649390448787931, 0.00009444816369190979, 0.00008198390428241564, 0.00006910334679829026, 0.00005580947004681174, 0.000042105866991998394, 0.000027996578416041823, 0.000013486064917873263, -0.0000014205550195404417, -0.000016717431552354825, -0.00003239824489309241, -0.00004845619470295486, -0.00006488392097284113, -0.00008167344072768395, -0.00009881608266779326, -0.00011630254584578235, -0.000134122927443183, -0.0001522667855569792, -0.0001
\ No newline at end of file
+};
+
+
+const float* __leaf_tableref_firCoeffs[COEFFS_SIZE] = { __leaf_table_fir2XLow, __leaf_table_fir4XLow, __leaf_table_fir8XLow, __leaf_table_fir16XLow, __leaf_table_fir32XLow, __leaf_table_fir64XLow, __leaf_table_fir2XHigh, __leaf_table_fir4XHigh, __leaf_table_fir8XHigh, __leaf_table_fir16XHigh, __leaf_table_fir32XHigh, __leaf_table_fir64XHigh
+};
+
+const float __leaf_tablesize_firNumTaps[COEFFS_SIZE] = { 32, 32, 64, 128, 256, 256, 128, 256, 256, 512, 512, 1024 };
+
+
+#ifdef USE_SHAPER_TABLE
+const float __leaf_table_shaper1[SHAPER1_TABLE_SIZE] = {0.333061f, 0.333022f, 0.332983f, 0.332944f, 0.332905f, 0.332866f, 0.332827f, 0.332788f, 0.332749f, 0.33271f, 0.332671f, 0.332632f, 0.332593f, 0.332554f, 0.332515f, 0.332475f, 0.332436f, 0.332397f, 0.332358f, 0.332319f,
+0.33228f, 0.33224f, 0.332201f, 0.332162f, 0.332123f, 0.332083f, 0.332044f, 0.332005f, 0.331966f, 0.331926f, 0.331887f, 0.331848f, 0.331808f, 0.331769f, 0.33173f, 0.33169f, 0.331651f, 0.331611f, 0.331572f, 0.331533f,
+0.331493f, 0.331454f, 0.331414f, 0.331375f, 0.331335f, 0.331296f, 0.331256f, 0.331217f, 0.331177f, 0.331138f, 0.331098f, 0.331059f, 0.331019f, 0.330979f, 0.33094f, 0.3309f, 0.330861f, 0.330821f, 0.330781f, 0.330742f,
+0.330702f, 0.330662f, 0.330623f, 0.330583f, 0.330543f, 0.330504f, 0.330464f, 0.330424f, 0.330384f, 0.330344f, 0.330305f, 0.330265f, 0.330225f, 0.330185f, 0.330145f, 0.330106f, 0.330066f, 0.330026f, 0.329986f, 0.329946f,
+0.329906f, 0.329866f, 0.329826f, 0.329786f, 0.329746f, 0.329706f, 0.329667f, 0.329627f, 0.329587f, 0.329547f, 0.329506f, 0.329466f, 0.329426f, 0.329386f, 0.329346f, 0.329306f, 0.329266f, 0.329226f, 0.329186f, 0.329146f,
+0.329106f, 0.329065f, 0.329025f, 0.328985f, 0.328945f, 0.328905f, 0.328864f, 0.328824f, 0.328784f, 0.328744f, 0.328704f, 0.328663f, 0.328623f, 0.328583f, 0.328542f, 0.328502f, 0.328462f, 0.328421f, 0.328381f, 0.328341f,
+0.3283f, 0.32826f, 0.328219f, 0.328179f, 0.328139f, 0.328098f, 0.328058f, 0.328017f, 0.327977f, 0.327936f, 0.327896f, 0.327855f, 0.327815f, 0.327774f, 0.327734f, 0.327693f, 0.327653f, 0.327612f, 0.327571f, 0.327531f,
+0.32749f, 0.32745f, 0.327409f, 0.327368f, 0.327328f, 0.327287f, 0.327246f, 0.327206f, 0.327165f, 0.327124f, 0.327084f, 0.327043f, 0.327002f, 0.326961f, 0.32692f, 0.32688f, 0.326839f, 0.326798f, 0.326757f, 0.326716f,
+0.326676f, 0.326635f, 0.326594f, 0.326553f, 0.326512f, 0.326471f, 0.32643f, 0.326389f, 0.326348f, 0.326307f, 0.326266f, 0.326225f, 0.326184f, 0.326143f, 0.326102f, 0.326061f, 0.32602f, 0.325979f, 0.325938f, 0.325897f,
+0.325856f, 0.325815f, 0.325774f, 0.325733f, 0.325692f, 0.325651f, 0.325609f, 0.325568f, 0.325527f, 0.325486f, 0.325445f, 0.325403f, 0.325362f, 0.325321f, 0.32528f, 0.325239f, 0.325197f, 0.325156f, 0.325115f, 0.325073f,
+0.325032f, 0.324991f, 0.324949f, 0.324908f, 0.324867f, 0.324825f, 0.324784f, 0.324743f, 0.324701f, 0.32466f, 0.324618f, 0.324577f, 0.324535f, 0.324494f, 0.324452f, 0.324411f, 0.324369f, 0.324328f, 0.324286f, 0.324245f,
+0.324203f, 0.324162f, 0.32412f, 0.324079f, 0.324037f, 0.323995f, 0.323954f, 0.323912f, 0.323871f, 0.323829f, 0.323787f, 0.323746f, 0.323704f, 0.323662f, 0.32362f, 0.323579f, 0.323537f, 0.323495f, 0.323453f, 0.323412f,
+0.32337f, 0.323328f, 0.323286f, 0.323244f, 0.323203f, 0.323161f, 0.323119f, 0.323077f, 0.323035f, 0.322993f, 0.322951f, 0.32291f, 0.322868f, 0.322826f, 0.322784f, 0.322742f, 0.3227f, 0.322658f, 0.322616f, 0.322574f,
+0.322532f, 0.32249f, 0.322448f, 0.322406f, 0.322364f, 0.322322f, 0.322279f, 0.322237f, 0.322195f, 0.322153f, 0.322111f, 0.322069f, 0.322027f, 0.321985f, 0.321942f, 0.3219f, 0.321858f, 0.321816f, 0.321774f, 0.321731f,
+0.321689f, 0.321647f, 0.321605f, 0.321562f, 0.32152f, 0.321478f, 0.321435f, 0.321393f, 0.321351f, 0.321308f, 0.321266f, 0.321224f, 0.321181f, 0.321139f, 0.321096f, 0.321054f, 0.321012f, 0.320969f, 0.320927f, 0.320884f,
+0.320842f, 0.320799f, 0.320757f, 0.320714f, 0.320672f, 0.320629f, 0.320587f, 0.320544f, 0.320501f, 0.320459f, 0.320416f, 0.320374f, 0.320331f, 0.320288f, 0.320246f, 0.320203f, 0.32016f, 0.320118f, 0.320075f, 0.320032f,
+0.31999f, 0.319947f, 0.319904f, 0.319862f, 0.319819f, 0.319776f, 0.319733f, 0.31969f, 0.319648f, 0.319605f, 0.319562f, 0.319519f, 0.319476f, 0.319433f, 0.319391f, 0.319348f, 0.319305f, 0.319262f, 0.319219f, 0.319176f,
+0.319133f, 0.31909f, 0.319047f, 0.319004f, 0.318961f, 0.318918f, 0.318875f, 0.318832f, 0.318789f, 0.318746f, 0.318703f, 0.31866f, 0.318617f, 0.318574f, 0.318531f, 0.318488f, 0.318444f, 0.318401f, 0.318358f, 0.318315f,
+0.318272f, 0.318229f, 0.318185f, 0.318142f, 0.318099f, 0.318056f, 0.318013f, 0.317969f, 0.317926f, 0.317883f, 0.317839f, 0.317796f, 0.317753f, 0.31771f, 0.317666f, 0.317623f, 0.31758f, 0.317536f, 0.317493f, 0.317449f,
+0.317406f, 0.317363f, 0.317319f, 0.317276f, 0.317232f, 0.317189f, 0.317145f, 0.317102f, 0.317058f, 0.317015f, 0.316971f, 0.316928f, 0.316884f, 0.316841f, 0.316797f, 0.316754f, 0.31671f, 0.316666f, 0.316623f, 0.316579f,
+0.316536f, 0.316492f, 0.316448f, 0.316405f, 0.316361f, 0.316317f, 0.316274f, 0.31623f, 0.316186f, 0.316142f, 0.316099f, 0.316055f, 0.316011f, 0.315967f, 0.315924f, 0.31588f, 0.315836f, 0.315792f, 0.315748f, 0.315704f,
+0.315661f, 0.315617f, 0.315573f, 0.315529f, 0.315485f, 0.315441f, 0.315397f, 0.315353f, 0.315309f, 0.315265f, 0.315221f, 0.315177f, 0.315133f, 0.315089f, 0.315045f, 0.315001f, 0.314957f, 0.314913f, 0.314869f, 0.314825f,
+0.314781f, 0.314737f, 0.314693f, 0.314649f, 0.314604f, 0.31456f, 0.314516f, 0.314472f, 0.314428f, 0.314384f, 0.314339f, 0.314295f, 0.314251f, 0.314207f, 0.314162f, 0.314118f, 0.314074f, 0.31403f, 0.313985f, 0.313941f,
+0.313897f, 0.313852f, 0.313808f, 0.313764f, 0.313719f, 0.313675f, 0.313631f, 0.313586f, 0.313542f, 0.313497f, 0.313453f, 0.313409f, 0.313364f, 0.31332f, 0.313275f, 0.313231f, 0.313186f, 0.313142f, 0.313097f, 0.313053f,
+0.313008f, 0.312963f, 0.312919f, 0.312874f, 0.31283f, 0.312785f, 0.312741f, 0.312696f, 0.312651f, 0.312607f, 0.312562f, 0.312517f, 0.312473f, 0.312428f, 0.312383f, 0.312338f, 0.312294f, 0.312249f, 0.312204f, 0.31216f,
+0.312115f, 0.31207f, 0.312025f, 0.31198f, 0.311936f, 0.311891f, 0.311846f, 0.311801f, 0.311756f, 0.311711f, 0.311666f, 0.311621f, 0.311577f, 0.311532f, 0.311487f, 0.311442f, 0.311397f, 0.311352f, 0.311307f, 0.311262f,
+0.311217f, 0.311172f, 0.311127f, 0.311082f, 0.311037f, 0.310992f, 0.310947f, 0.310902f, 0.310857f, 0.310811f, 0.310766f, 0.310721f, 0.310676f, 0.310631f, 0.310586f, 0.310541f, 0.310495f, 0.31045f, 0.310405f, 0.31036f,
+0.310315f, 0.310269f, 0.310224f, 0.310179f, 0.310134f, 0.310088f, 0.310043f, 0.309998f, 0.309952f, 0.309907f, 0.309862f, 0.309816f, 0.309771f, 0.309726f, 0.30968f, 0.309635f, 0.309589f, 0.309544f, 0.309499f, 0.309453f,
+0.309408f, 0.309362f, 0.309317f, 0.309271f, 0.309226f, 0.30918f, 0.309135f, 0.309089f, 0.309044f, 0.308998f, 0.308953f, 0.308907f, 0.308861f, 0.308816f, 0.30877f, 0.308725f, 0.308679f, 0.308633f, 0.308588f, 0.308542f,
+0.308496f, 0.308451f, 0.308405f, 0.308359f, 0.308313f, 0.308268f, 0.308222f, 0.308176f, 0.30813f, 0.308085f, 0.308039f, 0.307993f, 0.307947f, 0.307901f, 0.307856f, 0.30781f, 0.307764f, 0.307718f, 0.307672f, 0.307626f,
+0.30758f, 0.307534f, 0.307489f, 0.307443f, 0.307397f, 0.307351f, 0.307305f, 0.307259f, 0.307213f, 0.307167f, 0.307121f, 0.307075f, 0.307029f, 0.306983f, 0.306937f, 0.30689f, 0.306844f, 0.306798f, 0.306752f, 0.306706f,
+0.30666f, 0.306614f, 0.306568f, 0.306522f, 0.306475f, 0.306429f, 0.306383f, 0.306337f, 0.306291f, 0.306244f, 0.306198f, 0.306152f, 0.306106f, 0.306059f, 0.306013f, 0.305967f, 0.30592f, 0.305874f, 0.305828f, 0.305781f,
+0.305735f, 0.305689f, 0.305642f, 0.305596f, 0.30555f, 0.305503f, 0.305457f, 0.30541f, 0.305364f, 0.305317f, 0.305271f, 0.305224f, 0.305178f, 0.305131f, 0.305085f, 0.305038f, 0.304992f, 0.304945f, 0.304899f, 0.304852f,
+0.304806f, 0.304759f, 0.304713f, 0.304666f, 0.304619f, 0.304573f, 0.304526f, 0.304479f, 0.304433f, 0.304386f, 0.304339f, 0.304293f, 0.304246f, 0.304199f, 0.304152f, 0.304106f, 0.304059f, 0.304012f, 0.303965f, 0.303919f,
+0.303872f, 0.303825f, 0.303778f, 0.303731f, 0.303685f, 0.303638f, 0.303591f, 0.303544f, 0.303497f, 0.30345f, 0.303403f, 0.303356f, 0.303309f, 0.303262f, 0.303216f, 0.303169f, 0.303122f, 0.303075f, 0.303028f, 0.302981f,
+0.302934f, 0.302887f, 0.302839f, 0.302792f, 0.302745f, 0.302698f, 0.302651f, 0.302604f, 0.302557f, 0.30251f, 0.302463f, 0.302416f, 0.302368f, 0.302321f, 0.302274f, 0.302227f, 0.30218f, 0.302133f, 0.302085f, 0.302038f,
+0.301991f, 0.301944f, 0.301896f, 0.301849f, 0.301802f, 0.301754f, 0.301707f, 0.30166f, 0.301612f, 0.301565f, 0.301518f, 0.30147f, 0.301423f, 0.301376f, 0.301328f, 0.301281f, 0.301233f, 0.301186f, 0.301139f, 0.301091f,
+0.301044f, 0.300996f, 0.300949f, 0.300901f, 0.300854f, 0.300806f, 0.300759f, 0.300711f, 0.300664f, 0.300616f, 0.300568f, 0.300521f, 0.300473f, 0.300426f, 0.300378f, 0.30033f, 0.300283f, 0.300235f, 0.300187f, 0.30014f,
+0.300092f, 0.300044f, 0.299997f, 0.299949f, 0.299901f, 0.299853f, 0.299806f, 0.299758f, 0.29971f, 0.299662f, 0.299615f, 0.299567f, 0.299519f, 0.299471f, 0.299423f, 0.299375f, 0.299328f, 0.29928f, 0.299232f, 0.299184f,
+0.299136f, 0.299088f, 0.29904f, 0.298992f, 0.298944f, 0.298896f, 0.298848f, 0.2988f, 0.298752f, 0.298704f, 0.298656f, 0.298608f, 0.29856f, 0.298512f, 0.298464f, 0.298416f, 0.298368f, 0.29832f, 0.298272f, 0.298224f,
+0.298176f, 0.298127f, 0.298079f, 0.298031f, 0.297983f, 0.297935f, 0.297887f, 0.297838f, 0.29779f, 0.297742f, 0.297694f, 0.297645f, 0.297597f, 0.297549f, 0.297501f, 0.297452f, 0.297404f, 0.297356f, 0.297307f, 0.297259f,
+0.297211f, 0.297162f, 0.297114f, 0.297066f, 0.297017f, 0.296969f, 0.29692f, 0.296872f, 0.296823f, 0.296775f, 0.296727f, 0.296678f, 0.29663f, 0.296581f, 0.296533f, 0.296484f, 0.296436f, 0.296387f, 0.296339f, 0.29629f,
+0.296241f, 0.296193f, 0.296144f, 0.296096f, 0.296047f, 0.295998f, 0.29595f, 0.295901f, 0.295852f, 0.295804f, 0.295755f, 0.295706f, 0.295658f, 0.295609f, 0.29556f, 0.295512f, 0.295463f, 0.295414f, 0.295365f, 0.295317f,
+0.295268f, 0.295219f, 0.29517f, 0.295121f, 0.295073f, 0.295024f, 0.294975f, 0.294926f, 0.294877f, 0.294828f, 0.294779f, 0.29473f, 0.294682f, 0.294633f, 0.294584f, 0.294535f, 0.294486f, 0.294437f, 0.294388f, 0.294339f,
+0.29429f, 0.294241f, 0.294192f, 0.294143f, 0.294094f, 0.294045f, 0.293996f, 0.293946f, 0.293897f, 0.293848f, 0.293799f, 0.29375f, 0.293701f, 0.293652f, 0.293603f, 0.293553f, 0.293504f, 0.293455f, 0.293406f, 0.293357f,
+0.293307f, 0.293258f, 0.293209f, 0.29316f, 0.29311f, 0.293061f, 0.293012f, 0.292963f, 0.292913f, 0.292864f, 0.292815f, 0.292765f, 0.292716f, 0.292667f, 0.292617f, 0.292568f, 0.292518f, 0.292469f, 0.29242f, 0.29237f,
+0.292321f, 0.292271f, 0.292222f, 0.292172f, 0.292123f, 0.292073f, 0.292024f, 0.291974f, 0.291925f, 0.291875f, 0.291826f, 0.291776f, 0.291727f, 0.291677f, 0.291627f, 0.291578f, 0.291528f, 0.291479f, 0.291429f, 0.291379f,
+0.29133f, 0.29128f, 0.29123f, 0.291181f, 0.291131f, 0.291081f, 0.291031f, 0.290982f, 0.290932f, 0.290882f, 0.290832f, 0.290783f, 0.290733f, 0.290683f, 0.290633f, 0.290583f, 0.290534f, 0.290484f, 0.290434f, 0.290384f,
+0.290334f, 0.290284f, 0.290234f, 0.290185f, 0.290135f, 0.290085f, 0.290035f, 0.289985f, 0.289935f, 0.289885f, 0.289835f, 0.289785f, 0.289735f, 0.289685f, 0.289635f, 0.289585f, 0.289535f, 0.289485f, 0.289435f, 0.289385f,
+0.289335f, 0.289284f, 0.289234f, 0.289184f, 0.289134f, 0.289084f, 0.289034f, 0.288984f, 0.288933f, 0.288883f, 0.288833f, 0.288783f, 0.288733f, 0.288682f, 0.288632f, 0.288582f, 0.288532f, 0.288481f, 0.288431f, 0.288381f,
+0.28833f, 0.28828f, 0.28823f, 0.288179f, 0.288129f, 0.288079f, 0.288028f, 0.287978f, 0.287928f, 0.287877f, 0.287827f, 0.287776f, 0.287726f, 0.287676f, 0.287625f, 0.287575f, 0.287524f, 0.287474f, 0.287423f, 0.287373f,
+0.287322f, 0.287272f, 0.287221f, 0.287171f, 0.28712f, 0.287069f, 0.287019f, 0.286968f, 0.286918f, 0.286867f, 0.286816f, 0.286766f, 0.286715f, 0.286664f, 0.286614f, 0.286563f, 0.286512f, 0.286462f, 0.286411f, 0.28636f,
+0.286309f, 0.286259f, 0.286208f, 0.286157f, 0.286106f, 0.286056f, 0.286005f, 0.285954f, 0.285903f, 0.285852f, 0.285802f, 0.285751f, 0.2857f, 0.285649f, 0.285598f, 0.285547f, 0.285496f, 0.285445f, 0.285394f, 0.285344f,
+0.285293f, 0.285242f, 0.285191f, 0.28514f, 0.285089f, 0.285038f, 0.284987f, 0.284936f, 0.284885f, 0.284834f, 0.284783f, 0.284731f, 0.28468f, 0.284629f, 0.284578f, 0.284527f, 0.284476f, 0.284425f, 0.284374f, 0.284323f,
+0.284271f, 0.28422f, 0.284169f, 0.284118f, 0.284067f, 0.284015f, 0.283964f, 0.283913f, 0.283862f, 0.28381f, 0.283759f, 0.283708f, 0.283657f, 0.283605f, 0.283554f, 0.283503f, 0.283451f, 0.2834f, 0.283349f, 0.283297f,
+0.283246f, 0.283195f, 0.283143f, 0.283092f, 0.28304f, 0.282989f, 0.282937f, 0.282886f, 0.282835f, 0.282783f, 0.282732f, 0.28268f, 0.282629f, 0.282577f, 0.282526f, 0.282474f, 0.282422f, 0.282371f, 0.282319f, 0.282268f,
+0.282216f, 0.282165f, 0.282113f, 0.282061f, 0.28201f, 0.281958f, 0.281906f, 0.281855f, 0.281803f, 0.281751f, 0.2817f, 0.281648f, 0.281596f, 0.281545f, 0.281493f, 0.281441f, 0.281389f, 0.281338f, 0.281286f, 0.281234f,
+0.281182f, 0.28113f, 0.281079f, 0.281027f, 0.280975f, 0.280923f, 0.280871f, 0.280819f, 0.280767f, 0.280716f, 0.280664f, 0.280612f, 0.28056f, 0.280508f, 0.280456f, 0.280404f, 0.280352f, 0.2803f, 0.280248f, 0.280196f,
+0.280144f, 0.280092f, 0.28004f, 0.279988f, 0.279936f, 0.279884f, 0.279832f, 0.27978f, 0.279728f, 0.279675f, 0.279623f, 0.279571f, 0.279519f, 0.279467f, 0.279415f, 0.279363f, 0.27931f, 0.279258f, 0.279206f, 0.279154f,
+0.279102f, 0.279049f, 0.278997f, 0.278945f, 0.278893f, 0.27884f, 0.278788f, 0.278736f, 0.278684f, 0.278631f, 0.278579f, 0.278527f, 0.278474f, 0.278422f, 0.278369f, 0.278317f, 0.278265f, 0.278212f, 0.27816f, 0.278107f,
+0.278055f, 0.278003f, 0.27795f, 0.277898f, 0.277845f, 0.277793f, 0.27774f, 0.277688f, 0.277635f, 0.277583f, 0.27753f, 0.277478f, 0.277425f, 0.277372f, 0.27732f, 0.277267f, 0.277215f, 0.277162f, 0.277109f, 0.277057f,
+0.277004f, 0.276952f, 0.276899f, 0.276846f, 0.276794f, 0.276741f, 0.276688f, 0.276635f, 0.276583f, 0.27653f, 0.276477f, 0.276424f, 0.276372f, 0.276319f, 0.276266f, 0.276213f, 0.276161f, 0.276108f, 0.276055f, 0.276002f,
+0.275949f, 0.275896f, 0.275843f, 0.275791f, 0.275738f, 0.275685f, 0.275632f, 0.275579f, 0.275526f, 0.275473f, 0.27542f, 0.275367f, 0.275314f, 0.275261f, 0.275208f, 0.275155f, 0.275102f, 0.275049f, 0.274996f, 0.274943f,
+0.27489f, 0.274837f, 0.274784f, 0.274731f, 0.274678f, 0.274625f, 0.274571f, 0.274518f, 0.274465f, 0.274412f, 0.274359f, 0.274306f, 0.274252f, 0.274199f, 0.274146f, 0.274093f, 0.27404f, 0.273986f, 0.273933f, 0.27388f,
+0.273827f, 0.273773f, 0.27372f, 0.273667f, 0.273613f, 0.27356f, 0.273507f, 0.273453f, 0.2734f, 0.273347f, 0.273293f, 0.27324f, 0.273187f, 0.273133f, 0.27308f, 0.273026f, 0.272973f, 0.272919f, 0.272866f, 0.272813f,
+0.272759f, 0.272706f, 0.272652f, 0.272599f, 0.272545f, 0.272492f, 0.272438f, 0.272384f, 0.272331f, 0.272277f, 0.272224f, 0.27217f, 0.272117f, 0.272063f, 0.272009f, 0.271956f, 0.271902f, 0.271848f, 0.271795f, 0.271741f,
+0.271687f, 0.271634f, 0.27158f, 0.271526f, 0.271473f, 0.271419f, 0.271365f, 0.271311f, 0.271258f, 0.271204f, 0.27115f, 0.271096f, 0.271042f, 0.270989f, 0.270935f, 0.270881f, 0.270827f, 0.270773f, 0.270719f, 0.270665f,
+0.270612f, 0.270558f, 0.270504f, 0.27045f, 0.270396f, 0.270342f, 0.270288f, 0.270234f, 0.27018f, 0.270126f, 0.270072f, 0.270018f, 0.269964f, 0.26991f, 0.269856f, 0.269802f, 0.269748f, 0.269694f, 0.26964f, 0.269586f,
+0.269532f, 0.269477f, 0.269423f, 0.269369f, 0.269315f, 0.269261f, 0.269207f, 0.269153f, 0.269098f, 0.269044f, 0.26899f, 0.268936f, 0.268882f, 0.268827f, 0.268773f, 0.268719f, 0.268665f, 0.26861f, 0.268556f, 0.268502f,
+0.268448f, 0.268393f, 0.268339f, 0.268285f, 0.26823f, 0.268176f, 0.268121f, 0.268067f, 0.268013f, 0.267958f, 0.267904f, 0.26785f, 0.267795f, 0.267741f, 0.267686f, 0.267632f, 0.267577f, 0.267523f, 0.267468f, 0.267414f,
+0.267359f, 0.267305f, 0.26725f, 0.267196f, 0.267141f, 0.267087f, 0.267032f, 0.266978f, 0.266923f, 0.266868f, 0.266814f, 0.266759f, 0.266704f, 0.26665f, 0.266595f, 0.266541f, 0.266486f, 0.266431f, 0.266376f, 0.266322f,
+0.266267f, 0.266212f, 0.266158f, 0.266103f, 0.266048f, 0.265993f, 0.265939f, 0.265884f, 0.265829f, 0.265774f, 0.265719f, 0.265665f, 0.26561f, 0.265555f, 0.2655f, 0.265445f, 0.26539f, 0.265335f, 0.265281f, 0.265226f,
+0.265171f, 0.265116f, 0.265061f, 0.265006f, 0.264951f, 0.264896f, 0.264841f, 0.264786f, 0.264731f, 0.264676f, 0.264621f, 0.264566f, 0.264511f, 0.264456f, 0.264401f, 0.264346f, 0.264291f, 0.264236f, 0.26418f, 0.264125f,
+0.26407f, 0.264015f, 0.26396f, 0.263905f, 0.26385f, 0.263794f, 0.263739f, 0.263684f, 0.263629f, 0.263574f, 0.263518f, 0.263463f, 0.263408f, 0.263353f, 0.263298f, 0.263242f, 0.263187f, 0.263132f, 0.263076f, 0.263021f,
+0.262966f, 0.26291f, 0.262855f, 0.2628f, 0.262744f, 0.262689f, 0.262634f, 0.262578f, 0.262523f, 0.262467f, 0.262412f, 0.262357f, 0.262301f, 0.262246f, 0.26219f, 0.262135f, 0.262079f, 0.262024f, 0.261968f, 0.261913f,
+0.261857f, 0.261802f, 0.261746f, 0.261691f, 0.261635f, 0.261579f, 0.261524f, 0.261468f, 0.261413f, 0.261357f, 0.261301f, 0.261246f, 0.26119f, 0.261134f, 0.261079f, 0.261023f, 0.260967f, 0.260912f, 0.260856f, 0.2608f,
+0.260745f, 0.260689f, 0.260633f, 0.260577f, 0.260522f, 0.260466f, 0.26041f, 0.260354f, 0.260298f, 0.260243f, 0.260187f, 0.260131f, 0.260075f, 0.260019f, 0.259963f, 0.259907f, 0.259852f, 0.259796f, 0.25974f, 0.259684f,
+0.259628f, 0.259572f, 0.259516f, 0.25946f, 0.259404f, 0.259348f, 0.259292f, 0.259236f, 0.25918f, 0.259124f, 0.259068f, 0.259012f, 0.258956f, 0.2589f, 0.258844f, 0.258788f, 0.258732f, 0.258676f, 0.258619f, 0.258563f,
+0.258507f, 0.258451f, 0.258395f, 0.258339f, 0.258283f, 0.258226f, 0.25817f, 0.258114f, 0.258058f, 0.258002f, 0.257945f, 0.257889f, 0.257833f, 0.257777f, 0.25772f, 0.257664f, 0.257608f, 0.257552f, 0.257495f, 0.257439f,
+0.257383f, 0.257326f, 0.25727f, 0.257214f, 0.257157f, 0.257101f, 0.257044f, 0.256988f, 0.256932f, 0.256875f, 0.256819f, 0.256762f, 0.256706f, 0.256649f, 0.256593f, 0.256536f, 0.25648f, 0.256423f, 0.256367f, 0.25631f,
+0.256254f, 0.256197f, 0.256141f, 0.256084f, 0.256028f, 0.255971f, 0.255915f, 0.255858f, 0.255801f, 0.255745f, 0.255688f, 0.255631f, 0.255575f, 0.255518f, 0.255461f, 0.255405f, 0.255348f, 0.255291f, 0.255235f, 0.255178f,
+0.255121f, 0.255064f, 0.255008f, 0.254951f, 0.254894f, 0.254837f, 0.254781f, 0.254724f, 0.254667f, 0.25461f, 0.254553f, 0.254497f, 0.25444f, 0.254383f, 0.254326f, 0.254269f, 0.254212f, 0.254155f, 0.254098f, 0.254041f,
+0.253985f, 0.253928f, 0.253871f, 0.253814f, 0.253757f, 0.2537f, 0.253643f, 0.253586f, 0.253529f, 0.253472f, 0.253415f, 0.253358f, 0.253301f, 0.253244f, 0.253187f, 0.253129f, 0.253072f, 0.253015f, 0.252958f, 0.252901f,
+0.252844f, 0.252787f, 0.25273f, 0.252673f, 0.252615f, 0.252558f, 0.252501f, 0.252444f, 0.252387f, 0.252329f, 0.252272f, 0.252215f, 0.252158f, 0.2521f, 0.252043f, 0.251986f, 0.251929f, 0.251871f, 0.251814f, 0.251757f,
+0.251699f, 0.251642f, 0.251585f, 0.251527f, 0.25147f, 0.251413f, 0.251355f, 0.251298f, 0.25124f, 0.251183f, 0.251126f, 0.251068f, 0.251011f, 0.250953f, 0.250896f, 0.250838f, 0.250781f, 0.250723f, 0.250666f, 0.250608f,
+0.250551f, 0.250493f, 0.250436f, 0.250378f, 0.250321f, 0.250263f, 0.250206f, 0.250148f, 0.25009f, 0.250033f, 0.249975f, 0.249918f, 0.24986f, 0.249802f, 0.249745f, 0.249687f, 0.249629f, 0.249572f, 0.249514f, 0.249456f,
+0.249398f, 0.249341f, 0.249283f, 0.249225f, 0.249167f, 0.24911f, 0.249052f, 0.248994f, 0.248936f, 0.248879f, 0.248821f, 0.248763f, 0.248705f, 0.248647f, 0.248589f, 0.248531f, 0.248474f, 0.248416f, 0.248358f, 0.2483f,
+0.248242f, 0.248184f, 0.248126f, 0.248068f, 0.24801f, 0.247952f, 0.247894f, 0.247836f, 0.247778f, 0.24772f, 0.247662f, 0.247604f, 0.247546f, 0.247488f, 0.24743f, 0.247372f, 0.247314f, 0.247256f, 0.247198f, 0.24714f,
+0.247082f, 0.247024f, 0.246965f, 0.246907f, 0.246849f, 0.246791f, 0.246733f, 0.246675f, 0.246617f, 0.246558f, 0.2465f, 0.246442f, 0.246384f, 0.246325f, 0.246267f, 0.246209f, 0.246151f, 0.246092f, 0.246034f, 0.245976f,
+0.245918f, 0.245859f, 0.245801f, 0.245743f, 0.245684f, 0.245626f, 0.245568f, 0.245509f, 0.245451f, 0.245392f, 0.245334f, 0.245276f, 0.245217f, 0.245159f, 0.2451f, 0.245042f, 0.244983f, 0.244925f, 0.244866f, 0.244808f,
+0.244749f, 0.244691f, 0.244632f, 0.244574f, 0.244515f, 0.244457f, 0.244398f, 0.24434f, 0.244281f, 0.244223f, 0.244164f, 0.244105f, 0.244047f, 0.243988f, 0.24393f, 0.243871f, 0.243812f, 0.243754f, 0.243695f, 0.243636f,
+0.243578f, 0.243519f, 0.24346f, 0.243401f, 0.243343f, 0.243284f, 0.243225f, 0.243166f, 0.243108f, 0.243049f, 0.24299f, 0.242931f, 0.242872f, 0.242814f, 0.242755f, 0.242696f, 0.242637f, 0.242578f, 0.242519f, 0.242461f,
+0.242402f, 0.242343f, 0.242284f, 0.242225f, 0.242166f, 0.242107f, 0.242048f, 0.241989f, 0.24193f, 0.241871f, 0.241812f, 0.241753f, 0.241694f, 0.241635f, 0.241576f, 0.241517f, 0.241458f, 0.241399f, 0.24134f, 0.241281f,
+0.241222f, 0.241163f, 0.241104f, 0.241045f, 0.240986f, 0.240926f, 0.240867f, 0.240808f, 0.240749f, 0.24069f, 0.240631f, 0.240572f, 0.240512f, 0.240453f, 0.240394f, 0.240335f, 0.240275f, 0.240216f, 0.240157f, 0.240098f,
+0.240038f, 0.239979f, 0.23992f, 0.239861f, 0.239801f, 0.239742f, 0.239683f, 0.239623f, 0.239564f, 0.239505f, 0.239445f, 0.239386f, 0.239327f, 0.239267f, 0.239208f, 0.239148f, 0.239089f, 0.239029f, 0.23897f, 0.238911f,
+0.238851f, 0.238792f, 0.238732f, 0.238673f, 0.238613f, 0.238554f, 0.238494f, 0.238435f, 0.238375f, 0.238316f, 0.238256f, 0.238196f, 0.238137f, 0.238077f, 0.238018f, 0.237958f, 0.237898f, 0.237839f, 0.237779f, 0.23772f,
+0.23766f, 0.2376f, 0.237541f, 0.237481f, 0.237421f, 0.237362f, 0.237302f, 0.237242f, 0.237182f, 0.237123f, 0.237063f, 0.237003f, 0.236943f, 0.236884f, 0.236824f, 0.236764f, 0.236704f, 0.236644f, 0.236585f, 0.236525f,
+0.236465f, 0.236405f, 0.236345f, 0.236285f, 0.236225f, 0.236166f, 0.236106f, 0.236046f, 0.235986f, 0.235926f, 0.235866f, 0.235806f, 0.235746f, 0.235686f, 0.235626f, 0.235566f, 0.235506f, 0.235446f, 0.235386f, 0.235326f,
+0.235266f, 0.235206f, 0.235146f, 0.235086f, 0.235026f, 0.234966f, 0.234906f, 0.234846f, 0.234786f, 0.234725f, 0.234665f, 0.234605f, 0.234545f, 0.234485f, 0.234425f, 0.234365f, 0.234304f, 0.234244f, 0.234184f, 0.234124f,
+0.234064f, 0.234003f, 0.233943f, 0.233883f, 0.233823f, 0.233762f, 0.233702f, 0.233642f, 0.233581f, 0.233521f, 0.233461f, 0.233401f, 0.23334f, 0.23328f, 0.233219f, 0.233159f, 0.233099f, 0.233038f, 0.232978f, 0.232918f,
+0.232857f, 0.232797f, 0.232736f, 0.232676f, 0.232615f, 0.232555f, 0.232495f, 0.232434f, 0.232374f, 0.232313f, 0.232253f, 0.232192f, 0.232132f, 0.232071f, 0.23201f, 0.23195f, 0.231889f, 0.231829f, 0.231768f, 0.231708f,
+0.231647f, 0.231586f, 0.231526f, 0.231465f, 0.231405f, 0.231344f, 0.231283f, 0.231223f, 0.231162f, 0.231101f, 0.231041f, 0.23098f, 0.230919f, 0.230858f, 0.230798f, 0.230737f, 0.230676f, 0.230615f, 0.230555f, 0.230494f,
+0.230433f, 0.230372f, 0.230312f, 0.230251f, 0.23019f, 0.230129f, 0.230068f, 0.230007f, 0.229947f, 0.229886f, 0.229825f, 0.229764f, 0.229703f, 0.229642f, 0.229581f, 0.22952f, 0.229459f, 0.229398f, 0.229337f, 0.229277f,
+0.229216f, 0.229155f, 0.229094f, 0.229033f, 0.228972f, 0.228911f, 0.22885f, 0.228788f, 0.228727f, 0.228666f, 0.228605f, 0.228544f, 0.228483f, 0.228422f, 0.228361f, 0.2283f, 0.228239f, 0.228178f, 0.228116f, 0.228055f,
+0.227994f, 0.227933f, 0.227872f, 0.227811f, 0.227749f, 0.227688f, 0.227627f, 0.227566f, 0.227505f, 0.227443f, 0.227382f, 0.227321f, 0.22726f, 0.227198f, 0.227137f, 0.227076f, 0.227014f, 0.226953f, 0.226892f, 0.22683f,
+0.226769f, 0.226708f, 0.226646f, 0.226585f, 0.226524f, 0.226462f, 0.226401f, 0.226339f, 0.226278f, 0.226217f, 0.226155f, 0.226094f, 0.226032f, 0.225971f, 0.225909f, 0.225848f, 0.225786f, 0.225725f, 0.225663f, 0.225602f,
+0.22554f, 0.225479f, 0.225417f, 0.225356f, 0.225294f, 0.225233f, 0.225171f, 0.225109f, 0.225048f, 0.224986f, 0.224925f, 0.224863f, 0.224801f, 0.22474f, 0.224678f, 0.224616f, 0.224555f, 0.224493f, 0.224431f, 0.22437f,
+0.224308f, 0.224246f, 0.224184f, 0.224123f, 0.224061f, 0.223999f, 0.223937f, 0.223876f, 0.223814f, 0.223752f, 0.22369f, 0.223628f, 0.223567f, 0.223505f, 0.223443f, 0.223381f, 0.223319f, 0.223257f, 0.223195f, 0.223134f,
+0.223072f, 0.22301f, 0.222948f, 0.222886f, 0.222824f, 0.222762f, 0.2227f, 0.222638f, 0.222576f, 0.222514f, 0.222452f, 0.22239f, 0.222328f, 0.222266f, 0.222204f, 0.222142f, 0.22208f, 0.222018f, 0.221956f, 0.221894f,
+0.221832f, 0.22177f, 0.221708f, 0.221646f, 0.221583f, 0.221521f, 0.221459f, 0.221397f, 0.221335f, 0.221273f, 0.221211f, 0.221148f, 0.221086f, 0.221024f, 0.220962f, 0.2209f, 0.220837f, 0.220775f, 0.220713f, 0.220651f,
+0.220588f, 0.220526f, 0.220464f, 0.220402f, 0.220339f, 0.220277f, 0.220215f, 0.220152f, 0.22009f, 0.220028f, 0.219965f, 0.219903f, 0.219841f, 0.219778f, 0.219716f, 0.219653f, 0.219591f, 0.219529f, 0.219466f, 0.219404f,
+0.219341f, 0.219279f, 0.219216f, 0.219154f, 0.219091f, 0.219029f, 0.218966f, 0.218904f, 0.218841f, 0.218779f, 0.218716f, 0.218654f, 0.218591f, 0.218529f, 0.218466f, 0.218403f, 0.218341f, 0.218278f, 0.218216f, 0.218153f,
+0.21809f, 0.218028f, 0.217965f, 0.217903f, 0.21784f, 0.217777f, 0.217714f, 0.217652f, 0.217589f, 0.217526f, 0.217464f, 0.217401f, 0.217338f, 0.217275f, 0.217213f, 0.21715f, 0.217087f, 0.217024f, 0.216962f, 0.216899f,
+0.216836f, 0.216773f, 0.21671f, 0.216648f, 0.216585f, 0.216522f, 0.216459f, 0.216396f, 0.216333f, 0.21627f, 0.216207f, 0.216145f, 0.216082f, 0.216019f, 0.215956f, 0.215893f, 0.21583f, 0.215767f, 0.215704f, 0.215641f,
+0.215578f, 0.215515f, 0.215452f, 0.215389f, 0.215326f, 0.215263f, 0.2152f, 0.215137f, 0.215074f, 0.215011f, 0.214948f, 0.214885f, 0.214821f, 0.214758f, 0.214695f, 0.214632f, 0.214569f, 0.214506f, 0.214443f, 0.21438f,
+0.214316f, 0.214253f, 0.21419f, 0.214127f, 0.214064f, 0.214f, 0.213937f, 0.213874f, 0.213811f, 0.213747f, 0.213684f, 0.213621f, 0.213558f, 0.213494f, 0.213431f, 0.213368f, 0.213305f, 0.213241f, 0.213178f, 0.213115f,
+0.213051f, 0.212988f, 0.212924f, 0.212861f, 0.212798f, 0.212734f, 0.212671f, 0.212608f, 0.212544f, 0.212481f, 0.212417f, 0.212354f, 0.21229f, 0.212227f, 0.212163f, 0.2121f, 0.212036f, 0.211973f, 0.211909f, 0.211846f,
+0.211782f, 0.211719f, 0.211655f, 0.211592f, 0.211528f, 0.211465f, 0.211401f, 0.211337f, 0.211274f, 0.21121f, 0.211147f, 0.211083f, 0.211019f, 0.210956f, 0.210892f, 0.210828f, 0.210765f, 0.210701f, 0.210637f, 0.210574f,
+0.21051f, 0.210446f, 0.210383f, 0.210319f, 0.210255f, 0.210191f, 0.210128f, 0.210064f, 0.21f, 0.209936f, 0.209873f, 0.209809f, 0.209745f, 0.209681f, 0.209617f, 0.209553f, 0.20949f, 0.209426f, 0.209362f, 0.209298f,
+0.209234f, 0.20917f, 0.209106f, 0.209042f, 0.208979f, 0.208915f, 0.208851f, 0.208787f, 0.208723f, 0.208659f, 0.208595f, 0.208531f, 0.208467f, 0.208403f, 0.208339f, 0.208275f, 0.208211f, 0.208147f, 0.208083f, 0.208019f,
+0.207955f, 0.207891f, 0.207827f, 0.207762f, 0.207698f, 0.207634f, 0.20757f, 0.207506f, 0.207442f, 0.207378f, 0.207314f, 0.207249f, 0.207185f, 0.207121f, 0.207057f, 0.206993f, 0.206929f, 0.206864f, 0.2068f, 0.206736f,
+0.206672f, 0.206607f, 0.206543f, 0.206479f, 0.206415f, 0.20635f, 0.206286f, 0.206222f, 0.206158f, 0.206093f, 0.206029f, 0.205965f, 0.2059f, 0.205836f, 0.205772f, 0.205707f, 0.205643f, 0.205578f, 0.205514f, 0.20545f,
+0.205385f, 0.205321f, 0.205256f, 0.205192f, 0.205127f, 0.205063f, 0.204999f, 0.204934f, 0.20487f, 0.204805f, 0.204741f, 0.204676f, 0.204612f, 0.204547f, 0.204483f, 0.204418f, 0.204353f, 0.204289f, 0.204224f, 0.20416f,
+0.204095f, 0.204031f, 0.203966f, 0.203901f, 0.203837f, 0.203772f, 0.203707f, 0.203643f, 0.203578f, 0.203514f, 0.203449f, 0.203384f, 0.203319f, 0.203255f, 0.20319f, 0.203125f, 0.203061f, 0.202996f, 0.202931f, 0.202866f,
+0.202802f, 0.202737f, 0.202672f, 0.202607f, 0.202543f, 0.202478f, 0.202413f, 0.202348f, 0.202283f, 0.202218f, 0.202154f, 0.202089f, 0.202024f, 0.201959f, 0.201894f, 0.201829f, 0.201764f, 0.201699f, 0.201635f, 0.20157f,
+0.201505f, 0.20144f, 0.201375f, 0.20131f, 0.201245f, 0.20118f, 0.201115f, 0.20105f, 0.200985f, 0.20092f, 0.200855f, 0.20079f, 0.200725f, 0.20066f, 0.200595f, 0.20053f, 0.200465f, 0.2004f, 0.200334f, 0.200269f,
+0.200204f, 0.200139f, 0.200074f, 0.200009f, 0.199944f, 0.199879f, 0.199813f, 0.199748f, 0.199683f, 0.199618f, 0.199553f, 0.199488f, 0.199422f, 0.199357f, 0.199292f, 0.199227f, 0.199161f, 0.199096f, 0.199031f, 0.198966f,
+0.1989f, 0.198835f, 0.19877f, 0.198704f, 0.198639f, 0.198574f, 0.198508f, 0.198443f, 0.198378f, 0.198312f, 0.198247f, 0.198182f, 0.198116f, 0.198051f, 0.197986f, 0.19792f, 0.197855f, 0.197789f, 0.197724f, 0.197658f,
+0.197593f, 0.197528f, 0.197462f, 0.197397f, 0.197331f, 0.197266f, 0.1972f, 0.197135f, 0.197069f, 0.197004f, 0.196938f, 0.196872f, 0.196807f, 0.196741f, 0.196676f, 0.19661f, 0.196545f, 0.196479f, 0.196413f, 0.196348f,
+0.196282f, 0.196217f, 0.196151f, 0.196085f, 0.19602f, 0.195954f, 0.195888f, 0.195823f, 0.195757f, 0.195691f, 0.195626f, 0.19556f, 0.195494f, 0.195428f, 0.195363f, 0.195297f, 0.195231f, 0.195165f, 0.1951f, 0.195034f,
+0.194968f, 0.194902f, 0.194836f, 0.194771f, 0.194705f, 0.194639f, 0.194573f, 0.194507f, 0.194441f, 0.194375f, 0.19431f, 0.194244f, 0.194178f, 0.194112f, 0.194046f, 0.19398f, 0.193914f, 0.193848f, 0.193782f, 0.193716f,
+0.19365f, 0.193584f, 0.193518f, 0.193452f, 0.193386f, 0.19332f, 0.193254f, 0.193188f, 0.193122f, 0.193056f, 0.19299f, 0.192924f, 0.192858f, 0.192792f, 0.192726f, 0.19266f, 0.192594f, 0.192528f, 0.192462f, 0.192395f,
+0.192329f, 0.192263f, 0.192197f, 0.192131f, 0.192065f, 0.191999f, 0.191932f, 0.191866f, 0.1918f, 0.191734f, 0.191668f, 0.191601f, 0.191535f, 0.191469f, 0.191403f, 0.191336f, 0.19127f, 0.191204f, 0.191138f, 0.191071f,
+0.191005f, 0.190939f, 0.190872f, 0.190806f, 0.19074f, 0.190673f, 0.190607f, 0.190541f, 0.190474f, 0.190408f, 0.190341f, 0.190275f, 0.190209f, 0.190142f, 0.190076f, 0.190009f, 0.189943f, 0.189877f, 0.18981f, 0.189744f,
+0.189677f, 0.189611f, 0.189544f, 0.189478f, 0.189411f, 0.189345f, 0.189278f, 0.189212f, 0.189145f, 0.189079f, 0.189012f, 0.188945f, 0.188879f, 0.188812f, 0.188746f, 0.188679f, 0.188613f, 0.188546f, 0.188479f, 0.188413f,
+0.188346f, 0.188279f, 0.188213f, 0.188146f, 0.188079f, 0.188013f, 0.187946f, 0.187879f, 0.187813f, 0.187746f, 0.187679f, 0.187612f, 0.187546f, 0.187479f, 0.187412f, 0.187345f, 0.187279f, 0.187212f, 0.187145f, 0.187078f,
+0.187012f, 0.186945f, 0.186878f, 0.186811f, 0.186744f, 0.186677f, 0.186611f, 0.186544f, 0.186477f, 0.18641f, 0.186343f, 0.186276f, 0.186209f, 0.186142f, 0.186075f, 0.186009f, 0.185942f, 0.185875f, 0.185808f, 0.185741f,
+0.185674f, 0.185607f, 0.18554f, 0.185473f, 0.185406f, 0.185339f, 0.185272f, 0.185205f, 0.185138f, 0.185071f, 0.185004f, 0.184937f, 0.184869f, 0.184802f, 0.184735f, 0.184668f, 0.184601f, 0.184534f, 0.184467f, 0.1844f,
+0.184333f, 0.184265f, 0.184198f, 0.184131f, 0.184064f, 0.183997f, 0.18393f, 0.183862f, 0.183795f, 0.183728f, 0.183661f, 0.183594f, 0.183526f, 0.183459f, 0.183392f, 0.183325f, 0.183257f, 0.18319f, 0.183123f, 0.183055f,
+0.182988f, 0.182921f, 0.182854f, 0.182786f, 0.182719f, 0.182652f, 0.182584f, 0.182517f, 0.182449f, 0.182382f, 0.182315f, 0.182247f, 0.18218f, 0.182112f, 0.182045f, 0.181978f, 0.18191f, 0.181843f, 0.181775f, 0.181708f,
+0.18164f, 0.181573f, 0.181505f, 0.181438f, 0.18137f, 0.181303f, 0.181235f, 0.181168f, 0.1811f, 0.181033f, 0.180965f, 0.180898f, 0.18083f, 0.180763f, 0.180695f, 0.180627f, 0.18056f, 0.180492f, 0.180425f, 0.180357f,
+0.180289f, 0.180222f, 0.180154f, 0.180086f, 0.180019f, 0.179951f, 0.179883f, 0.179816f, 0.179748f, 0.17968f, 0.179613f, 0.179545f, 0.179477f, 0.179409f, 0.179342f, 0.179274f, 0.179206f, 0.179138f, 0.179071f, 0.179003f,
+0.178935f, 0.178867f, 0.178799f, 0.178732f, 0.178664f, 0.178596f, 0.178528f, 0.17846f, 0.178392f, 0.178325f, 0.178257f, 0.178189f, 0.178121f, 0.178053f, 0.177985f, 0.177917f, 0.177849f, 0.177781f, 0.177713f, 0.177645f,
+0.177578f, 0.17751f, 0.177442f, 0.177374f, 0.177306f, 0.177238f, 0.17717f, 0.177102f, 0.177034f, 0.176966f, 0.176898f, 0.176829f, 0.176761f, 0.176693f, 0.176625f, 0.176557f, 0.176489f, 0.176421f, 0.176353f, 0.176285f,
+0.176217f, 0.176149f, 0.17608f, 0.176012f, 0.175944f, 0.175876f, 0.175808f, 0.17574f, 0.175671f, 0.175603f, 0.175535f, 0.175467f, 0.175399f, 0.17533f, 0.175262f, 0.175194f, 0.175126f, 0.175057f, 0.174989f, 0.174921f,
+0.174853f, 0.174784f, 0.174716f, 0.174648f, 0.174579f, 0.174511f, 0.174443f, 0.174374f, 0.174306f, 0.174238f, 0.174169f, 0.174101f, 0.174033f, 0.173964f, 0.173896f, 0.173827f, 0.173759f, 0.173691f, 0.173622f, 0.173554f,
+0.173485f, 0.173417f, 0.173348f, 0.17328f, 0.173212f, 0.173143f, 0.173075f, 0.173006f, 0.172938f, 0.172869f, 0.172801f, 0.172732f, 0.172663f, 0.172595f, 0.172526f, 0.172458f, 0.172389f, 0.172321f, 0.172252f, 0.172183f,
+0.172115f, 0.172046f, 0.171978f, 0.171909f, 0.17184f, 0.171772f, 0.171703f, 0.171634f, 0.171566f, 0.171497f, 0.171428f, 0.17136f, 0.171291f, 0.171222f, 0.171154f, 0.171085f, 0.171016f, 0.170947f, 0.170879f, 0.17081f,
+0.170741f, 0.170672f, 0.170604f, 0.170535f, 0.170466f, 0.170397f, 0.170328f, 0.17026f, 0.170191f, 0.170122f, 0.170053f, 0.169984f, 0.169915f, 0.169847f, 0.169778f, 0.169709f, 0.16964f, 0.169571f, 0.169502f, 0.169433f,
+0.169364f, 0.169295f, 0.169226f, 0.169158f, 0.169089f, 0.16902f, 0.168951f, 0.168882f, 0.168813f, 0.168744f, 0.168675f, 0.168606f, 0.168537f, 0.168468f, 0.168399f, 0.16833f, 0.168261f, 0.168191f, 0.168122f, 0.168053f,
+0.167984f, 0.167915f, 0.167846f, 0.167777f, 0.167708f, 0.167639f, 0.16757f, 0.167501f, 0.167431f, 0.167362f, 0.167293f, 0.167224f, 0.167155f, 0.167086f, 0.167016f, 0.166947f, 0.166878f, 0.166809f, 0.16674f, 0.16667f,
+0.166601f, 0.166532f, 0.166463f, 0.166393f, 0.166324f, 0.166255f, 0.166186f, 0.166116f, 0.166047f, 0.165978f, 0.165908f, 0.165839f, 0.16577f, 0.1657f, 0.165631f, 0.165562f, 0.165492f, 0.165423f, 0.165354f, 0.165284f,
+0.165215f, 0.165145f, 0.165076f, 0.165007f, 0.164937f, 0.164868f, 0.164798f, 0.164729f, 0.164659f, 0.16459f, 0.16452f, 0.164451f, 0.164381f, 0.164312f, 0.164242f, 0.164173f, 0.164103f, 0.164034f, 0.163964f, 0.163895f,
+0.163825f, 0.163756f, 0.163686f, 0.163617f, 0.163547f, 0.163477f, 0.163408f, 0.163338f, 0.163269f, 0.163199f, 0.163129f, 0.16306f, 0.16299f, 0.16292f, 0.162851f, 0.162781f, 0.162711f, 0.162642f, 0.162572f, 0.162502f,
+0.162433f, 0.162363f, 0.162293f, 0.162223f, 0.162154f, 0.162084f, 0.162014f, 0.161945f, 0.161875f, 0.161805f, 0.161735f, 0.161665f, 0.161596f, 0.161526f, 0.161456f, 0.161386f, 0.161316f, 0.161246f, 0.161177f, 0.161107f,
+0.161037f, 0.160967f, 0.160897f, 0.160827f, 0.160757f, 0.160688f, 0.160618f, 0.160548f, 0.160478f, 0.160408f, 0.160338f, 0.160268f, 0.160198f, 0.160128f, 0.160058f, 0.159988f, 0.159918f, 0.159848f, 0.159778f, 0.159708f,
+0.159638f, 0.159568f, 0.159498f, 0.159428f, 0.159358f, 0.159288f, 0.159218f, 0.159148f, 0.159078f, 0.159008f, 0.158938f, 0.158867f, 0.158797f, 0.158727f, 0.158657f, 0.158587f, 0.158517f, 0.158447f, 0.158377f, 0.158306f,
+0.158236f, 0.158166f, 0.158096f, 0.158026f, 0.157955f, 0.157885f, 0.157815f, 0.157745f, 0.157675f, 0.157604f, 0.157534f, 0.157464f, 0.157394f, 0.157323f, 0.157253f, 0.157183f, 0.157112f, 0.157042f, 0.156972f, 0.156902f,
+0.156831f, 0.156761f, 0.156691f, 0.15662f, 0.15655f, 0.15648f, 0.156409f, 0.156339f, 0.156268f, 0.156198f, 0.156128f, 0.156057f, 0.155987f, 0.155916f, 0.155846f, 0.155776f, 0.155705f, 0.155635f, 0.155564f, 0.155494f,
+0.155423f, 0.155353f, 0.155282f, 0.155212f, 0.155141f, 0.155071f, 0.155f, 0.15493f, 0.154859f, 0.154789f, 0.154718f, 0.154648f, 0.154577f, 0.154506f, 0.154436f, 0.154365f, 0.154295f, 0.154224f, 0.154153f, 0.154083f,
+0.154012f, 0.153942f, 0.153871f, 0.1538f, 0.15373f, 0.153659f, 0.153588f, 0.153518f, 0.153447f, 0.153376f, 0.153305f, 0.153235f, 0.153164f, 0.153093f, 0.153023f, 0.152952f, 0.152881f, 0.15281f, 0.15274f, 0.152669f,
+0.152598f, 0.152527f, 0.152456f, 0.152386f, 0.152315f, 0.152244f, 0.152173f, 0.152102f, 0.152032f, 0.151961f, 0.15189f, 0.151819f, 0.151748f, 0.151677f, 0.151606f, 0.151535f, 0.151465f, 0.151394f, 0.151323f, 0.151252f,
+0.151181f, 0.15111f, 0.151039f, 0.150968f, 0.150897f, 0.150826f, 0.150755f, 0.150684f, 0.150613f, 0.150542f, 0.150471f, 0.1504f, 0.150329f, 0.150258f, 0.150187f, 0.150116f, 0.150045f, 0.149974f, 0.149903f, 0.149832f,
+0.149761f, 0.14969f, 0.149619f, 0.149548f, 0.149476f, 0.149405f, 0.149334f, 0.149263f, 0.149192f, 0.149121f, 0.14905f, 0.148978f, 0.148907f, 0.148836f, 0.148765f, 0.148694f, 0.148623f, 0.148551f, 0.14848f, 0.148409f,
+0.148338f, 0.148266f, 0.148195f, 0.148124f, 0.148053f, 0.147981f, 0.14791f, 0.147839f, 0.147768f, 0.147696f, 0.147625f, 0.147554f, 0.147482f, 0.147411f, 0.14734f, 0.147268f, 0.147197f, 0.147126f, 0.147054f, 0.146983f,
+0.146912f, 0.14684f, 0.146769f, 0.146697f, 0.146626f, 0.146555f, 0.146483f, 0.146412f, 0.14634f, 0.146269f, 0.146197f, 0.146126f, 0.146054f, 0.145983f, 0.145912f, 0.14584f, 0.145769f, 0.145697f, 0.145626f, 0.145554f,
+0.145482f, 0.145411f, 0.145339f, 0.145268f, 0.145196f, 0.145125f, 0.145053f, 0.144982f, 0.14491f, 0.144838f, 0.144767f, 0.144695f, 0.144624f, 0.144552f, 0.14448f, 0.144409f, 0.144337f, 0.144265f, 0.144194f, 0.144122f,
+0.14405f, 0.143979f, 0.143907f, 0.143835f, 0.143764f, 0.143692f, 0.14362f, 0.143549f, 0.143477f, 0.143405f, 0.143333f, 0.143262f, 0.14319f, 0.143118f, 0.143046f, 0.142974f, 0.142903f, 0.142831f, 0.142759f, 0.142687f,
+0.142615f, 0.142544f, 0.142472f, 0.1424f, 0.142328f, 0.142256f, 0.142184f, 0.142113f, 0.142041f, 0.141969f, 0.141897f, 0.141825f, 0.141753f, 0.141681f, 0.141609f, 0.141537f, 0.141465f, 0.141393f, 0.141321f, 0.14125f,
+0.141178f, 0.141106f, 0.141034f, 0.140962f, 0.14089f, 0.140818f, 0.140746f, 0.140674f, 0.140602f, 0.14053f, 0.140457f, 0.140385f, 0.140313f, 0.140241f, 0.140169f, 0.140097f, 0.140025f, 0.139953f, 0.139881f, 0.139809f,
+0.139737f, 0.139665f, 0.139592f, 0.13952f, 0.139448f, 0.139376f, 0.139304f, 0.139232f, 0.13916f, 0.139087f, 0.139015f, 0.138943f, 0.138871f, 0.138799f, 0.138726f, 0.138654f, 0.138582f, 0.13851f, 0.138437f, 0.138365f,
+0.138293f, 0.138221f, 0.138148f, 0.138076f, 0.138004f, 0.137932f, 0.137859f, 0.137787f, 0.137715f, 0.137642f, 0.13757f, 0.137498f, 0.137425f, 0.137353f, 0.137281f, 0.137208f, 0.137136f, 0.137064f, 0.136991f, 0.136919f,
+0.136846f, 0.136774f, 0.136702f, 0.136629f, 0.136557f, 0.136484f, 0.136412f, 0.136339f, 0.136267f, 0.136194f, 0.136122f, 0.13605f, 0.135977f, 0.135905f, 0.135832f, 0.13576f, 0.135687f, 0.135614f, 0.135542f, 0.135469f,
+0.135397f, 0.135324f, 0.135252f, 0.135179f, 0.135107f, 0.135034f, 0.134961f, 0.134889f, 0.134816f, 0.134744f, 0.134671f, 0.134598f, 0.134526f, 0.134453f, 0.134381f, 0.134308f, 0.134235f, 0.134163f, 0.13409f, 0.134017f,
+0.133945f, 0.133872f, 0.133799f, 0.133726f, 0.133654f, 0.133581f, 0.133508f, 0.133436f, 0.133363f, 0.13329f, 0.133217f, 0.133144f, 0.133072f, 0.132999f, 0.132926f, 0.132853f, 0.132781f, 0.132708f, 0.132635f, 0.132562f,
+0.132489f, 0.132416f, 0.132344f, 0.132271f, 0.132198f, 0.132125f, 0.132052f, 0.131979f, 0.131906f, 0.131834f, 0.131761f, 0.131688f, 0.131615f, 0.131542f, 0.131469f, 0.131396f, 0.131323f, 0.13125f, 0.131177f, 0.131104f,
+0.131031f, 0.130958f, 0.130885f, 0.130812f, 0.130739f, 0.130666f, 0.130593f, 0.13052f, 0.130447f, 0.130374f, 0.130301f, 0.130228f, 0.130155f, 0.130082f, 0.130009f, 0.129936f, 0.129863f, 0.12979f, 0.129717f, 0.129643f,
+0.12957f, 0.129497f, 0.129424f, 0.129351f, 0.129278f, 0.129205f, 0.129132f, 0.129058f, 0.128985f, 0.128912f, 0.128839f, 0.128766f, 0.128692f, 0.128619f, 0.128546f, 0.128473f, 0.1284f, 0.128326f, 0.128253f, 0.12818f,
+0.128107f, 0.128033f, 0.12796f, 0.127887f, 0.127814f, 0.12774f, 0.127667f, 0.127594f, 0.12752f, 0.127447f, 0.127374f, 0.1273f, 0.127227f, 0.127154f, 0.12708f, 0.127007f, 0.126934f, 0.12686f, 0.126787f, 0.126714f,
+0.12664f, 0.126567f, 0.126493f, 0.12642f, 0.126347f, 0.126273f, 0.1262f, 0.126126f, 0.126053f, 0.125979f, 0.125906f, 0.125832f, 0.125759f, 0.125685f, 0.125612f, 0.125538f, 0.125465f, 0.125391f, 0.125318f, 0.125244f,
+0.125171f, 0.125097f, 0.125024f, 0.12495f, 0.124877f, 0.124803f, 0.12473f, 0.124656f, 0.124582f, 0.124509f, 0.124435f, 0.124362f, 0.124288f, 0.124214f, 0.124141f, 0.124067f, 0.123993f, 0.12392f, 0.123846f, 0.123773f,
+0.123699f, 0.123625f, 0.123551f, 0.123478f, 0.123404f, 0.12333f, 0.123257f, 0.123183f, 0.123109f, 0.123036f, 0.122962f, 0.122888f, 0.122814f, 0.122741f, 0.122667f, 0.122593f, 0.122519f, 0.122445f, 0.122372f, 0.122298f,
+0.122224f, 0.12215f, 0.122076f, 0.122003f, 0.121929f, 0.121855f, 0.121781f, 0.121707f, 0.121633f, 0.121559f, 0.121486f, 0.121412f, 0.121338f, 0.121264f, 0.12119f, 0.121116f, 0.121042f, 0.120968f, 0.120894f, 0.12082f,
+0.120746f, 0.120673f, 0.120599f, 0.120525f, 0.120451f, 0.120377f, 0.120303f, 0.120229f, 0.120155f, 0.120081f, 0.120007f, 0.119933f, 0.119859f, 0.119785f, 0.119711f, 0.119636f, 0.119562f, 0.119488f, 0.119414f, 0.11934f,
+0.119266f, 0.119192f, 0.119118f, 0.119044f, 0.11897f, 0.118896f, 0.118822f, 0.118747f, 0.118673f, 0.118599f, 0.118525f, 0.118451f, 0.118377f, 0.118303f, 0.118228f, 0.118154f, 0.11808f, 0.118006f, 0.117932f, 0.117857f,
+0.117783f, 0.117709f, 0.117635f, 0.11756f, 0.117486f, 0.117412f, 0.117338f, 0.117263f, 0.117189f, 0.117115f, 0.117041f, 0.116966f, 0.116892f, 0.116818f, 0.116743f, 0.116669f, 0.116595f, 0.11652f, 0.116446f, 0.116372f,
+0.116297f, 0.116223f, 0.116149f, 0.116074f, 0.116f, 0.115926f, 0.115851f, 0.115777f, 0.115702f, 0.115628f, 0.115554f, 0.115479f, 0.115405f, 0.11533f, 0.115256f, 0.115181f, 0.115107f, 0.115032f, 0.114958f, 0.114883f,
+0.114809f, 0.114735f, 0.11466f, 0.114586f, 0.114511f, 0.114436f, 0.114362f, 0.114287f, 0.114213f, 0.114138f, 0.114064f, 0.113989f, 0.113915f, 0.11384f, 0.113766f, 0.113691f, 0.113616f, 0.113542f, 0.113467f, 0.113393f,
+0.113318f, 0.113243f, 0.113169f, 0.113094f, 0.113019f, 0.112945f, 0.11287f, 0.112795f, 0.112721f, 0.112646f, 0.112571f, 0.112497f, 0.112422f, 0.112347f, 0.112273f, 0.112198f, 0.112123f, 0.112048f, 0.111974f, 0.111899f,
+0.111824f, 0.111749f, 0.111675f, 0.1116f, 0.111525f, 0.11145f, 0.111375f, 0.111301f, 0.111226f, 0.111151f, 0.111076f, 0.111001f, 0.110927f, 0.110852f, 0.110777f, 0.110702f, 0.110627f, 0.110552f, 0.110477f, 0.110403f,
+0.110328f, 0.110253f, 0.110178f, 0.110103f, 0.110028f, 0.109953f, 0.109878f, 0.109803f, 0.109728f, 0.109653f, 0.109579f, 0.109504f, 0.109429f, 0.109354f, 0.109279f, 0.109204f, 0.109129f, 0.109054f, 0.108979f, 0.108904f,
+0.108829f, 0.108754f, 0.108679f, 0.108604f, 0.108529f, 0.108453f, 0.108378f, 0.108303f, 0.108228f, 0.108153f, 0.108078f, 0.108003f, 0.107928f, 0.107853f, 0.107778f, 0.107703f, 0.107628f, 0.107552f, 0.107477f, 0.107402f,
+0.107327f, 0.107252f, 0.107177f, 0.107101f, 0.107026f, 0.106951f, 0.106876f, 0.106801f, 0.106726f, 0.10665f, 0.106575f, 0.1065f, 0.106425f, 0.106349f, 0.106274f, 0.106199f, 0.106124f, 0.106048f, 0.105973f, 0.105898f,
+0.105823f, 0.105747f, 0.105672f, 0.105597f, 0.105521f, 0.105446f, 0.105371f, 0.105296f, 0.10522f, 0.105145f, 0.10507f, 0.104994f, 0.104919f, 0.104843f, 0.104768f, 0.104693f, 0.104617f, 0.104542f, 0.104467f, 0.104391f,
+0.104316f, 0.10424f, 0.104165f, 0.104089f, 0.104014f, 0.103939f, 0.103863f, 0.103788f, 0.103712f, 0.103637f, 0.103561f, 0.103486f, 0.10341f, 0.103335f, 0.103259f, 0.103184f, 0.103108f, 0.103033f, 0.102957f, 0.102882f,
+0.102806f, 0.102731f, 0.102655f, 0.10258f, 0.102504f, 0.102428f, 0.102353f, 0.102277f, 0.102202f, 0.102126f, 0.102051f, 0.101975f, 0.101899f, 0.101824f, 0.101748f, 0.101672f, 0.101597f, 0.101521f, 0.101446f, 0.10137f,
+0.101294f, 0.101219f, 0.101143f, 0.101067f, 0.100991f, 0.100916f, 0.10084f, 0.100764f, 0.100689f, 0.100613f, 0.100537f, 0.100461f, 0.100386f, 0.10031f, 0.100234f, 0.100158f, 0.100083f, 0.100007f, 0.099931f, 0.099855f,
+0.09978f, 0.099704f, 0.099628f, 0.099552f, 0.099476f, 0.0994f, 0.099325f, 0.099249f, 0.099173f, 0.099097f, 0.099021f, 0.098945f, 0.09887f, 0.098794f, 0.098718f, 0.098642f, 0.098566f, 0.09849f, 0.098414f, 0.098338f,
+0.098262f, 0.098186f, 0.098111f, 0.098035f, 0.097959f, 0.097883f, 0.097807f, 0.097731f, 0.097655f, 0.097579f, 0.097503f, 0.097427f, 0.097351f, 0.097275f, 0.097199f, 0.097123f, 0.097047f, 0.096971f, 0.096895f, 0.096819f,
+0.096743f, 0.096667f, 0.096591f, 0.096514f, 0.096438f, 0.096362f, 0.096286f, 0.09621f, 0.096134f, 0.096058f, 0.095982f, 0.095906f, 0.09583f, 0.095753f, 0.095677f, 0.095601f, 0.095525f, 0.095449f, 0.095373f, 0.095297f,
+0.09522f, 0.095144f, 0.095068f, 0.094992f, 0.094916f, 0.094839f, 0.094763f, 0.094687f, 0.094611f, 0.094535f, 0.094458f, 0.094382f, 0.094306f, 0.09423f, 0.094153f, 0.094077f, 0.094001f, 0.093925f, 0.093848f, 0.093772f,
+0.093696f, 0.093619f, 0.093543f, 0.093467f, 0.09339f, 0.093314f, 0.093238f, 0.093161f, 0.093085f, 0.093009f, 0.092932f, 0.092856f, 0.09278f, 0.092703f, 0.092627f, 0.09255f, 0.092474f, 0.092398f, 0.092321f, 0.092245f,
+0.092168f, 0.092092f, 0.092016f, 0.091939f, 0.091863f, 0.091786f, 0.09171f, 0.091633f, 0.091557f, 0.09148f, 0.091404f, 0.091327f, 0.091251f, 0.091174f, 0.091098f, 0.091021f, 0.090945f, 0.090868f, 0.090792f, 0.090715f,
+0.090639f, 0.090562f, 0.090486f, 0.090409f, 0.090332f, 0.090256f, 0.090179f, 0.090103f, 0.090026f, 0.08995f, 0.089873f, 0.089796f, 0.08972f, 0.089643f, 0.089566f, 0.08949f, 0.089413f, 0.089336f, 0.08926f, 0.089183f,
+0.089107f, 0.08903f, 0.088953f, 0.088876f, 0.0888f, 0.088723f, 0.088646f, 0.08857f, 0.088493f, 0.088416f, 0.088339f, 0.088263f, 0.088186f, 0.088109f, 0.088033f, 0.087956f, 0.087879f, 0.087802f, 0.087725f, 0.087649f,
+0.087572f, 0.087495f, 0.087418f, 0.087341f, 0.087265f, 0.087188f, 0.087111f, 0.087034f, 0.086957f, 0.08688f, 0.086804f, 0.086727f, 0.08665f, 0.086573f, 0.086496f, 0.086419f, 0.086342f, 0.086265f, 0.086189f, 0.086112f,
+0.086035f, 0.085958f, 0.085881f, 0.085804f, 0.085727f, 0.08565f, 0.085573f, 0.085496f, 0.085419f, 0.085342f, 0.085265f, 0.085188f, 0.085111f, 0.085034f, 0.084957f, 0.08488f, 0.084803f, 0.084726f, 0.084649f, 0.084572f,
+0.084495f, 0.084418f, 0.084341f, 0.084264f, 0.084187f, 0.08411f, 0.084033f, 0.083956f, 0.083879f, 0.083802f, 0.083725f, 0.083647f, 0.08357f, 0.083493f, 0.083416f, 0.083339f, 0.083262f, 0.083185f, 0.083108f, 0.08303f,
+0.082953f, 0.082876f, 0.082799f, 0.082722f, 0.082645f, 0.082567f, 0.08249f, 0.082413f, 0.082336f, 0.082259f, 0.082181f, 0.082104f, 0.082027f, 0.08195f, 0.081873f, 0.081795f, 0.081718f, 0.081641f, 0.081564f, 0.081486f,
+0.081409f, 0.081332f, 0.081254f, 0.081177f, 0.0811f, 0.081023f, 0.080945f, 0.080868f, 0.080791f, 0.080713f, 0.080636f, 0.080559f, 0.080481f, 0.080404f, 0.080327f, 0.080249f, 0.080172f, 0.080094f, 0.080017f, 0.07994f,
+0.079862f, 0.079785f, 0.079707f, 0.07963f, 0.079553f, 0.079475f, 0.079398f, 0.07932f, 0.079243f, 0.079165f, 0.079088f, 0.079011f, 0.078933f, 0.078856f, 0.078778f, 0.078701f, 0.078623f, 0.078546f, 0.078468f, 0.078391f,
+0.078313f, 0.078236f, 0.078158f, 0.078081f, 0.078003f, 0.077926f, 0.077848f, 0.07777f, 0.077693f, 0.077615f, 0.077538f, 0.07746f, 0.077383f, 0.077305f, 0.077227f, 0.07715f, 0.077072f, 0.076995f, 0.076917f, 0.076839f,
+0.076762f, 0.076684f, 0.076606f, 0.076529f, 0.076451f, 0.076374f, 0.076296f, 0.076218f, 0.076141f, 0.076063f, 0.075985f, 0.075907f, 0.07583f, 0.075752f, 0.075674f, 0.075597f, 0.075519f, 0.075441f, 0.075363f, 0.075286f,
+0.075208f, 0.07513f, 0.075052f, 0.074975f, 0.074897f, 0.074819f, 0.074741f, 0.074664f, 0.074586f, 0.074508f, 0.07443f, 0.074352f, 0.074275f, 0.074197f, 0.074119f, 0.074041f, 0.073963f, 0.073885f, 0.073808f, 0.07373f,
+0.073652f, 0.073574f, 0.073496f, 0.073418f, 0.07334f, 0.073262f, 0.073185f, 0.073107f, 0.073029f, 0.072951f, 0.072873f, 0.072795f, 0.072717f, 0.072639f, 0.072561f, 0.072483f, 0.072405f, 0.072327f, 0.072249f, 0.072171f,
+0.072093f, 0.072015f, 0.071937f, 0.071859f, 0.071781f, 0.071703f, 0.071625f, 0.071547f, 0.071469f, 0.071391f, 0.071313f, 0.071235f, 0.071157f, 0.071079f, 0.071001f, 0.070923f, 0.070845f, 0.070767f, 0.070689f, 0.070611f,
+0.070533f, 0.070455f, 0.070376f, 0.070298f, 0.07022f, 0.070142f, 0.070064f, 0.069986f, 0.069908f, 0.06983f, 0.069751f, 0.069673f, 0.069595f, 0.069517f, 0.069439f, 0.069361f, 0.069282f, 0.069204f, 0.069126f, 0.069048f,
+0.06897f, 0.068891f, 0.068813f, 0.068735f, 0.068657f, 0.068578f, 0.0685f, 0.068422f, 0.068344f, 0.068265f, 0.068187f, 0.068109f, 0.068031f, 0.067952f, 0.067874f, 0.067796f, 0.067717f, 0.067639f, 0.067561f, 0.067483f,
+0.067404f, 0.067326f, 0.067248f, 0.067169f, 0.067091f, 0.067013f, 0.066934f, 0.066856f, 0.066777f, 0.066699f, 0.066621f, 0.066542f, 0.066464f, 0.066386f, 0.066307f, 0.066229f, 0.06615f, 0.066072f, 0.065994f, 0.065915f,
+0.065837f, 0.065758f, 0.06568f, 0.065601f, 0.065523f, 0.065444f, 0.065366f, 0.065287f, 0.065209f, 0.06513f, 0.065052f, 0.064974f, 0.064895f, 0.064817f, 0.064738f, 0.064659f, 0.064581f, 0.064502f, 0.064424f, 0.064345f,
+0.064267f, 0.064188f, 0.06411f, 0.064031f, 0.063953f, 0.063874f, 0.063795f, 0.063717f, 0.063638f, 0.06356f, 0.063481f, 0.063402f, 0.063324f, 0.063245f, 0.063167f, 0.063088f, 0.063009f, 0.062931f, 0.062852f, 0.062773f,
+0.062695f, 0.062616f, 0.062537f, 0.062459f, 0.06238f, 0.062301f, 0.062223f, 0.062144f, 0.062065f, 0.061987f, 0.061908f, 0.061829f, 0.06175f, 0.061672f, 0.061593f, 0.061514f, 0.061435f, 0.061357f, 0.061278f, 0.061199f,
+0.06112f, 0.061042f, 0.060963f, 0.060884f, 0.060805f, 0.060726f, 0.060648f, 0.060569f, 0.06049f, 0.060411f, 0.060332f, 0.060254f, 0.060175f, 0.060096f, 0.060017f, 0.059938f, 0.059859f, 0.059781f, 0.059702f, 0.059623f,
+0.059544f, 0.059465f, 0.059386f, 0.059307f, 0.059228f, 0.059149f, 0.059071f, 0.058992f, 0.058913f, 0.058834f, 0.058755f, 0.058676f, 0.058597f, 0.058518f, 0.058439f, 0.05836f, 0.058281f, 0.058202f, 0.058123f, 0.058044f,
+0.057965f, 0.057886f, 0.057807f, 0.057728f, 0.057649f, 0.05757f, 0.057491f, 0.057412f, 0.057333f, 0.057254f, 0.057175f, 0.057096f, 0.057017f, 0.056938f, 0.056859f, 0.05678f, 0.056701f, 0.056622f, 0.056542f, 0.056463f,
+0.056384f, 0.056305f, 0.056226f, 0.056147f, 0.056068f, 0.055989f, 0.05591f, 0.05583f, 0.055751f, 0.055672f, 0.055593f, 0.055514f, 0.055435f, 0.055356f, 0.055276f, 0.055197f, 0.055118f, 0.055039f, 0.05496f, 0.05488f,
+0.054801f, 0.054722f, 0.054643f, 0.054564f, 0.054484f, 0.054405f, 0.054326f, 0.054247f, 0.054167f, 0.054088f, 0.054009f, 0.05393f, 0.05385f, 0.053771f, 0.053692f, 0.053613f, 0.053533f, 0.053454f, 0.053375f, 0.053295f,
+0.053216f, 0.053137f, 0.053057f, 0.052978f, 0.052899f, 0.052819f, 0.05274f, 0.052661f, 0.052581f, 0.052502f, 0.052423f, 0.052343f, 0.052264f, 0.052184f, 0.052105f, 0.052026f, 0.051946f, 0.051867f, 0.051787f, 0.051708f,
+0.051629f, 0.051549f, 0.05147f, 0.05139f, 0.051311f, 0.051231f, 0.051152f, 0.051073f, 0.050993f, 0.050914f, 0.050834f, 0.050755f, 0.050675f, 0.050596f, 0.050516f, 0.050437f, 0.050357f, 0.050278f, 0.050198f, 0.050119f,
+0.050039f, 0.04996f, 0.04988f, 0.049801f, 0.049721f, 0.049641f, 0.049562f, 0.049482f, 0.049403f, 0.049323f, 0.049244f, 0.049164f, 0.049084f, 0.049005f, 0.048925f, 0.048846f, 0.048766f, 0.048686f, 0.048607f, 0.048527f,
+0.048448f, 0.048368f, 0.048288f, 0.048209f, 0.048129f, 0.048049f, 0.04797f, 0.04789f, 0.04781f, 0.047731f, 0.047651f, 0.047571f, 0.047492f, 0.047412f, 0.047332f, 0.047252f, 0.047173f, 0.047093f, 0.047013f, 0.046934f,
+0.046854f, 0.046774f, 0.046694f, 0.046615f, 0.046535f, 0.046455f, 0.046375f, 0.046296f, 0.046216f, 0.046136f, 0.046056f, 0.045976f, 0.045897f, 0.045817f, 0.045737f, 0.045657f, 0.045577f, 0.045498f, 0.045418f, 0.045338f,
+0.045258f, 0.045178f, 0.045098f, 0.045018f, 0.044939f, 0.044859f, 0.044779f, 0.044699f, 0.044619f, 0.044539f, 0.044459f, 0.044379f, 0.0443f, 0.04422f, 0.04414f, 0.04406f, 0.04398f, 0.0439f, 0.04382f, 0.04374f,
+0.04366f, 0.04358f, 0.0435f, 0.04342f, 0.04334f, 0.04326f, 0.04318f, 0.0431f, 0.04302f, 0.04294f, 0.04286f, 0.04278f, 0.0427f, 0.04262f, 0.04254f, 0.04246f, 0.04238f, 0.0423f, 0.04222f, 0.04214f,
+0.04206f, 0.04198f, 0.0419f, 0.04182f, 0.04174f, 0.04166f, 0.04158f, 0.0415f, 0.04142f, 0.04134f, 0.041259f, 0.041179f, 0.041099f, 0.041019f, 0.040939f, 0.040859f, 0.040779f, 0.040699f, 0.040619f, 0.040538f,
+0.040458f, 0.040378f, 0.040298f, 0.040218f, 0.040138f, 0.040057f, 0.039977f, 0.039897f, 0.039817f, 0.039737f, 0.039656f, 0.039576f, 0.039496f, 0.039416f, 0.039336f, 0.039255f, 0.039175f, 0.039095f, 0.039015f, 0.038934f,
+0.038854f, 0.038774f, 0.038694f, 0.038613f, 0.038533f, 0.038453f, 0.038373f, 0.038292f, 0.038212f, 0.038132f, 0.038051f, 0.037971f, 0.037891f, 0.037811f, 0.03773f, 0.03765f, 0.03757f, 0.037489f, 0.037409f, 0.037329f,
+0.037248f, 0.037168f, 0.037087f, 0.037007f, 0.036927f, 0.036846f, 0.036766f, 0.036686f, 0.036605f, 0.036525f, 0.036444f, 0.036364f, 0.036284f, 0.036203f, 0.036123f, 0.036042f, 0.035962f, 0.035881f, 0.035801f, 0.035721f,
+0.03564f, 0.03556f, 0.035479f, 0.035399f, 0.035318f, 0.035238f, 0.035157f, 0.035077f, 0.034996f, 0.034916f, 0.034835f, 0.034755f, 0.034674f, 0.034594f, 0.034513f, 0.034433f, 0.034352f, 0.034272f, 0.034191f, 0.034111f,
+0.03403f, 0.03395f, 0.033869f, 0.033788f, 0.033708f, 0.033627f, 0.033547f, 0.033466f, 0.033386f, 0.033305f, 0.033224f, 0.033144f, 0.033063f, 0.032983f, 0.032902f, 0.032821f, 0.032741f, 0.03266f, 0.032579f, 0.032499f,
+0.032418f, 0.032337f, 0.032257f, 0.032176f, 0.032095f, 0.032015f, 0.031934f, 0.031853f, 0.031773f, 0.031692f, 0.031611f, 0.031531f, 0.03145f, 0.031369f, 0.031289f, 0.031208f, 0.031127f, 0.031046f, 0.030966f, 0.030885f,
+0.030804f, 0.030723f, 0.030643f, 0.030562f, 0.030481f, 0.0304f, 0.03032f, 0.030239f, 0.030158f, 0.030077f, 0.029996f, 0.029916f, 0.029835f, 0.029754f, 0.029673f, 0.029592f, 0.029512f, 0.029431f, 0.02935f, 0.029269f,
+0.029188f, 0.029107f, 0.029027f, 0.028946f, 0.028865f, 0.028784f, 0.028703f, 0.028622f, 0.028541f, 0.02846f, 0.02838f, 0.028299f, 0.028218f, 0.028137f, 0.028056f, 0.027975f, 0.027894f, 0.027813f, 0.027732f, 0.027651f,
+0.02757f, 0.027489f, 0.027408f, 0.027328f, 0.027247f, 0.027166f, 0.027085f, 0.027004f, 0.026923f, 0.026842f, 0.026761f, 0.02668f, 0.026599f, 0.026518f, 0.026437f, 0.026356f, 0.026275f, 0.026194f, 0.026113f, 0.026032f,
+0.025951f, 0.02587f, 0.025788f, 0.025707f, 0.025626f, 0.025545f, 0.025464f, 0.025383f, 0.025302f, 0.025221f, 0.02514f, 0.025059f, 0.024978f, 0.024897f, 0.024816f, 0.024734f, 0.024653f, 0.024572f, 0.024491f, 0.02441f,
+0.024329f, 0.024248f, 0.024167f, 0.024085f, 0.024004f, 0.023923f, 0.023842f, 0.023761f, 0.02368f, 0.023598f, 0.023517f, 0.023436f, 0.023355f, 0.023274f, 0.023193f, 0.023111f, 0.02303f, 0.022949f, 0.022868f, 0.022787f,
+0.022705f, 0.022624f, 0.022543f, 0.022462f, 0.02238f, 0.022299f, 0.022218f, 0.022137f, 0.022055f, 0.021974f, 0.021893f, 0.021812f, 0.02173f, 0.021649f, 0.021568f, 0.021486f, 0.021405f, 0.021324f, 0.021242f, 0.021161f,
+0.02108f, 0.020999f, 0.020917f, 0.020836f, 0.020755f, 0.020673f, 0.020592f, 0.02051f, 0.020429f, 0.020348f, 0.020266f, 0.020185f, 0.020104f, 0.020022f, 0.019941f, 0.019859f, 0.019778f, 0.019697f, 0.019615f, 0.019534f,
+0.019452f, 0.019371f, 0.01929f, 0.019208f, 0.019127f, 0.019045f, 0.018964f, 0.018882f, 0.018801f, 0.01872f, 0.018638f, 0.018557f, 0.018475f, 0.018394f, 0.018312f, 0.018231f, 0.018149f, 0.018068f, 0.017986f, 0.017905f,
+0.017823f, 0.017742f, 0.01766f, 0.017579f, 0.017497f, 0.017416f, 0.017334f, 0.017253f, 0.017171f, 0.01709f, 0.017008f, 0.016926f, 0.016845f, 0.016763f, 0.016682f, 0.0166f, 0.016519f, 0.016437f, 0.016355f, 0.016274f,
+0.016192f, 0.016111f, 0.016029f, 0.015947f, 0.015866f, 0.015784f, 0.015703f, 0.015621f, 0.015539f, 0.015458f, 0.015376f, 0.015294f, 0.015213f, 0.015131f, 0.015049f, 0.014968f, 0.014886f, 0.014804f, 0.014723f, 0.014641f,
+0.014559f, 0.014478f, 0.014396f, 0.014314f, 0.014233f, 0.014151f, 0.014069f, 0.013987f, 0.013906f, 0.013824f, 0.013742f, 0.013661f, 0.013579f, 0.013497f, 0.013415f, 0.013334f, 0.013252f, 0.01317f, 0.013088f, 0.013007f,
+0.012925f, 0.012843f, 0.012761f, 0.012679f, 0.012598f, 0.012516f, 0.012434f, 0.012352f, 0.01227f, 0.012189f, 0.012107f, 0.012025f, 0.011943f, 0.011861f, 0.011779f, 0.011698f, 0.011616f, 0.011534f, 0.011452f, 0.01137f,
+0.011288f, 0.011206f, 0.011125f, 0.011043f, 0.010961f, 0.010879f, 0.010797f, 0.010715f, 0.010633f, 0.010551f, 0.010469f, 0.010387f, 0.010306f, 0.010224f, 0.010142f, 0.01006f, 0.009978f, 0.009896f, 0.009814f, 0.009732f,
+0.00965f, 0.009568f, 0.009486f, 0.009404f, 0.009322f, 0.00924f, 0.009158f, 0.009076f, 0.008994f, 0.008912f, 0.00883f, 0.008748f, 0.008666f, 0.008584f, 0.008502f, 0.00842f, 0.008338f, 0.008256f, 0.008174f, 0.008092f,
+0.00801f, 0.007928f, 0.007846f, 0.007764f, 0.007682f, 0.0076f, 0.007518f, 0.007436f, 0.007354f, 0.007271f, 0.007189f, 0.007107f, 0.007025f, 0.006943f, 0.006861f, 0.006779f, 0.006697f, 0.006615f, 0.006532f, 0.00645f,
+0.006368f, 0.006286f, 0.006204f, 0.006122f, 0.00604f, 0.005958f, 0.005875f, 0.005793f, 0.005711f, 0.005629f, 0.005547f, 0.005465f, 0.005382f, 0.0053f, 0.005218f, 0.005136f, 0.005054f, 0.004971f, 0.004889f, 0.004807f,
+0.004725f, 0.004642f, 0.00456f, 0.004478f, 0.004396f, 0.004314f, 0.004231f, 0.004149f, 0.004067f, 0.003985f, 0.003902f, 0.00382f, 0.003738f, 0.003655f, 0.003573f, 0.003491f, 0.003409f, 0.003326f, 0.003244f, 0.003162f,
+0.003079f, 0.002997f, 0.002915f, 0.002833f, 0.00275f, 0.002668f, 0.002586f, 0.002503f, 0.002421f, 0.002339f, 0.002256f, 0.002174f, 0.002091f, 0.002009f, 0.001927f, 0.001844f, 0.001762f, 0.00168f, 0.001597f, 0.001515f,
+0.001432f, 0.00135f, 0.001268f, 0.001185f, 0.001103f, 0.00102f, 0.000938f, 0.000856f, 0.000773f, 0.000691f, 0.000608f, 0.000526f, 0.000443f, 0.000361f, 0.000279f, 0.000196f, 0.000114f, 3.1e-05f, -5.1e-05f, -0.000134f,
+-0.000216f, -0.000299f, -0.000381f, -0.000464f, -0.000546f, -0.000629f, -0.000711f, -0.000794f, -0.000876f, -0.000959f, -0.001041f, -0.001124f, -0.001206f, -0.001289f, -0.001371f, -0.001454f, -0.001536f, -0.001619f, -0.001701f, -0.001784f,
+-0.001867f, -0.001949f, -0.002032f, -0.002114f, -0.002197f, -0.002279f, -0.002362f, -0.002445f, -0.002527f, -0.00261f, -0.002692f, -0.002775f, -0.002858f, -0.00294f, -0.003023f, -0.003105f, -0.003188f, -0.003271f, -0.003353f, -0.003436f,
+-0.003519f, -0.003601f, -0.003684f, -0.003767f, -0.003849f, -0.003932f, -0.004015f, -0.004097f, -0.00418f, -0.004263f, -0.004345f, -0.004428f, -0.004511f, -0.004593f, -0.004676f, -0.004759f, -0.004841f, -0.004924f, -0.005007f, -0.00509f,
+-0.005172f, -0.005255f, -0.005338f, -0.00542f, -0.005503f, -0.005586f, -0.005669f, -0.005751f, -0.005834f, -0.005917f, -0.006f, -0.006082f, -0.006165f, -0.006248f, -0.006331f, -0.006414f, -0.006496f, -0.006579f, -0.006662f, -0.006745f,
+-0.006828f, -0.00691f, -0.006993f, -0.007076f, -0.007159f, -0.007242f, -0.007325f, -0.007407f, -0.00749f, -0.007573f, -0.007656f, -0.007739f, -0.007822f, -0.007904f, -0.007987f, -0.00807f, -0.008153f, -0.008236f, -0.008319f, -0.008402f,
+-0.008485f, -0.008567f, -0.00865f, -0.008733f, -0.008816f, -0.008899f, -0.008982f, -0.009065f, -0.009148f, -0.009231f, -0.009314f, -0.009397f, -0.00948f, -0.009562f, -0.009645f, -0.009728f, -0.009811f, -0.009894f, -0.009977f, -0.01006f,
+-0.010143f, -0.010226f, -0.010309f, -0.010392f, -0.010475f, -0.010558f, -0.010641f, -0.010724f, -0.010807f, -0.01089f, -0.010973f, -0.011056f, -0.011139f, -0.011222f, -0.011305f, -0.011388f, -0.011471f, -0.011554f, -0.011637f, -0.01172f,
+-0.011803f, -0.011886f, -0.011969f, -0.012053f, -0.012136f, -0.012219f, -0.012302f, -0.012385f, -0.012468f, -0.012551f, -0.012634f, -0.012717f, -0.0128f, -0.012883f, -0.012966f, -0.01305f, -0.013133f, -0.013216f, -0.013299f, -0.013382f,
+-0.013465f, -0.013548f, -0.013631f, -0.013715f, -0.013798f, -0.013881f, -0.013964f, -0.014047f, -0.01413f, -0.014213f, -0.014297f, -0.01438f, -0.014463f, -0.014546f, -0.014629f, -0.014712f, -0.014796f, -0.014879f, -0.014962f, -0.015045f,
+-0.015128f, -0.015212f, -0.015295f, -0.015378f, -0.015461f, -0.015545f, -0.015628f, -0.015711f, -0.015794f, -0.015878f, -0.015961f, -0.016044f, -0.016127f, -0.016211f, -0.016294f, -0.016377f, -0.01646f, -0.016544f, -0.016627f, -0.01671f,
+-0.016793f, -0.016877f, -0.01696f, -0.017043f, -0.017127f, -0.01721f, -0.017293f, -0.017376f, -0.01746f, -0.017543f, -0.017626f, -0.01771f, -0.017793f, -0.017876f, -0.01796f, -0.018043f, -0.018126f, -0.01821f, -0.018293f, -0.018377f,
+-0.01846f, -0.018543f, -0.018627f, -0.01871f, -0.018793f, -0.018877f, -0.01896f, -0.019044f, -0.019127f, -0.01921f, -0.019294f, -0.019377f, -0.01946f, -0.019544f, -0.019627f, -0.019711f, -0.019794f, -0.019878f, -0.019961f, -0.020044f,
+-0.020128f, -0.020211f, -0.020295f, -0.020378f, -0.020462f, -0.020545f, -0.020629f, -0.020712f, -0.020796f, -0.020879f, -0.020962f, -0.021046f, -0.021129f, -0.021213f, -0.021296f, -0.02138f, -0.021463f, -0.021547f, -0.02163f, -0.021714f,
+-0.021797f, -0.021881f, -0.021964f, -0.022048f, -0.022131f, -0.022215f, -0.022299f, -0.022382f, -0.022466f, -0.022549f, -0.022633f, -0.022716f, -0.0228f, -0.022883f, -0.022967f, -0.023051f, -0.023134f, -0.023218f, -0.023301f, -0.023385f,
+-0.023468f, -0.023552f, -0.023636f, -0.023719f, -0.023803f, -0.023886f, -0.02397f, -0.024054f, -0.024137f, -0.024221f, -0.024305f, -0.024388f, -0.024472f, -0.024555f, -0.024639f, -0.024723f, -0.024806f, -0.02489f, -0.024974f, -0.025057f,
+-0.025141f, -0.025225f, -0.025308f, -0.025392f, -0.025476f, -0.025559f, -0.025643f, -0.025727f, -0.02581f, -0.025894f, -0.025978f, -0.026061f, -0.026145f, -0.026229f, -0.026313f, -0.026396f, -0.02648f, -0.026564f, -0.026647f, -0.026731f,
+-0.026815f, -0.026899f, -0.026982f, -0.027066f, -0.02715f, -0.027234f, -0.027317f, -0.027401f, -0.027485f, -0.027569f, -0.027653f, -0.027736f, -0.02782f, -0.027904f, -0.027988f, -0.028071f, -0.028155f, -0.028239f, -0.028323f, -0.028407f,
+-0.02849f, -0.028574f, -0.028658f, -0.028742f, -0.028826f, -0.02891f, -0.028993f, -0.029077f, -0.029161f, -0.029245f, -0.029329f, -0.029413f, -0.029496f, -0.02958f, -0.029664f, -0.029748f, -0.029832f, -0.029916f, -0.03f, -0.030083f,
+-0.030167f, -0.030251f, -0.030335f, -0.030419f, -0.030503f, -0.030587f, -0.030671f, -0.030755f, -0.030839f, -0.030922f, -0.031006f, -0.03109f, -0.031174f, -0.031258f, -0.031342f, -0.031426f, -0.03151f, -0.031594f, -0.031678f, -0.031762f,
+-0.031846f, -0.03193f, -0.032014f, -0.032098f, -0.032182f, -0.032266f, -0.032349f, -0.032433f, -0.032517f, -0.032601f, -0.032685f, -0.032769f, -0.032853f, -0.032937f, -0.033021f, -0.033105f, -0.033189f, -0.033273f, -0.033357f, -0.033441f,
+-0.033525f, -0.03361f, -0.033694f, -0.033778f, -0.033862f, -0.033946f, -0.03403f, -0.034114f, -0.034198f, -0.034282f, -0.034366f, -0.03445f, -0.034534f, -0.034618f, -0.034702f, -0.034786f, -0.03487f, -0.034954f, -0.035038f, -0.035123f,
+-0.035207f, -0.035291f, -0.035375f, -0.035459f, -0.035543f, -0.035627f, -0.035711f, -0.035795f, -0.03588f, -0.035964f, -0.036048f, -0.036132f, -0.036216f, -0.0363f, -0.036384f, -0.036468f, -0.036553f, -0.036637f, -0.036721f, -0.036805f,
+-0.036889f, -0.036973f, -0.037058f, -0.037142f, -0.037226f, -0.03731f, -0.037394f, -0.037478f, -0.037563f, -0.037647f, -0.037731f, -0.037815f, -0.037899f, -0.037984f, -0.038068f, -0.038152f, -0.038236f, -0.038321f, -0.038405f, -0.038489f,
+-0.038573f, -0.038657f, -0.038742f, -0.038826f, -0.03891f, -0.038994f, -0.039079f, -0.039163f, -0.039247f, -0.039331f, -0.039416f, -0.0395f, -0.039584f, -0.039669f, -0.039753f, -0.039837f, -0.039921f, -0.040006f, -0.04009f, -0.040174f,
+-0.040259f, -0.040343f, -0.040427f, -0.040511f, -0.040596f, -0.04068f, -0.040764f, -0.040849f, -0.040933f, -0.041017f, -0.041102f, -0.041186f, -0.04127f, -0.041355f, -0.041439f, -0.041523f, -0.041608f, -0.041692f, -0.041777f, -0.041861f,
+-0.041945f, -0.04203f, -0.042114f, -0.042198f, -0.042283f, -0.042367f, -0.042452f, -0.042536f, -0.04262f, -0.042705f, -0.042789f, -0.042873f, -0.042958f, -0.043042f, -0.043127f, -0.043211f, -0.043296f, -0.04338f, -0.043464f, -0.043549f,
+-0.043633f, -0.043718f, -0.043802f, -0.043887f, -0.043971f, -0.044055f, -0.04414f, -0.044224f, -0.044309f, -0.044393f, -0.044478f, -0.044562f, -0.044647f, -0.044731f, -0.044816f, -0.0449f, -0.044985f, -0.045069f, -0.045154f, -0.045238f,
+-0.045323f, -0.045407f, -0.045492f, -0.045576f, -0.045661f, -0.045745f, -0.04583f, -0.045914f, -0.045999f, -0.046083f, -0.046168f, -0.046252f, -0.046337f, -0.046421f, -0.046506f, -0.046591f, -0.046675f, -0.04676f, -0.046844f, -0.046929f,
+-0.047013f, -0.047098f, -0.047182f, -0.047267f, -0.047352f, -0.047436f, -0.047521f, -0.047605f, -0.04769f, -0.047775f, -0.047859f, -0.047944f, -0.048028f, -0.048113f, -0.048198f, -0.048282f, -0.048367f, -0.048451f, -0.048536f, -0.048621f,
+-0.048705f, -0.04879f, -0.048875f, -0.048959f, -0.049044f, -0.049128f, -0.049213f, -0.049298f, -0.049382f, -0.049467f, -0.049552f, -0.049636f, -0.049721f, -0.049806f, -0.04989f, -0.049975f, -0.05006f, -0.050144f, -0.050229f, -0.050314f,
+-0.050399f, -0.050483f, -0.050568f, -0.050653f, -0.050737f, -0.050822f, -0.050907f, -0.050991f, -0.051076f, -0.051161f, -0.051246f, -0.05133f, -0.051415f, -0.0515f, -0.051585f, -0.051669f, -0.051754f, -0.051839f, -0.051924f, -0.052008f,
+-0.052093f, -0.052178f, -0.052263f, -0.052347f, -0.052432f, -0.052517f, -0.052602f, -0.052686f, -0.052771f, -0.052856f, -0.052941f, -0.053026f, -0.05311f, -0.053195f, -0.05328f, -0.053365f, -0.05345f, -0.053534f, -0.053619f, -0.053704f,
+-0.053789f, -0.053874f, -0.053958f, -0.054043f, -0.054128f, -0.054213f, -0.054298f, -0.054383f, -0.054467f, -0.054552f, -0.054637f, -0.054722f, -0.054807f, -0.054892f, -0.054977f, -0.055061f, -0.055146f, -0.055231f, -0.055316f, -0.055401f,
+-0.055486f, -0.055571f, -0.055656f, -0.05574f, -0.055825f, -0.05591f, -0.055995f, -0.05608f, -0.056165f, -0.05625f, -0.056335f, -0.05642f, -0.056505f, -0.05659f, -0.056674f, -0.056759f, -0.056844f, -0.056929f, -0.057014f, -0.057099f,
+-0.057184f, -0.057269f, -0.057354f, -0.057439f, -0.057524f, -0.057609f, -0.057694f, -0.057779f, -0.057864f, -0.057949f, -0.058034f, -0.058119f, -0.058204f, -0.058289f, -0.058374f, -0.058459f, -0.058544f, -0.058629f, -0.058713f, -0.058798f,
+-0.058883f, -0.058969f, -0.059054f, -0.059139f, -0.059224f, -0.059309f, -0.059394f, -0.059479f, -0.059564f, -0.059649f, -0.059734f, -0.059819f, -0.059904f, -0.059989f, -0.060074f, -0.060159f, -0.060244f, -0.060329f, -0.060414f, -0.060499f,
+-0.060584f, -0.060669f, -0.060754f, -0.060839f, -0.060924f, -0.06101f, -0.061095f, -0.06118f, -0.061265f, -0.06135f, -0.061435f, -0.06152f, -0.061605f, -0.06169f, -0.061775f, -0.06186f, -0.061946f, -0.062031f, -0.062116f, -0.062201f,
+-0.062286f, -0.062371f, -0.062456f, -0.062541f, -0.062627f, -0.062712f, -0.062797f, -0.062882f, -0.062967f, -0.063052f, -0.063137f, -0.063223f, -0.063308f, -0.063393f, -0.063478f, -0.063563f, -0.063648f, -0.063733f, -0.063819f, -0.063904f,
+-0.063989f, -0.064074f, -0.064159f, -0.064245f, -0.06433f, -0.064415f, -0.0645f, -0.064585f, -0.064671f, -0.064756f, -0.064841f, -0.064926f, -0.065011f, -0.065097f, -0.065182f, -0.065267f, -0.065352f, -0.065437f, -0.065523f, -0.065608f,
+-0.065693f, -0.065778f, -0.065864f, -0.065949f, -0.066034f, -0.066119f, -0.066205f, -0.06629f, -0.066375f, -0.06646f, -0.066546f, -0.066631f, -0.066716f, -0.066802f, -0.066887f, -0.066972f, -0.067057f, -0.067143f, -0.067228f, -0.067313f,
+-0.067398f, -0.067484f, -0.067569f, -0.067654f, -0.06774f, -0.067825f, -0.06791f, -0.067996f, -0.068081f, -0.068166f, -0.068252f, -0.068337f, -0.068422f, -0.068508f, -0.068593f, -0.068678f, -0.068764f, -0.068849f, -0.068934f, -0.06902f,
+-0.069105f, -0.06919f, -0.069276f, -0.069361f, -0.069446f, -0.069532f, -0.069617f, -0.069702f, -0.069788f, -0.069873f, -0.069959f, -0.070044f, -0.070129f, -0.070215f, -0.0703f, -0.070386f, -0.070471f, -0.070556f, -0.070642f, -0.070727f,
+-0.070812f, -0.070898f, -0.070983f, -0.071069f, -0.071154f, -0.07124f, -0.071325f, -0.07141f, -0.071496f, -0.071581f, -0.071667f, -0.071752f, -0.071838f, -0.071923f, -0.072008f, -0.072094f, -0.072179f, -0.072265f, -0.07235f, -0.072436f,
+-0.072521f, -0.072607f, -0.072692f, -0.072778f, -0.072863f, -0.072948f, -0.073034f, -0.073119f, -0.073205f, -0.07329f, -0.073376f, -0.073461f, -0.073547f, -0.073632f, -0.073718f, -0.073803f, -0.073889f, -0.073974f, -0.07406f, -0.074145f,
+-0.074231f, -0.074316f, -0.074402f, -0.074487f, -0.074573f, -0.074659f, -0.074744f, -0.07483f, -0.074915f, -0.075001f, -0.075086f, -0.075172f, -0.075257f, -0.075343f, -0.075428f, -0.075514f, -0.075599f, -0.075685f, -0.075771f, -0.075856f,
+-0.075942f, -0.076027f, -0.076113f, -0.076198f, -0.076284f, -0.07637f, -0.076455f, -0.076541f, -0.076626f, -0.076712f, -0.076798f, -0.076883f, -0.076969f, -0.077054f, -0.07714f, -0.077226f, -0.077311f, -0.077397f, -0.077482f, -0.077568f,
+-0.077654f, -0.077739f, -0.077825f, -0.077911f, -0.077996f, -0.078082f, -0.078167f, -0.078253f, -0.078339f, -0.078424f, -0.07851f, -0.078596f, -0.078681f, -0.078767f, -0.078853f, -0.078938f, -0.079024f, -0.07911f, -0.079195f, -0.079281f,
+-0.079367f, -0.079452f, -0.079538f, -0.079624f, -0.079709f, -0.079795f, -0.079881f, -0.079966f, -0.080052f, -0.080138f, -0.080223f, -0.080309f, -0.080395f, -0.080481f, -0.080566f, -0.080652f, -0.080738f, -0.080823f, -0.080909f, -0.080995f,
+-0.081081f, -0.081166f, -0.081252f, -0.081338f, -0.081423f, -0.081509f, -0.081595f, -0.081681f, -0.081766f, -0.081852f, -0.081938f, -0.082024f, -0.082109f, -0.082195f, -0.082281f, -0.082367f, -0.082452f, -0.082538f, -0.082624f, -0.08271f,
+-0.082796f, -0.082881f, -0.082967f, -0.083053f, -0.083139f, -0.083224f, -0.08331f, -0.083396f, -0.083482f, -0.083568f, -0.083653f, -0.083739f, -0.083825f, -0.083911f, -0.083997f, -0.084082f, -0.084168f, -0.084254f, -0.08434f, -0.084426f,
+-0.084511f, -0.084597f, -0.084683f, -0.084769f, -0.084855f, -0.084941f, -0.085026f, -0.085112f, -0.085198f, -0.085284f, -0.08537f, -0.085456f, -0.085542f, -0.085627f, -0.085713f, -0.085799f, -0.085885f, -0.085971f, -0.086057f, -0.086143f,
+-0.086228f, -0.086314f, -0.0864f, -0.086486f, -0.086572f, -0.086658f, -0.086744f, -0.08683f, -0.086916f, -0.087001f, -0.087087f, -0.087173f, -0.087259f, -0.087345f, -0.087431f, -0.087517f, -0.087603f, -0.087689f, -0.087775f, -0.087861f,
+-0.087946f, -0.088032f, -0.088118f, -0.088204f, -0.08829f, -0.088376f, -0.088462f, -0.088548f, -0.088634f, -0.08872f, -0.088806f, -0.088892f, -0.088978f, -0.089064f, -0.08915f, -0.089236f, -0.089321f, -0.089407f, -0.089493f, -0.089579f,
+-0.089665f, -0.089751f, -0.089837f, -0.089923f, -0.090009f, -0.090095f, -0.090181f, -0.090267f, -0.090353f, -0.090439f, -0.090525f, -0.090611f, -0.090697f, -0.090783f, -0.090869f, -0.090955f, -0.091041f, -0.091127f, -0.091213f, -0.091299f,
+-0.091385f, -0.091471f, -0.091557f, -0.091643f, -0.091729f, -0.091815f, -0.091901f, -0.091987f, -0.092073f, -0.092159f, -0.092246f, -0.092332f, -0.092418f, -0.092504f, -0.09259f, -0.092676f, -0.092762f, -0.092848f, -0.092934f, -0.09302f,
+-0.093106f, -0.093192f, -0.093278f, -0.093364f, -0.09345f, -0.093536f, -0.093622f, -0.093709f, -0.093795f, -0.093881f, -0.093967f, -0.094053f, -0.094139f, -0.094225f, -0.094311f, -0.094397f, -0.094483f, -0.094569f, -0.094656f, -0.094742f,
+-0.094828f, -0.094914f, -0.095f, -0.095086f, -0.095172f, -0.095258f, -0.095344f, -0.095431f, -0.095517f, -0.095603f, -0.095689f, -0.095775f, -0.095861f, -0.095947f, -0.096033f, -0.09612f, -0.096206f, -0.096292f, -0.096378f, -0.096464f,
+-0.09655f, -0.096637f, -0.096723f, -0.096809f, -0.096895f, -0.096981f, -0.097067f, -0.097154f, -0.09724f, -0.097326f, -0.097412f, -0.097498f, -0.097584f, -0.097671f, -0.097757f, -0.097843f, -0.097929f, -0.098015f, -0.098102f, -0.098188f,
+-0.098274f, -0.09836f, -0.098446f, -0.098532f, -0.098619f, -0.098705f, -0.098791f, -0.098877f, -0.098964f, -0.09905f, -0.099136f, -0.099222f, -0.099308f, -0.099395f, -0.099481f, -0.099567f, -0.099653f, -0.09974f, -0.099826f, -0.099912f,
+-0.099998f, -0.100085f, -0.100171f, -0.100257f, -0.100343f, -0.10043f, -0.100516f, -0.100602f, -0.100688f, -0.100775f, -0.100861f, -0.100947f, -0.101033f, -0.10112f, -0.101206f, -0.101292f, -0.101378f, -0.101465f, -0.101551f, -0.101637f,
+-0.101724f, -0.10181f, -0.101896f, -0.101982f, -0.102069f, -0.102155f, -0.102241f, -0.102328f, -0.102414f, -0.1025f, -0.102587f, -0.102673f, -0.102759f, -0.102845f, -0.102932f, -0.103018f, -0.103104f, -0.103191f, -0.103277f, -0.103363f,
+-0.10345f, -0.103536f, -0.103622f, -0.103709f, -0.103795f, -0.103881f, -0.103968f, -0.104054f, -0.10414f, -0.104227f, -0.104313f, -0.104399f, -0.104486f, -0.104572f, -0.104658f, -0.104745f, -0.104831f, -0.104918f, -0.105004f, -0.10509f,
+-0.105177f, -0.105263f, -0.105349f, -0.105436f, -0.105522f, -0.105608f, -0.105695f, -0.105781f, -0.105868f, -0.105954f, -0.10604f, -0.106127f, -0.106213f, -0.1063f, -0.106386f, -0.106472f, -0.106559f, -0.106645f, -0.106732f, -0.106818f,
+-0.106904f, -0.106991f, -0.107077f, -0.107164f, -0.10725f, -0.107336f, -0.107423f, -0.107509f, -0.107596f, -0.107682f, -0.107769f, -0.107855f, -0.107941f, -0.108028f, -0.108114f, -0.108201f, -0.108287f, -0.108374f, -0.10846f, -0.108547f,
+-0.108633f, -0.108719f, -0.108806f, -0.108892f, -0.108979f, -0.109065f, -0.109152f, -0.109238f, -0.109325f, -0.109411f, -0.109498f, -0.109584f, -0.109671f, -0.109757f, -0.109843f, -0.10993f, -0.110016f, -0.110103f, -0.110189f, -0.110276f,
+-0.110362f, -0.110449f, -0.110535f, -0.110622f, -0.110708f, -0.110795f, -0.110881f, -0.110968f, -0.111054f, -0.111141f, -0.111227f, -0.111314f, -0.1114f, -0.111487f, -0.111573f, -0.11166f, -0.111746f, -0.111833f, -0.111919f, -0.112006f,
+-0.112093f, -0.112179f, -0.112266f, -0.112352f, -0.112439f, -0.112525f, -0.112612f, -0.112698f, -0.112785f, -0.112871f, -0.112958f, -0.113044f, -0.113131f, -0.113218f, -0.113304f, -0.113391f, -0.113477f, -0.113564f, -0.11365f, -0.113737f,
+-0.113823f, -0.11391f, -0.113997f, -0.114083f, -0.11417f, -0.114256f, -0.114343f, -0.114429f, -0.114516f, -0.114603f, -0.114689f, -0.114776f, -0.114862f, -0.114949f, -0.115036f, -0.115122f, -0.115209f, -0.115295f, -0.115382f, -0.115469f,
+-0.115555f, -0.115642f, -0.115728f, -0.115815f, -0.115902f, -0.115988f, -0.116075f, -0.116161f, -0.116248f, -0.116335f, -0.116421f, -0.116508f, -0.116595f, -0.116681f, -0.116768f, -0.116854f, -0.116941f, -0.117028f, -0.117114f, -0.117201f,
+-0.117288f, -0.117374f, -0.117461f, -0.117548f, -0.117634f, -0.117721f, -0.117807f, -0.117894f, -0.117981f, -0.118067f, -0.118154f, -0.118241f, -0.118327f, -0.118414f, -0.118501f, -0.118587f, -0.118674f, -0.118761f, -0.118847f, -0.118934f,
+-0.119021f, -0.119107f, -0.119194f, -0.119281f, -0.119367f, -0.119454f, -0.119541f, -0.119627f, -0.119714f, -0.119801f, -0.119888f, -0.119974f, -0.120061f, -0.120148f, -0.120234f, -0.120321f, -0.120408f, -0.120494f, -0.120581f, -0.120668f,
+-0.120755f, -0.120841f, -0.120928f, -0.121015f, -0.121101f, -0.121188f, -0.121275f, -0.121362f, -0.121448f, -0.121535f, -0.121622f, -0.121709f, -0.121795f, -0.121882f, -0.121969f, -0.122055f, -0.122142f, -0.122229f, -0.122316f, -0.122402f,
+-0.122489f, -0.122576f, -0.122663f, -0.122749f, -0.122836f, -0.122923f, -0.12301f, -0.123096f, -0.123183f, -0.12327f, -0.123357f, -0.123443f, -0.12353f, -0.123617f, -0.123704f, -0.123791f, -0.123877f, -0.123964f, -0.124051f, -0.124138f,
+-0.124224f, -0.124311f, -0.124398f, -0.124485f, -0.124572f, -0.124658f, -0.124745f, -0.124832f, -0.124919f, -0.125005f, -0.125092f, -0.125179f, -0.125266f, -0.125353f, -0.125439f, -0.125526f, -0.125613f, -0.1257f, -0.125787f, -0.125873f,
+-0.12596f, -0.126047f, -0.126134f, -0.126221f, -0.126308f, -0.126394f, -0.126481f, -0.126568f, -0.126655f, -0.126742f, -0.126829f, -0.126915f, -0.127002f, -0.127089f, -0.127176f, -0.127263f, -0.12735f, -0.127436f, -0.127523f, -0.12761f,
+-0.127697f, -0.127784f, -0.127871f, -0.127957f, -0.128044f, -0.128131f, -0.128218f, -0.128305f, -0.128392f, -0.128479f, -0.128565f, -0.128652f, -0.128739f, -0.128826f, -0.128913f, -0.129f, -0.129087f, -0.129173f, -0.12926f, -0.129347f,
+-0.129434f, -0.129521f, -0.129608f, -0.129695f, -0.129782f, -0.129868f, -0.129955f, -0.130042f, -0.130129f, -0.130216f, -0.130303f, -0.13039f, -0.130477f, -0.130564f, -0.13065f, -0.130737f, -0.130824f, -0.130911f, -0.130998f, -0.131085f,
+-0.131172f, -0.131259f, -0.131346f, -0.131433f, -0.13152f, -0.131606f, -0.131693f, -0.13178f, -0.131867f, -0.131954f, -0.132041f, -0.132128f, -0.132215f, -0.132302f, -0.132389f, -0.132476f, -0.132563f, -0.13265f, -0.132736f, -0.132823f,
+-0.13291f, -0.132997f, -0.133084f, -0.133171f, -0.133258f, -0.133345f, -0.133432f, -0.133519f, -0.133606f, -0.133693f, -0.13378f, -0.133867f, -0.133954f, -0.134041f, -0.134128f, -0.134215f, -0.134302f, -0.134389f, -0.134475f, -0.134562f,
+-0.134649f, -0.134736f, -0.134823f, -0.13491f, -0.134997f, -0.135084f, -0.135171f, -0.135258f, -0.135345f, -0.135432f, -0.135519f, -0.135606f, -0.135693f, -0.13578f, -0.135867f, -0.135954f, -0.136041f, -0.136128f, -0.136215f, -0.136302f,
+-0.136389f, -0.136476f, -0.136563f, -0.13665f, -0.136737f, -0.136824f, -0.136911f, -0.136998f, -0.137085f, -0.137172f, -0.137259f, -0.137346f, -0.137433f, -0.13752f, -0.137607f, -0.137694f, -0.137781f, -0.137868f, -0.137955f, -0.138042f,
+-0.138129f, -0.138216f, -0.138303f, -0.13839f, -0.138477f, -0.138564f, -0.138651f, -0.138738f, -0.138826f, -0.138913f, -0.139f, -0.139087f, -0.139174f, -0.139261f, -0.139348f, -0.139435f, -0.139522f, -0.139609f, -0.139696f, -0.139783f,
+-0.13987f, -0.139957f, -0.140044f, -0.140131f, -0.140218f, -0.140305f, -0.140392f, -0.140479f, -0.140567f, -0.140654f, -0.140741f, -0.140828f, -0.140915f, -0.141002f, -0.141089f, -0.141176f, -0.141263f, -0.14135f, -0.141437f, -0.141524f,
+-0.141611f, -0.141698f, -0.141786f, -0.141873f, -0.14196f, -0.142047f, -0.142134f, -0.142221f, -0.142308f, -0.142395f, -0.142482f, -0.142569f, -0.142656f, -0.142744f, -0.142831f, -0.142918f, -0.143005f, -0.143092f, -0.143179f, -0.143266f,
+-0.143353f, -0.14344f, -0.143527f, -0.143615f, -0.143702f, -0.143789f, -0.143876f, -0.143963f, -0.14405f, -0.144137f, -0.144224f, -0.144311f, -0.144399f, -0.144486f, -0.144573f, -0.14466f, -0.144747f, -0.144834f, -0.144921f, -0.145008f,
+-0.145096f, -0.145183f, -0.14527f, -0.145357f, -0.145444f, -0.145531f, -0.145618f, -0.145706f, -0.145793f, -0.14588f, -0.145967f, -0.146054f, -0.146141f, -0.146228f, -0.146316f, -0.146403f, -0.14649f, -0.146577f, -0.146664f, -0.146751f,
+-0.146838f, -0.146926f, -0.147013f, -0.1471f, -0.147187f, -0.147274f, -0.147361f, -0.147449f, -0.147536f, -0.147623f, -0.14771f, -0.147797f, -0.147884f, -0.147972f, -0.148059f, -0.148146f, -0.148233f, -0.14832f, -0.148407f, -0.148495f,
+-0.148582f, -0.148669f, -0.148756f, -0.148843f, -0.148931f, -0.149018f, -0.149105f, -0.149192f, -0.149279f, -0.149366f, -0.149454f, -0.149541f, -0.149628f, -0.149715f, -0.149802f, -0.14989f, -0.149977f, -0.150064f, -0.150151f, -0.150238f,
+-0.150326f, -0.150413f, -0.1505f, -0.150587f, -0.150674f, -0.150762f, -0.150849f, -0.150936f, -0.151023f, -0.151111f, -0.151198f, -0.151285f, -0.151372f, -0.151459f, -0.151547f, -0.151634f, -0.151721f, -0.151808f, -0.151895f, -0.151983f,
+-0.15207f, -0.152157f, -0.152244f, -0.152332f, -0.152419f, -0.152506f, -0.152593f, -0.152681f, -0.152768f, -0.152855f, -0.152942f, -0.153029f, -0.153117f, -0.153204f, -0.153291f, -0.153378f, -0.153466f, -0.153553f, -0.15364f, -0.153727f,
+-0.153815f, -0.153902f, -0.153989f, -0.154076f, -0.154164f, -0.154251f, -0.154338f, -0.154425f, -0.154513f, -0.1546f, -0.154687f, -0.154774f, -0.154862f, -0.154949f, -0.155036f, -0.155124f, -0.155211f, -0.155298f, -0.155385f, -0.155473f,
+-0.15556f, -0.155647f, -0.155734f, -0.155822f, -0.155909f, -0.155996f, -0.156083f, -0.156171f, -0.156258f, -0.156345f, -0.156433f, -0.15652f, -0.156607f, -0.156694f, -0.156782f, -0.156869f, -0.156956f, -0.157044f, -0.157131f, -0.157218f,
+-0.157305f, -0.157393f, -0.15748f, -0.157567f, -0.157655f, -0.157742f, -0.157829f, -0.157917f, -0.158004f, -0.158091f, -0.158178f, -0.158266f, -0.158353f, -0.15844f, -0.158528f, -0.158615f, -0.158702f, -0.15879f, -0.158877f, -0.158964f,
+-0.159051f, -0.159139f, -0.159226f, -0.159313f, -0.159401f, -0.159488f, -0.159575f, -0.159663f, -0.15975f, -0.159837f, -0.159925f, -0.160012f, -0.160099f, -0.160187f, -0.160274f, -0.160361f, -0.160449f, -0.160536f, -0.160623f, -0.160711f,
+-0.160798f, -0.160885f, -0.160973f, -0.16106f, -0.161147f, -0.161235f, -0.161322f, -0.161409f, -0.161497f, -0.161584f, -0.161671f, -0.161759f, -0.161846f, -0.161933f, -0.162021f, -0.162108f, -0.162195f, -0.162283f, -0.16237f, -0.162457f,
+-0.162545f, -0.162632f, -0.162719f, -0.162807f, -0.162894f, -0.162981f, -0.163069f, -0.163156f, -0.163243f, -0.163331f, -0.163418f, -0.163506f, -0.163593f, -0.16368f, -0.163768f, -0.163855f, -0.163942f, -0.16403f, -0.164117f, -0.164204f,
+-0.164292f, -0.164379f, -0.164467f, -0.164554f, -0.164641f, -0.164729f, -0.164816f, -0.164903f, -0.164991f, -0.165078f, -0.165165f, -0.165253f, -0.16534f, -0.165428f, -0.165515f, -0.165602f, -0.16569f, -0.165777f, -0.165865f, -0.165952f,
+-0.166039f, -0.166127f, -0.166214f, -0.166301f, -0.166389f, -0.166476f, -0.166564f, -0.166651f, -0.166738f, -0.166826f, -0.166913f, -0.167001f, -0.167088f, -0.167175f, -0.167263f, -0.16735f, -0.167438f, -0.167525f, -0.167612f, -0.1677f,
+-0.167787f, -0.167874f, -0.167962f, -0.168049f, -0.168137f, -0.168224f, -0.168312f, -0.168399f, -0.168486f, -0.168574f, -0.168661f, -0.168749f, -0.168836f, -0.168923f, -0.169011f, -0.169098f, -0.169186f, -0.169273f, -0.16936f, -0.169448f,
+-0.169535f, -0.169623f, -0.16971f, -0.169798f, -0.169885f, -0.169972f, -0.17006f, -0.170147f, -0.170235f, -0.170322f, -0.170409f, -0.170497f, -0.170584f, -0.170672f, -0.170759f, -0.170847f, -0.170934f, -0.171021f, -0.171109f, -0.171196f,
+-0.171284f, -0.171371f, -0.171459f, -0.171546f, -0.171633f, -0.171721f, -0.171808f, -0.171896f, -0.171983f, -0.172071f, -0.172158f, -0.172245f, -0.172333f, -0.17242f, -0.172508f, -0.172595f, -0.172683f, -0.17277f, -0.172858f, -0.172945f,
+-0.173032f, -0.17312f, -0.173207f, -0.173295f, -0.173382f, -0.17347f, -0.173557f, -0.173645f, -0.173732f, -0.17382f, -0.173907f, -0.173994f, -0.174082f, -0.174169f, -0.174257f, -0.174344f, -0.174432f, -0.174519f, -0.174607f, -0.174694f,
+-0.174782f, -0.174869f, -0.174956f, -0.175044f, -0.175131f, -0.175219f, -0.175306f, -0.175394f, -0.175481f, -0.175569f, -0.175656f, -0.175744f, -0.175831f, -0.175919f, -0.176006f, -0.176093f, -0.176181f, -0.176268f, -0.176356f, -0.176443f,
+-0.176531f, -0.176618f, -0.176706f, -0.176793f, -0.176881f, -0.176968f, -0.177056f, -0.177143f, -0.177231f, -0.177318f, -0.177406f, -0.177493f, -0.177581f, -0.177668f, -0.177755f, -0.177843f, -0.17793f, -0.178018f, -0.178105f, -0.178193f,
+-0.17828f, -0.178368f, -0.178455f, -0.178543f, -0.17863f, -0.178718f, -0.178805f, -0.178893f, -0.17898f, -0.179068f, -0.179155f, -0.179243f, -0.17933f, -0.179418f, -0.179505f, -0.179593f, -0.17968f, -0.179768f, -0.179855f, -0.179943f,
+-0.18003f, -0.180118f, -0.180205f, -0.180293f, -0.18038f, -0.180468f, -0.180555f, -0.180643f, -0.18073f, -0.180818f, -0.180905f, -0.180993f, -0.18108f, -0.181168f, -0.181255f, -0.181343f, -0.18143f, -0.181518f, -0.181605f, -0.181693f,
+-0.18178f, -0.181868f, -0.181955f, -0.182043f, -0.18213f, -0.182218f, -0.182305f, -0.182393f, -0.18248f, -0.182568f, -0.182655f, -0.182743f, -0.18283f, -0.182918f, -0.183005f, -0.183093f, -0.18318f, -0.183268f, -0.183355f, -0.183443f,
+-0.18353f, -0.183618f, -0.183706f, -0.183793f, -0.183881f, -0.183968f, -0.184056f, -0.184143f, -0.184231f, -0.184318f, -0.184406f, -0.184493f, -0.184581f, -0.184668f, -0.184756f, -0.184843f, -0.184931f, -0.185018f, -0.185106f, -0.185193f,
+-0.185281f, -0.185368f, -0.185456f, -0.185544f, -0.185631f, -0.185719f, -0.185806f, -0.185894f, -0.185981f, -0.186069f, -0.186156f, -0.186244f, -0.186331f, -0.186419f, -0.186506f, -0.186594f, -0.186681f, -0.186769f, -0.186856f, -0.186944f,
+-0.187032f, -0.187119f, -0.187207f, -0.187294f, -0.187382f, -0.187469f, -0.187557f, -0.187644f, -0.187732f, -0.187819f, -0.187907f, -0.187994f, -0.188082f, -0.18817f, -0.188257f, -0.188345f, -0.188432f, -0.18852f, -0.188607f, -0.188695f,
+-0.188782f, -0.18887f, -0.188957f, -0.189045f, -0.189133f, -0.18922f, -0.189308f, -0.189395f, -0.189483f, -0.18957f, -0.189658f, -0.189745f, -0.189833f, -0.18992f, -0.190008f, -0.190096f, -0.190183f, -0.190271f, -0.190358f, -0.190446f,
+-0.190533f, -0.190621f, -0.190708f, -0.190796f, -0.190884f, -0.190971f, -0.191059f, -0.191146f, -0.191234f, -0.191321f, -0.191409f, -0.191496f, -0.191584f, -0.191672f, -0.191759f, -0.191847f, -0.191934f, -0.192022f, -0.192109f, -0.192197f,
+-0.192284f, -0.192372f, -0.19246f, -0.192547f, -0.192635f, -0.192722f, -0.19281f, -0.192897f, -0.192985f, -0.193072f, -0.19316f, -0.193248f, -0.193335f, -0.193423f, -0.19351f, -0.193598f, -0.193685f, -0.193773f, -0.193861f, -0.193948f,
+-0.194036f, -0.194123f, -0.194211f, -0.194298f, -0.194386f, -0.194474f, -0.194561f, -0.194649f, -0.194736f, -0.194824f, -0.194911f, -0.194999f, -0.195086f, -0.195174f, -0.195262f, -0.195349f, -0.195437f, -0.195524f, -0.195612f, -0.195699f,
+-0.195787f, -0.195875f, -0.195962f, -0.19605f, -0.196137f, -0.196225f, -0.196312f, -0.1964f, -0.196488f, -0.196575f, -0.196663f, -0.19675f, -0.196838f, -0.196925f, -0.197013f, -0.197101f, -0.197188f, -0.197276f, -0.197363f, -0.197451f,
+-0.197539f, -0.197626f, -0.197714f, -0.197801f, -0.197889f, -0.197976f, -0.198064f, -0.198152f, -0.198239f, -0.198327f, -0.198414f, -0.198502f, -0.198589f, -0.198677f, -0.198765f, -0.198852f, -0.19894f, -0.199027f, -0.199115f, -0.199202f,
+-0.19929f, -0.199378f, -0.199465f, -0.199553f, -0.19964f, -0.199728f, -0.199816f, -0.199903f, -0.199991f, -0.200078f, -0.200166f, -0.200253f, -0.200341f, -0.200429f, -0.200516f, -0.200604f, -0.200691f, -0.200779f, -0.200867f, -0.200954f,
+-0.201042f, -0.201129f, -0.201217f, -0.201304f, -0.201392f, -0.20148f, -0.201567f, -0.201655f, -0.201742f, -0.20183f, -0.201918f, -0.202005f, -0.202093f, -0.20218f, -0.202268f, -0.202355f, -0.202443f, -0.202531f, -0.202618f, -0.202706f,
+-0.202793f, -0.202881f, -0.202969f, -0.203056f, -0.203144f, -0.203231f, -0.203319f, -0.203406f, -0.203494f, -0.203582f, -0.203669f, -0.203757f, -0.203844f, -0.203932f, -0.20402f, -0.204107f, -0.204195f, -0.204282f, -0.20437f, -0.204458f,
+-0.204545f, -0.204633f, -0.20472f, -0.204808f, -0.204895f, -0.204983f, -0.205071f, -0.205158f, -0.205246f, -0.205333f, -0.205421f, -0.205509f, -0.205596f, -0.205684f, -0.205771f, -0.205859f, -0.205947f, -0.206034f, -0.206122f, -0.206209f,
+-0.206297f, -0.206384f, -0.206472f, -0.20656f, -0.206647f, -0.206735f, -0.206822f, -0.20691f, -0.206998f, -0.207085f, -0.207173f, -0.20726f, -0.207348f, -0.207436f, -0.207523f, -0.207611f, -0.207698f, -0.207786f, -0.207874f, -0.207961f,
+-0.208049f, -0.208136f, -0.208224f, -0.208311f, -0.208399f, -0.208487f, -0.208574f, -0.208662f, -0.208749f, -0.208837f, -0.208925f, -0.209012f, -0.2091f, -0.209187f, -0.209275f, -0.209363f, -0.20945f, -0.209538f, -0.209625f, -0.209713f,
+-0.209801f, -0.209888f, -0.209976f, -0.210063f, -0.210151f, -0.210238f, -0.210326f, -0.210414f, -0.210501f, -0.210589f, -0.210676f, -0.210764f, -0.210852f, -0.210939f, -0.211027f, -0.211114f, -0.211202f, -0.21129f, -0.211377f, -0.211465f,
+-0.211552f, -0.21164f, -0.211727f, -0.211815f, -0.211903f, -0.21199f, -0.212078f, -0.212165f, -0.212253f, -0.212341f, -0.212428f, -0.212516f, -0.212603f, -0.212691f, -0.212779f, -0.212866f, -0.212954f, -0.213041f, -0.213129f, -0.213217f,
+-0.213304f, -0.213392f, -0.213479f, -0.213567f, -0.213654f, -0.213742f, -0.21383f, -0.213917f, -0.214005f, -0.214092f, -0.21418f, -0.214268f, -0.214355f, -0.214443f, -0.21453f, -0.214618f, -0.214705f, -0.214793f, -0.214881f, -0.214968f,
+-0.215056f, -0.215143f, -0.215231f, -0.215319f, -0.215406f, -0.215494f, -0.215581f, -0.215669f, -0.215757f, -0.215844f, -0.215932f, -0.216019f, -0.216107f, -0.216194f, -0.216282f, -0.21637f, -0.216457f, -0.216545f, -0.216632f, -0.21672f,
+-0.216808f, -0.216895f, -0.216983f, -0.21707f, -0.217158f, -0.217245f, -0.217333f, -0.217421f, -0.217508f, -0.217596f, -0.217683f, -0.217771f, -0.217859f, -0.217946f, -0.218034f, -0.218121f, -0.218209f, -0.218296f, -0.218384f, -0.218472f,
+-0.218559f, -0.218647f, -0.218734f, -0.218822f, -0.21891f, -0.218997f, -0.219085f, -0.219172f, -0.21926f, -0.219347f, -0.219435f, -0.219523f, -0.21961f, -0.219698f, -0.219785f, -0.219873f, -0.21996f, -0.220048f, -0.220136f, -0.220223f,
+-0.220311f, -0.220398f, -0.220486f, -0.220573f, -0.220661f, -0.220749f, -0.220836f, -0.220924f, -0.221011f, -0.221099f, -0.221187f, -0.221274f, -0.221362f, -0.221449f, -0.221537f, -0.221624f, -0.221712f, -0.2218f, -0.221887f, -0.221975f,
+-0.222062f, -0.22215f, -0.222237f, -0.222325f, -0.222413f, -0.2225f, -0.222588f, -0.222675f, -0.222763f, -0.22285f, -0.222938f, -0.223026f, -0.223113f, -0.223201f, -0.223288f, -0.223376f, -0.223463f, -0.223551f, -0.223638f, -0.223726f,
+-0.223814f, -0.223901f, -0.223989f, -0.224076f, -0.224164f, -0.224251f, -0.224339f, -0.224427f, -0.224514f, -0.224602f, -0.224689f, -0.224777f, -0.224864f, -0.224952f, -0.22504f, -0.225127f, -0.225215f, -0.225302f, -0.22539f, -0.225477f,
+-0.225565f, -0.225652f, -0.22574f, -0.225828f, -0.225915f, -0.226003f, -0.22609f, -0.226178f, -0.226265f, -0.226353f, -0.22644f, -0.226528f, -0.226616f, -0.226703f, -0.226791f, -0.226878f, -0.226966f, -0.227053f, -0.227141f, -0.227228f,
+-0.227316f, -0.227404f, -0.227491f, -0.227579f, -0.227666f, -0.227754f, -0.227841f, -0.227929f, -0.228016f, -0.228104f, -0.228192f, -0.228279f, -0.228367f, -0.228454f, -0.228542f, -0.228629f, -0.228717f, -0.228804f, -0.228892f, -0.228979f,
+-0.229067f, -0.229155f, -0.229242f, -0.22933f, -0.229417f, -0.229505f, -0.229592f, -0.22968f, -0.229767f, -0.229855f, -0.229942f, -0.23003f, -0.230118f, -0.230205f, -0.230293f, -0.23038f, -0.230468f, -0.230555f, -0.230643f, -0.23073f,
+-0.230818f, -0.230905f, -0.230993f, -0.231081f, -0.231168f, -0.231256f, -0.231343f, -0.231431f, -0.231518f, -0.231606f, -0.231693f, -0.231781f, -0.231868f, -0.231956f, -0.232043f, -0.232131f, -0.232218f, -0.232306f, -0.232394f, -0.232481f,
+-0.232569f, -0.232656f, -0.232744f, -0.232831f, -0.232919f, -0.233006f, -0.233094f, -0.233181f, -0.233269f, -0.233356f, -0.233444f, -0.233531f, -0.233619f, -0.233706f, -0.233794f, -0.233881f, -0.233969f, -0.234057f, -0.234144f, -0.234232f,
+-0.234319f, -0.234407f, -0.234494f, -0.234582f, -0.234669f, -0.234757f, -0.234844f, -0.234932f, -0.235019f, -0.235107f, -0.235194f, -0.235282f, -0.235369f, -0.235457f, -0.235544f, -0.235632f, -0.235719f, -0.235807f, -0.235894f, -0.235982f,
+-0.236069f, -0.236157f, -0.236244f, -0.236332f, -0.236419f, -0.236507f, -0.236594f, -0.236682f, -0.236769f, -0.236857f, -0.236944f, -0.237032f, -0.237119f, -0.237207f, -0.237294f, -0.237382f, -0.237469f, -0.237557f, -0.237644f, -0.237732f,
+-0.237819f, -0.237907f, -0.237994f, -0.238082f, -0.238169f, -0.238257f, -0.238344f, -0.238432f, -0.238519f, -0.238607f, -0.238694f, -0.238782f, -0.238869f, -0.238957f, -0.239044f, -0.239132f, -0.239219f, -0.239307f, -0.239394f, -0.239482f,
+-0.239569f, -0.239657f, -0.239744f, -0.239832f, -0.239919f, -0.240007f, -0.240094f, -0.240182f, -0.240269f, -0.240357f, -0.240444f, -0.240532f, -0.240619f, -0.240707f, -0.240794f, -0.240882f, -0.240969f, -0.241057f, -0.241144f, -0.241231f,
+-0.241319f, -0.241406f, -0.241494f, -0.241581f, -0.241669f, -0.241756f, -0.241844f, -0.241931f, -0.242019f, -0.242106f, -0.242194f, -0.242281f, -0.242369f, -0.242456f, -0.242544f, -0.242631f, -0.242718f, -0.242806f, -0.242893f, -0.242981f,
+-0.243068f, -0.243156f, -0.243243f, -0.243331f, -0.243418f, -0.243506f, -0.243593f, -0.243681f, -0.243768f, -0.243855f, -0.243943f, -0.24403f, -0.244118f, -0.244205f, -0.244293f, -0.24438f, -0.244468f, -0.244555f, -0.244643f, -0.24473f,
+-0.244817f, -0.244905f, -0.244992f, -0.24508f, -0.245167f, -0.245255f, -0.245342f, -0.24543f, -0.245517f, -0.245604f, -0.245692f, -0.245779f, -0.245867f, -0.245954f, -0.246042f, -0.246129f, -0.246217f, -0.246304f, -0.246391f, -0.246479f,
+-0.246566f, -0.246654f, -0.246741f, -0.246829f, -0.246916f, -0.247003f, -0.247091f, -0.247178f, -0.247266f, -0.247353f, -0.247441f, -0.247528f, -0.247615f, -0.247703f, -0.24779f, -0.247878f, -0.247965f, -0.248053f, -0.24814f, -0.248227f,
+-0.248315f, -0.248402f, -0.24849f, -0.248577f, -0.248665f, -0.248752f, -0.248839f, -0.248927f, -0.249014f, -0.249102f, -0.249189f, -0.249276f, -0.249364f, -0.249451f, -0.249539f, -0.249626f, -0.249714f, -0.249801f, -0.249888f, -0.249976f,
+-0.250063f, -0.250151f, -0.250238f, -0.250325f, -0.250413f, -0.2505f, -0.250588f, -0.250675f, -0.250762f, -0.25085f, -0.250937f, -0.251025f, -0.251112f, -0.251199f, -0.251287f, -0.251374f, -0.251462f, -0.251549f, -0.251636f, -0.251724f,
+-0.251811f, -0.251898f, -0.251986f, -0.252073f, -0.252161f, -0.252248f, -0.252335f, -0.252423f, -0.25251f, -0.252598f, -0.252685f, -0.252772f, -0.25286f, -0.252947f, -0.253034f, -0.253122f, -0.253209f, -0.253297f, -0.253384f, -0.253471f,
+-0.253559f, -0.253646f, -0.253733f, -0.253821f, -0.253908f, -0.253996f, -0.254083f, -0.25417f, -0.254258f, -0.254345f, -0.254432f, -0.25452f, -0.254607f, -0.254694f, -0.254782f, -0.254869f, -0.254957f, -0.255044f, -0.255131f, -0.255219f,
+-0.255306f, -0.255393f, -0.255481f, -0.255568f, -0.255655f, -0.255743f, -0.25583f, -0.255917f, -0.256005f, -0.256092f, -0.256179f, -0.256267f, -0.256354f, -0.256441f, -0.256529f, -0.256616f, -0.256704f, -0.256791f, -0.256878f, -0.256966f,
+-0.257053f, -0.25714f, -0.257228f, -0.257315f, -0.257402f, -0.25749f, -0.257577f, -0.257664f, -0.257752f, -0.257839f, -0.257926f, -0.258014f, -0.258101f, -0.258188f, -0.258275f, -0.258363f, -0.25845f, -0.258537f, -0.258625f, -0.258712f,
+-0.258799f, -0.258887f, -0.258974f, -0.259061f, -0.259149f, -0.259236f, -0.259323f, -0.259411f, -0.259498f, -0.259585f, -0.259673f, -0.25976f, -0.259847f, -0.259934f, -0.260022f, -0.260109f, -0.260196f, -0.260284f, -0.260371f, -0.260458f,
+-0.260546f, -0.260633f, -0.26072f, -0.260807f, -0.260895f, -0.260982f, -0.261069f, -0.261157f, -0.261244f, -0.261331f, -0.261418f, -0.261506f, -0.261593f, -0.26168f, -0.261768f, -0.261855f, -0.261942f, -0.262029f, -0.262117f, -0.262204f,
+-0.262291f, -0.262379f, -0.262466f, -0.262553f, -0.26264f, -0.262728f, -0.262815f, -0.262902f, -0.26299f, -0.263077f, -0.263164f, -0.263251f, -0.263339f, -0.263426f, -0.263513f, -0.2636f, -0.263688f, -0.263775f, -0.263862f, -0.263949f,
+-0.264037f, -0.264124f, -0.264211f, -0.264298f, -0.264386f, -0.264473f, -0.26456f, -0.264647f, -0.264735f, -0.264822f, -0.264909f, -0.264996f, -0.265084f, -0.265171f, -0.265258f, -0.265345f, -0.265433f, -0.26552f, -0.265607f, -0.265694f,
+-0.265782f, -0.265869f, -0.265956f, -0.266043f, -0.266131f, -0.266218f, -0.266305f, -0.266392f, -0.266479f, -0.266567f, -0.266654f, -0.266741f, -0.266828f, -0.266916f, -0.267003f, -0.26709f, -0.267177f, -0.267264f, -0.267352f, -0.267439f,
+-0.267526f, -0.267613f, -0.267701f, -0.267788f, -0.267875f, -0.267962f, -0.268049f, -0.268137f, -0.268224f, -0.268311f, -0.268398f, -0.268485f, -0.268573f, -0.26866f, -0.268747f, -0.268834f, -0.268921f, -0.269009f, -0.269096f, -0.269183f,
+-0.26927f, -0.269357f, -0.269445f, -0.269532f, -0.269619f, -0.269706f, -0.269793f, -0.26988f, -0.269968f, -0.270055f, -0.270142f, -0.270229f, -0.270316f, -0.270404f, -0.270491f, -0.270578f, -0.270665f, -0.270752f, -0.270839f, -0.270927f,
+-0.271014f, -0.271101f, -0.271188f, -0.271275f, -0.271362f, -0.27145f, -0.271537f, -0.271624f, -0.271711f, -0.271798f, -0.271885f, -0.271972f, -0.27206f, -0.272147f, -0.272234f, -0.272321f, -0.272408f, -0.272495f, -0.272583f, -0.27267f,
+-0.272757f, -0.272844f, -0.272931f, -0.273018f, -0.273105f, -0.273193f, -0.27328f, -0.273367f, -0.273454f, -0.273541f, -0.273628f, -0.273715f, -0.273802f, -0.27389f, -0.273977f, -0.274064f, -0.274151f, -0.274238f, -0.274325f, -0.274412f,
+-0.274499f, -0.274587f, -0.274674f, -0.274761f, -0.274848f, -0.274935f, -0.275022f, -0.275109f, -0.275196f, -0.275283f, -0.275371f, -0.275458f, -0.275545f, -0.275632f, -0.275719f, -0.275806f, -0.275893f, -0.27598f, -0.276067f, -0.276154f,
+-0.276242f, -0.276329f, -0.276416f, -0.276503f, -0.27659f, -0.276677f, -0.276764f, -0.276851f, -0.276938f, -0.277025f, -0.277112f, -0.277199f, -0.277287f, -0.277374f, -0.277461f, -0.277548f, -0.277635f, -0.277722f, -0.277809f, -0.277896f,
+-0.277983f, -0.27807f, -0.278157f, -0.278244f, -0.278331f, -0.278418f, -0.278506f, -0.278593f, -0.27868f, -0.278767f, -0.278854f, -0.278941f, -0.279028f, -0.279115f, -0.279202f, -0.279289f, -0.279376f, -0.279463f, -0.27955f, -0.279637f,
+-0.279724f, -0.279811f, -0.279898f, -0.279985f, -0.280072f, -0.280159f, -0.280246f, -0.280333f, -0.28042f, -0.280508f, -0.280595f, -0.280682f, -0.280769f, -0.280856f, -0.280943f, -0.28103f, -0.281117f, -0.281204f, -0.281291f, -0.281378f,
+-0.281465f, -0.281552f, -0.281639f, -0.281726f, -0.281813f, -0.2819f, -0.281987f, -0.282074f, -0.282161f, -0.282248f, -0.282335f, -0.282422f, -0.282509f, -0.282596f, -0.282683f, -0.28277f, -0.282857f, -0.282944f, -0.283031f, -0.283118f,
+-0.283205f, -0.283292f, -0.283379f, -0.283466f, -0.283553f, -0.28364f, -0.283727f, -0.283814f, -0.283901f, -0.283987f, -0.284074f, -0.284161f, -0.284248f, -0.284335f, -0.284422f, -0.284509f, -0.284596f, -0.284683f, -0.28477f, -0.284857f,
+-0.284944f, -0.285031f, -0.285118f, -0.285205f, -0.285292f, -0.285379f, -0.285466f, -0.285553f, -0.28564f, -0.285727f, -0.285814f, -0.285901f, -0.285987f, -0.286074f, -0.286161f, -0.286248f, -0.286335f, -0.286422f, -0.286509f, -0.286596f,
+-0.286683f, -0.28677f, -0.286857f, -0.286944f, -0.287031f, -0.287118f, -0.287204f, -0.287291f, -0.287378f, -0.287465f, -0.287552f, -0.287639f, -0.287726f, -0.287813f, -0.2879f, -0.287987f, -0.288074f, -0.28816f, -0.288247f, -0.288334f,
+-0.288421f, -0.288508f, -0.288595f, -0.288682f, -0.288769f, -0.288856f, -0.288942f, -0.289029f, -0.289116f, -0.289203f, -0.28929f, -0.289377f, -0.289464f, -0.289551f, -0.289638f, -0.289724f, -0.289811f, -0.289898f, -0.289985f, -0.290072f,
+-0.290159f, -0.290246f, -0.290332f, -0.290419f, -0.290506f, -0.290593f, -0.29068f, -0.290767f, -0.290854f, -0.29094f, -0.291027f, -0.291114f, -0.291201f, -0.291288f, -0.291375f, -0.291462f, -0.291548f, -0.291635f, -0.291722f, -0.291809f,
+-0.291896f, -0.291983f, -0.292069f, -0.292156f, -0.292243f, -0.29233f, -0.292417f, -0.292504f, -0.29259f, -0.292677f, -0.292764f, -0.292851f, -0.292938f, -0.293024f, -0.293111f, -0.293198f, -0.293285f, -0.293372f, -0.293458f, -0.293545f,
+-0.293632f, -0.293719f, -0.293806f, -0.293892f, -0.293979f, -0.294066f, -0.294153f, -0.29424f, -0.294326f, -0.294413f, -0.2945f, -0.294587f, -0.294674f, -0.29476f, -0.294847f, -0.294934f, -0.295021f, -0.295107f, -0.295194f, -0.295281f,
+-0.295368f, -0.295455f, -0.295541f, -0.295628f, -0.295715f, -0.295802f, -0.295888f, -0.295975f, -0.296062f, -0.296149f, -0.296235f, -0.296322f, -0.296409f, -0.296496f, -0.296582f, -0.296669f, -0.296756f, -0.296843f, -0.296929f, -0.297016f,
+-0.297103f, -0.29719f, -0.297276f, -0.297363f, -0.29745f, -0.297536f, -0.297623f, -0.29771f, -0.297797f, -0.297883f, -0.29797f, -0.298057f, -0.298144f, -0.29823f, -0.298317f, -0.298404f, -0.29849f, -0.298577f, -0.298664f, -0.29875f,
+-0.298837f, -0.298924f, -0.299011f, -0.299097f, -0.299184f, -0.299271f, -0.299357f, -0.299444f, -0.299531f, -0.299617f, -0.299704f, -0.299791f, -0.299877f, -0.299964f, -0.300051f, -0.300138f, -0.300224f, -0.300311f, -0.300398f, -0.300484f,
+-0.300571f, -0.300658f, -0.300744f, -0.300831f, -0.300918f, -0.301004f, -0.301091f, -0.301177f, -0.301264f, -0.301351f, -0.301437f, -0.301524f, -0.301611f, -0.301697f, -0.301784f, -0.301871f, -0.301957f, -0.302044f, -0.302131f, -0.302217f,
+-0.302304f, -0.30239f, -0.302477f, -0.302564f, -0.30265f, -0.302737f, -0.302824f, -0.30291f, -0.302997f, -0.303083f, -0.30317f, -0.303257f, -0.303343f, -0.30343f, -0.303517f, -0.303603f, -0.30369f, -0.303776f, -0.303863f, -0.30395f,
+-0.304036f, -0.304123f, -0.304209f, -0.304296f, -0.304382f, -0.304469f, -0.304556f, -0.304642f, -0.304729f, -0.304815f, -0.304902f, -0.304989f, -0.305075f, -0.305162f, -0.305248f, -0.305335f, -0.305421f, -0.305508f, -0.305595f, -0.305681f,
+-0.305768f, -0.305854f, -0.305941f, -0.306027f, -0.306114f, -0.3062f, -0.306287f, -0.306374f, -0.30646f, -0.306547f, -0.306633f, -0.30672f, -0.306806f, -0.306893f, -0.306979f, -0.307066f, -0.307152f, -0.307239f, -0.307325f, -0.307412f,
+-0.307498f, -0.307585f, -0.307671f, -0.307758f, -0.307845f, -0.307931f, -0.308018f, -0.308104f, -0.308191f, -0.308277f, -0.308364f, -0.30845f, -0.308537f, -0.308623f, -0.30871f, -0.308796f, -0.308883f, -0.308969f, -0.309056f, -0.309142f,
+-0.309229f, -0.309315f, -0.309401f, -0.309488f, -0.309574f, -0.309661f, -0.309747f, -0.309834f, -0.30992f, -0.310007f, -0.310093f, -0.31018f, -0.310266f, -0.310353f, -0.310439f, -0.310526f, -0.310612f, -0.310698f, -0.310785f, -0.310871f,
+-0.310958f, -0.311044f, -0.311131f, -0.311217f, -0.311304f, -0.31139f, -0.311476f, -0.311563f, -0.311649f, -0.311736f, -0.311822f, -0.311909f, -0.311995f, -0.312081f, -0.312168f, -0.312254f, -0.312341f, -0.312427f, -0.312513f, -0.3126f,
+-0.312686f, -0.312773f, -0.312859f, -0.312945f, -0.313032f, -0.313118f, -0.313205f, -0.313291f, -0.313377f, -0.313464f, -0.31355f, -0.313637f, -0.313723f, -0.313809f, -0.313896f, -0.313982f, -0.314069f, -0.314155f, -0.314241f, -0.314328f,
+-0.314414f, -0.3145f, -0.314587f, -0.314673f, -0.314759f, -0.314846f, -0.314932f, -0.315019f, -0.315105f, -0.315191f, -0.315278f, -0.315364f, -0.31545f, -0.315537f, -0.315623f, -0.315709f, -0.315796f, -0.315882f, -0.315968f, -0.316055f,
+-0.316141f, -0.316227f, -0.316314f, -0.3164f, -0.316486f, -0.316573f, -0.316659f, -0.316745f, -0.316831f, -0.316918f, -0.317004f, -0.31709f, -0.317177f, -0.317263f, -0.317349f, -0.317436f, -0.317522f, -0.317608f, -0.317694f, -0.317781f,
+-0.317867f, -0.317953f, -0.31804f, -0.318126f, -0.318212f, -0.318298f, -0.318385f, -0.318471f, -0.318557f, -0.318643f, -0.31873f, -0.318816f, -0.318902f, -0.318989f, -0.319075f, -0.319161f, -0.319247f, -0.319334f, -0.31942f, -0.319506f,
+-0.319592f, -0.319678f, -0.319765f, -0.319851f, -0.319937f, -0.320023f, -0.32011f, -0.320196f, -0.320282f, -0.320368f, -0.320455f, -0.320541f, -0.320627f, -0.320713f, -0.320799f, -0.320886f, -0.320972f, -0.321058f, -0.321144f, -0.32123f,
+-0.321317f, -0.321403f, -0.321489f, -0.321575f, -0.321661f, -0.321748f, -0.321834f, -0.32192f, -0.322006f, -0.322092f, -0.322179f, -0.322265f, -0.322351f, -0.322437f, -0.322523f, -0.322609f, -0.322696f, -0.322782f, -0.322868f, -0.322954f,
+-0.32304f, -0.323126f, -0.323213f, -0.323299f, -0.323385f, -0.323471f, -0.323557f, -0.323643f, -0.323729f, -0.323816f, -0.323902f, -0.323988f, -0.324074f, -0.32416f, -0.324246f, -0.324332f, -0.324418f, -0.324505f, -0.324591f, -0.324677f,
+-0.324763f, -0.324849f, -0.324935f, -0.325021f, -0.325107f, -0.325193f, -0.32528f, -0.325366f, -0.325452f, -0.325538f, -0.325624f, -0.32571f, -0.325796f, -0.325882f, -0.325968f, -0.326054f, -0.32614f, -0.326227f, -0.326313f, -0.326399f,
+-0.326485f, -0.326571f, -0.326657f, -0.326743f, -0.326829f, -0.326915f, -0.327001f, -0.327087f, -0.327173f, -0.327259f, -0.327345f, -0.327431f, -0.327517f, -0.327603f, -0.327689f, -0.327775f, -0.327862f, -0.327948f, -0.328034f, -0.32812f,
+-0.328206f, -0.328292f, -0.328378f, -0.328464f, -0.32855f, -0.328636f, -0.328722f, -0.328808f, -0.328894f, -0.32898f, -0.329066f, -0.329152f, -0.329238f, -0.329324f, -0.32941f, -0.329496f, -0.329582f, -0.329668f, -0.329754f, -0.32984f,
+-0.329926f, -0.330012f, -0.330098f, -0.330184f, -0.33027f, -0.330355f, -0.330441f, -0.330527f, -0.330613f, -0.330699f, -0.330785f, -0.330871f, -0.330957f, -0.331043f, -0.331129f, -0.331215f, -0.331301f, -0.331387f, -0.331473f, -0.331559f,
+-0.331645f, -0.331731f, -0.331817f, -0.331902f, -0.331988f, -0.332074f, -0.33216f, -0.332246f, -0.332332f, -0.332418f, -0.332504f, -0.33259f, -0.332676f, -0.332762f, -0.332848f, -0.332933f, -0.333019f, -0.333105f, -0.333191f, -0.333277f,
+-0.333363f, -0.333449f, -0.333535f, -0.333621f, -0.333706f, -0.333792f, -0.333878f, -0.333964f, -0.33405f, -0.334136f, -0.334222f, -0.334307f, -0.334393f, -0.334479f, -0.334565f, -0.334651f, -0.334737f, -0.334823f, -0.334908f, -0.334994f,
+-0.33508f, -0.335166f, -0.335252f, -0.335338f, -0.335423f, -0.335509f, -0.335595f, -0.335681f, -0.335767f, -0.335852f, -0.335938f, -0.336024f, -0.33611f, -0.336196f, -0.336282f, -0.336367f, -0.336453f, -0.336539f, -0.336625f, -0.336711f,
+-0.336796f, -0.336882f, -0.336968f, -0.337054f, -0.337139f, -0.337225f, -0.337311f, -0.337397f, -0.337483f, -0.337568f, -0.337654f, -0.33774f, -0.337826f, -0.337911f, -0.337997f, -0.338083f, -0.338169f, -0.338254f, -0.33834f, -0.338426f,
+-0.338512f, -0.338597f, -0.338683f, -0.338769f, -0.338855f, -0.33894f, -0.339026f, -0.339112f, -0.339197f, -0.339283f, -0.339369f, -0.339455f, -0.33954f, -0.339626f, -0.339712f, -0.339797f, -0.339883f, -0.339969f, -0.340054f, -0.34014f,
+-0.340226f, -0.340312f, -0.340397f, -0.340483f, -0.340569f, -0.340654f, -0.34074f, -0.340826f, -0.340911f, -0.340997f, -0.341083f, -0.341168f, -0.341254f, -0.34134f, -0.341425f, -0.341511f, -0.341597f, -0.341682f, -0.341768f, -0.341853f,
+-0.341939f, -0.342025f, -0.34211f, -0.342196f, -0.342282f, -0.342367f, -0.342453f, -0.342539f, -0.342624f, -0.34271f, -0.342795f, -0.342881f, -0.342967f, -0.343052f, -0.343138f, -0.343223f, -0.343309f, -0.343395f, -0.34348f, -0.343566f,
+-0.343651f, -0.343737f, -0.343823f, -0.343908f, -0.343994f, -0.344079f, -0.344165f, -0.34425f, -0.344336f, -0.344422f, -0.344507f, -0.344593f, -0.344678f, -0.344764f, -0.344849f, -0.344935f, -0.34502f, -0.345106f, -0.345192f, -0.345277f,
+-0.345363f, -0.345448f, -0.345534f, -0.345619f, -0.345705f, -0.34579f, -0.345876f, -0.345961f, -0.346047f, -0.346132f, -0.346218f, -0.346303f, -0.346389f, -0.346474f, -0.34656f, -0.346645f, -0.346731f, -0.346816f, -0.346902f, -0.346987f,
+-0.347073f, -0.347158f, -0.347244f, -0.347329f, -0.347415f, -0.3475f, -0.347586f, -0.347671f, -0.347757f, -0.347842f, -0.347928f, -0.348013f, -0.348098f, -0.348184f, -0.348269f, -0.348355f, -0.34844f, -0.348526f, -0.348611f, -0.348697f,
+-0.348782f, -0.348867f, -0.348953f, -0.349038f, -0.349124f, -0.349209f, -0.349295f, -0.34938f, -0.349465f, -0.349551f, -0.349636f, -0.349722f, -0.349807f, -0.349892f, -0.349978f, -0.350063f, -0.350149f, -0.350234f, -0.350319f, -0.350405f,
+-0.35049f, -0.350576f, -0.350661f, -0.350746f, -0.350832f, -0.350917f, -0.351002f, -0.351088f, -0.351173f, -0.351258f, -0.351344f, -0.351429f, -0.351514f, -0.3516f, -0.351685f, -0.351771f, -0.351856f, -0.351941f, -0.352027f, -0.352112f,
+-0.352197f, -0.352282f, -0.352368f, -0.352453f, -0.352538f, -0.352624f, -0.352709f, -0.352794f, -0.35288f, -0.352965f, -0.35305f, -0.353136f, -0.353221f, -0.353306f, -0.353391f, -0.353477f, -0.353562f, -0.353647f, -0.353733f, -0.353818f,
+-0.353903f, -0.353988f, -0.354074f, -0.354159f, -0.354244f, -0.354329f, -0.354415f, -0.3545f, -0.354585f, -0.35467f, -0.354756f, -0.354841f, -0.354926f, -0.355011f, -0.355097f, -0.355182f, -0.355267f, -0.355352f, -0.355438f, -0.355523f,
+-0.355608f, -0.355693f, -0.355778f, -0.355864f, -0.355949f, -0.356034f, -0.356119f, -0.356204f, -0.35629f, -0.356375f, -0.35646f, -0.356545f, -0.35663f, -0.356716f, -0.356801f, -0.356886f, -0.356971f, -0.357056f, -0.357141f, -0.357227f,
+-0.357312f, -0.357397f, -0.357482f, -0.357567f, -0.357652f, -0.357737f, -0.357823f, -0.357908f, -0.357993f, -0.358078f, -0.358163f, -0.358248f, -0.358333f, -0.358419f, -0.358504f, -0.358589f, -0.358674f, -0.358759f, -0.358844f, -0.358929f,
+-0.359014f, -0.359099f, -0.359184f, -0.35927f, -0.359355f, -0.35944f, -0.359525f, -0.35961f, -0.359695f, -0.35978f, -0.359865f, -0.35995f, -0.360035f, -0.36012f, -0.360205f, -0.36029f, -0.360376f, -0.360461f, -0.360546f, -0.360631f,
+-0.360716f, -0.360801f, -0.360886f, -0.360971f, -0.361056f, -0.361141f, -0.361226f, -0.361311f, -0.361396f, -0.361481f, -0.361566f, -0.361651f, -0.361736f, -0.361821f, -0.361906f, -0.361991f, -0.362076f, -0.362161f, -0.362246f, -0.362331f,
+-0.362416f, -0.362501f, -0.362586f, -0.362671f, -0.362756f, -0.362841f, -0.362926f, -0.363011f, -0.363096f, -0.363181f, -0.363266f, -0.363351f, -0.363436f, -0.363521f, -0.363606f, -0.363691f, -0.363775f, -0.36386f, -0.363945f, -0.36403f,
+-0.364115f, -0.3642f, -0.364285f, -0.36437f, -0.364455f, -0.36454f, -0.364625f, -0.36471f, -0.364795f, -0.364879f, -0.364964f, -0.365049f, -0.365134f, -0.365219f, -0.365304f, -0.365389f, -0.365474f, -0.365559f, -0.365643f, -0.365728f,
+-0.365813f, -0.365898f, -0.365983f, -0.366068f, -0.366153f, -0.366238f, -0.366322f, -0.366407f, -0.366492f, -0.366577f, -0.366662f, -0.366747f, -0.366831f, -0.366916f, -0.367001f, -0.367086f, -0.367171f, -0.367256f, -0.36734f, -0.367425f,
+-0.36751f, -0.367595f, -0.36768f, -0.367764f, -0.367849f, -0.367934f, -0.368019f, -0.368104f, -0.368188f, -0.368273f, -0.368358f, -0.368443f, -0.368527f, -0.368612f, -0.368697f, -0.368782f, -0.368867f, -0.368951f, -0.369036f, -0.369121f,
+-0.369206f, -0.36929f, -0.369375f, -0.36946f, -0.369545f, -0.369629f, -0.369714f, -0.369799f, -0.369883f, -0.369968f, -0.370053f, -0.370138f, -0.370222f, -0.370307f, -0.370392f, -0.370476f, -0.370561f, -0.370646f, -0.370731f, -0.370815f,
+-0.3709f, -0.370985f, -0.371069f, -0.371154f, -0.371239f, -0.371323f, -0.371408f, -0.371493f, -0.371577f, -0.371662f, -0.371747f, -0.371831f, -0.371916f, -0.372001f, -0.372085f, -0.37217f, -0.372255f, -0.372339f, -0.372424f, -0.372508f,
+-0.372593f, -0.372678f, -0.372762f, -0.372847f, -0.372932f, -0.373016f, -0.373101f, -0.373185f, -0.37327f, -0.373355f, -0.373439f, -0.373524f, -0.373608f, -0.373693f, -0.373778f, -0.373862f, -0.373947f, -0.374031f, -0.374116f, -0.3742f,
+-0.374285f, -0.37437f, -0.374454f, -0.374539f, -0.374623f, -0.374708f, -0.374792f, -0.374877f, -0.374961f, -0.375046f, -0.37513f, -0.375215f, -0.3753f, -0.375384f, -0.375469f, -0.375553f, -0.375638f, -0.375722f, -0.375807f, -0.375891f,
+-0.375976f, -0.37606f, -0.376145f, -0.376229f, -0.376314f, -0.376398f, -0.376483f, -0.376567f, -0.376652f, -0.376736f, -0.376821f, -0.376905f, -0.376989f, -0.377074f, -0.377158f, -0.377243f, -0.377327f, -0.377412f, -0.377496f, -0.377581f,
+-0.377665f, -0.377749f, -0.377834f, -0.377918f, -0.378003f, -0.378087f, -0.378172f, -0.378256f, -0.37834f, -0.378425f, -0.378509f, -0.378594f, -0.378678f, -0.378762f, -0.378847f, -0.378931f, -0.379016f, -0.3791f, -0.379184f, -0.379269f,
+-0.379353f, -0.379438f, -0.379522f, -0.379606f, -0.379691f, -0.379775f, -0.379859f, -0.379944f, -0.380028f, -0.380112f, -0.380197f, -0.380281f, -0.380365f, -0.38045f, -0.380534f, -0.380618f, -0.380703f, -0.380787f, -0.380871f, -0.380956f,
+-0.38104f, -0.381124f, -0.381209f, -0.381293f, -0.381377f, -0.381462f, -0.381546f, -0.38163f, -0.381714f, -0.381799f, -0.381883f, -0.381967f, -0.382051f, -0.382136f, -0.38222f, -0.382304f, -0.382389f, -0.382473f, -0.382557f, -0.382641f,
+-0.382726f, -0.38281f, -0.382894f, -0.382978f, -0.383062f, -0.383147f, -0.383231f, -0.383315f, -0.383399f, -0.383484f, -0.383568f, -0.383652f, -0.383736f, -0.38382f, -0.383905f, -0.383989f, -0.384073f, -0.384157f, -0.384241f, -0.384326f,
+-0.38441f, -0.384494f, -0.384578f, -0.384662f, -0.384746f, -0.384831f, -0.384915f, -0.384999f, -0.385083f, -0.385167f, -0.385251f, -0.385336f, -0.38542f, -0.385504f, -0.385588f, -0.385672f, -0.385756f, -0.38584f, -0.385924f, -0.386009f,
+-0.386093f, -0.386177f, -0.386261f, -0.386345f, -0.386429f, -0.386513f, -0.386597f, -0.386681f, -0.386765f, -0.38685f, -0.386934f, -0.387018f, -0.387102f, -0.387186f, -0.38727f, -0.387354f, -0.387438f, -0.387522f, -0.387606f, -0.38769f,
+-0.387774f, -0.387858f, -0.387942f, -0.388026f, -0.38811f, -0.388194f, -0.388278f, -0.388362f, -0.388446f, -0.38853f, -0.388614f, -0.388698f, -0.388783f, -0.388867f, -0.388951f, -0.389034f, -0.389118f, -0.389202f, -0.389286f, -0.38937f,
+-0.389454f, -0.389538f, -0.389622f, -0.389706f, -0.38979f, -0.389874f, -0.389958f, -0.390042f, -0.390126f, -0.39021f, -0.390294f, -0.390378f, -0.390462f, -0.390546f, -0.39063f, -0.390714f, -0.390798f, -0.390882f, -0.390965f, -0.391049f,
+-0.391133f, -0.391217f, -0.391301f, -0.391385f, -0.391469f, -0.391553f, -0.391637f, -0.391721f, -0.391804f, -0.391888f, -0.391972f, -0.392056f, -0.39214f, -0.392224f, -0.392308f, -0.392391f, -0.392475f, -0.392559f, -0.392643f, -0.392727f,
+-0.392811f, -0.392895f, -0.392978f, -0.393062f, -0.393146f, -0.39323f, -0.393314f, -0.393398f, -0.393481f, -0.393565f, -0.393649f, -0.393733f, -0.393817f, -0.3939f, -0.393984f, -0.394068f, -0.394152f, -0.394235f, -0.394319f, -0.394403f,
+-0.394487f, -0.394571f, -0.394654f, -0.394738f, -0.394822f, -0.394906f, -0.394989f, -0.395073f, -0.395157f, -0.395241f, -0.395324f, -0.395408f, -0.395492f, -0.395576f, -0.395659f, -0.395743f, -0.395827f, -0.39591f, -0.395994f, -0.396078f,
+-0.396162f, -0.396245f, -0.396329f, -0.396413f, -0.396496f, -0.39658f, -0.396664f, -0.396747f, -0.396831f, -0.396915f, -0.396998f, -0.397082f, -0.397166f, -0.397249f, -0.397333f, -0.397417f, -0.3975f, -0.397584f, -0.397668f, -0.397751f,
+-0.397835f, -0.397918f, -0.398002f, -0.398086f, -0.398169f, -0.398253f, -0.398336f, -0.39842f, -0.398504f, -0.398587f, -0.398671f, -0.398754f, -0.398838f, -0.398922f, -0.399005f, -0.399089f, -0.399172f, -0.399256f, -0.399339f, -0.399423f,
+-0.399507f, -0.39959f, -0.399674f, -0.399757f, -0.399841f, -0.399924f, -0.400008f, -0.400091f, -0.400175f, -0.400258f, -0.400342f, -0.400426f, -0.400509f, -0.400593f, -0.400676f, -0.40076f, -0.400843f, -0.400927f, -0.40101f, -0.401094f,
+-0.401177f, -0.401261f, -0.401344f, -0.401427f, -0.401511f, -0.401594f, -0.401678f, -0.401761f, -0.401845f, -0.401928f, -0.402012f, -0.402095f, -0.402179f, -0.402262f, -0.402345f, -0.402429f, -0.402512f, -0.402596f, -0.402679f, -0.402763f,
+-0.402846f, -0.402929f, -0.403013f, -0.403096f, -0.40318f, -0.403263f, -0.403346f, -0.40343f, -0.403513f, -0.403597f, -0.40368f, -0.403763f, -0.403847f, -0.40393f, -0.404013f, -0.404097f, -0.40418f, -0.404263f, -0.404347f, -0.40443f,
+-0.404513f, -0.404597f, -0.40468f, -0.404763f, -0.404847f, -0.40493f, -0.405013f, -0.405097f, -0.40518f, -0.405263f, -0.405347f, -0.40543f, -0.405513f, -0.405597f, -0.40568f, -0.405763f, -0.405846f, -0.40593f, -0.406013f, -0.406096f,
+-0.40618f, -0.406263f, -0.406346f, -0.406429f, -0.406513f, -0.406596f, -0.406679f, -0.406762f, -0.406846f, -0.406929f, -0.407012f, -0.407095f, -0.407178f, -0.407262f, -0.407345f, -0.407428f, -0.407511f, -0.407594f, -0.407678f, -0.407761f,
+-0.407844f, -0.407927f, -0.40801f, -0.408094f, -0.408177f, -0.40826f, -0.408343f, -0.408426f, -0.408509f, -0.408593f, -0.408676f, -0.408759f, -0.408842f, -0.408925f, -0.409008f, -0.409091f, -0.409175f, -0.409258f, -0.409341f, -0.409424f,
+-0.409507f, -0.40959f, -0.409673f, -0.409756f, -0.40984f, -0.409923f, -0.410006f, -0.410089f, -0.410172f, -0.410255f, -0.410338f, -0.410421f, -0.410504f, -0.410587f, -0.41067f, -0.410753f, -0.410836f, -0.41092f, -0.411003f, -0.411086f,
+-0.411169f, -0.411252f, -0.411335f, -0.411418f, -0.411501f, -0.411584f, -0.411667f, -0.41175f, -0.411833f, -0.411916f, -0.411999f, -0.412082f, -0.412165f, -0.412248f, -0.412331f, -0.412414f, -0.412497f, -0.41258f, -0.412663f, -0.412746f,
+-0.412829f, -0.412912f, -0.412995f, -0.413078f, -0.41316f, -0.413243f, -0.413326f, -0.413409f, -0.413492f, -0.413575f, -0.413658f, -0.413741f, -0.413824f, -0.413907f, -0.41399f, -0.414073f, -0.414156f, -0.414238f, -0.414321f, -0.414404f,
+-0.414487f, -0.41457f, -0.414653f, -0.414736f, -0.414819f, -0.414902f, -0.414984f, -0.415067f, -0.41515f, -0.415233f, -0.415316f, -0.415399f, -0.415481f, -0.415564f, -0.415647f, -0.41573f, -0.415813f, -0.415896f, -0.415978f, -0.416061f,
+-0.416144f, -0.416227f, -0.41631f, -0.416392f, -0.416475f, -0.416558f, -0.416641f, -0.416724f, -0.416806f, -0.416889f, -0.416972f, -0.417055f, -0.417137f, -0.41722f, -0.417303f, -0.417386f, -0.417469f, -0.417551f, -0.417634f, -0.417717f,
+-0.417799f, -0.417882f, -0.417965f, -0.418048f, -0.41813f, -0.418213f, -0.418296f, -0.418378f, -0.418461f, -0.418544f, -0.418627f, -0.418709f, -0.418792f, -0.418875f, -0.418957f, -0.41904f, -0.419123f, -0.419205f, -0.419288f, -0.419371f,
+-0.419453f, -0.419536f, -0.419619f, -0.419701f, -0.419784f, -0.419866f, -0.419949f, -0.420032f, -0.420114f, -0.420197f, -0.42028f, -0.420362f, -0.420445f, -0.420527f, -0.42061f, -0.420693f, -0.420775f, -0.420858f, -0.42094f, -0.421023f,
+-0.421105f, -0.421188f, -0.421271f, -0.421353f, -0.421436f, -0.421518f, -0.421601f, -0.421683f, -0.421766f, -0.421848f, -0.421931f, -0.422014f, -0.422096f, -0.422179f, -0.422261f, -0.422344f, -0.422426f, -0.422509f, -0.422591f, -0.422674f,
+-0.422756f, -0.422839f, -0.422921f, -0.423004f, -0.423086f, -0.423169f, -0.423251f, -0.423333f, -0.423416f, -0.423498f, -0.423581f, -0.423663f, -0.423746f, -0.423828f, -0.423911f, -0.423993f, -0.424075f, -0.424158f, -0.42424f, -0.424323f,
+-0.424405f, -0.424488f, -0.42457f, -0.424652f, -0.424735f, -0.424817f, -0.4249f, -0.424982f, -0.425064f, -0.425147f, -0.425229f, -0.425311f, -0.425394f, -0.425476f, -0.425559f, -0.425641f, -0.425723f, -0.425806f, -0.425888f, -0.42597f,
+-0.426053f, -0.426135f, -0.426217f, -0.4263f, -0.426382f, -0.426464f, -0.426546f, -0.426629f, -0.426711f, -0.426793f, -0.426876f, -0.426958f, -0.42704f, -0.427123f, -0.427205f, -0.427287f, -0.427369f, -0.427452f, -0.427534f, -0.427616f,
+-0.427698f, -0.427781f, -0.427863f, -0.427945f, -0.428027f, -0.42811f, -0.428192f, -0.428274f, -0.428356f, -0.428438f, -0.428521f, -0.428603f, -0.428685f, -0.428767f, -0.428849f, -0.428932f, -0.429014f, -0.429096f, -0.429178f, -0.42926f,
+-0.429342f, -0.429425f, -0.429507f, -0.429589f, -0.429671f, -0.429753f, -0.429835f, -0.429918f, -0.43f, -0.430082f, -0.430164f, -0.430246f, -0.430328f, -0.43041f, -0.430492f, -0.430574f, -0.430657f, -0.430739f, -0.430821f, -0.430903f,
+-0.430985f, -0.431067f, -0.431149f, -0.431231f, -0.431313f, -0.431395f, -0.431477f, -0.431559f, -0.431641f, -0.431724f, -0.431806f, -0.431888f, -0.43197f, -0.432052f, -0.432134f, -0.432216f, -0.432298f, -0.43238f, -0.432462f, -0.432544f,
+-0.432626f, -0.432708f, -0.43279f, -0.432872f, -0.432954f, -0.433036f, -0.433118f, -0.4332f, -0.433282f, -0.433364f, -0.433446f, -0.433528f, -0.433609f, -0.433691f, -0.433773f, -0.433855f, -0.433937f, -0.434019f, -0.434101f, -0.434183f,
+-0.434265f, -0.434347f, -0.434429f, -0.434511f, -0.434593f, -0.434674f, -0.434756f, -0.434838f, -0.43492f, -0.435002f, -0.435084f, -0.435166f, -0.435248f, -0.435329f, -0.435411f, -0.435493f, -0.435575f, -0.435657f, -0.435739f, -0.435821f,
+-0.435902f, -0.435984f, -0.436066f, -0.436148f, -0.43623f, -0.436311f, -0.436393f, -0.436475f, -0.436557f, -0.436639f, -0.43672f, -0.436802f, -0.436884f, -0.436966f, -0.437048f, -0.437129f, -0.437211f, -0.437293f, -0.437375f, -0.437456f,
+-0.437538f, -0.43762f, -0.437702f, -0.437783f, -0.437865f, -0.437947f, -0.438028f, -0.43811f, -0.438192f, -0.438274f, -0.438355f, -0.438437f, -0.438519f, -0.4386f, -0.438682f, -0.438764f, -0.438845f, -0.438927f, -0.439009f, -0.43909f,
+-0.439172f, -0.439254f, -0.439335f, -0.439417f, -0.439499f, -0.43958f, -0.439662f, -0.439744f, -0.439825f, -0.439907f, -0.439989f, -0.44007f, -0.440152f, -0.440233f, -0.440315f, -0.440397f, -0.440478f, -0.44056f, -0.440641f, -0.440723f,
+-0.440804f, -0.440886f, -0.440968f, -0.441049f, -0.441131f, -0.441212f, -0.441294f, -0.441375f, -0.441457f, -0.441538f, -0.44162f, -0.441701f, -0.441783f, -0.441865f, -0.441946f, -0.442028f, -0.442109f, -0.442191f, -0.442272f, -0.442354f,
+-0.442435f, -0.442517f, -0.442598f, -0.442679f, -0.442761f, -0.442842f, -0.442924f, -0.443005f, -0.443087f, -0.443168f, -0.44325f, -0.443331f, -0.443413f, -0.443494f, -0.443575f, -0.443657f, -0.443738f, -0.44382f, -0.443901f, -0.443982f,
+-0.444064f, -0.444145f, -0.444227f, -0.444308f, -0.444389f, -0.444471f, -0.444552f, -0.444634f, -0.444715f, -0.444796f, -0.444878f, -0.444959f, -0.44504f, -0.445122f, -0.445203f, -0.445284f, -0.445366f, -0.445447f, -0.445528f, -0.44561f,
+-0.445691f, -0.445772f, -0.445854f, -0.445935f, -0.446016f, -0.446097f, -0.446179f, -0.44626f, -0.446341f, -0.446423f, -0.446504f, -0.446585f, -0.446666f, -0.446748f, -0.446829f, -0.44691f, -0.446991f, -0.447073f, -0.447154f, -0.447235f,
+-0.447316f, -0.447397f, -0.447479f, -0.44756f, -0.447641f, -0.447722f, -0.447803f, -0.447885f, -0.447966f, -0.448047f, -0.448128f, -0.448209f, -0.448291f, -0.448372f, -0.448453f, -0.448534f, -0.448615f, -0.448696f, -0.448777f, -0.448859f,
+-0.44894f, -0.449021f, -0.449102f, -0.449183f, -0.449264f, -0.449345f, -0.449426f, -0.449508f, -0.449589f, -0.44967f, -0.449751f, -0.449832f, -0.449913f, -0.449994f, -0.450075f, -0.450156f, -0.450237f, -0.450318f, -0.450399f, -0.45048f,
+-0.450561f, -0.450642f, -0.450723f, -0.450805f, -0.450886f, -0.450967f, -0.451048f, -0.451129f, -0.45121f, -0.451291f, -0.451372f, -0.451453f, -0.451534f, -0.451615f, -0.451696f, -0.451777f, -0.451857f, -0.451938f, -0.452019f, -0.4521f,
+-0.452181f, -0.452262f, -0.452343f, -0.452424f, -0.452505f, -0.452586f, -0.452667f, -0.452748f, -0.452829f, -0.45291f, -0.452991f, -0.453071f, -0.453152f, -0.453233f, -0.453314f, -0.453395f, -0.453476f, -0.453557f, -0.453638f, -0.453719f,
+-0.453799f, -0.45388f, -0.453961f, -0.454042f, -0.454123f, -0.454204f, -0.454284f, -0.454365f, -0.454446f, -0.454527f, -0.454608f, -0.454689f, -0.454769f, -0.45485f, -0.454931f, -0.455012f, -0.455093f, -0.455173f, -0.455254f, -0.455335f,
+-0.455416f, -0.455496f, -0.455577f, -0.455658f, -0.455739f, -0.455819f, -0.4559f, -0.455981f, -0.456062f, -0.456142f, -0.456223f, -0.456304f, -0.456385f, -0.456465f, -0.456546f, -0.456627f, -0.456707f, -0.456788f, -0.456869f, -0.456949f,
+-0.45703f, -0.457111f, -0.457191f, -0.457272f, -0.457353f, -0.457433f, -0.457514f, -0.457595f, -0.457675f, -0.457756f, -0.457837f, -0.457917f, -0.457998f, -0.458078f, -0.458159f, -0.45824f, -0.45832f, -0.458401f, -0.458481f, -0.458562f,
+-0.458643f, -0.458723f, -0.458804f, -0.458884f, -0.458965f, -0.459045f, -0.459126f, -0.459207f, -0.459287f, -0.459368f, -0.459448f, -0.459529f, -0.459609f, -0.45969f, -0.45977f, -0.459851f, -0.459931f, -0.460012f, -0.460092f, -0.460173f,
+-0.460253f, -0.460334f, -0.460414f, -0.460495f, -0.460575f, -0.460656f, -0.460736f, -0.460817f, -0.460897f, -0.460978f, -0.461058f, -0.461138f, -0.461219f, -0.461299f, -0.46138f, -0.46146f, -0.461541f, -0.461621f, -0.461701f, -0.461782f,
+-0.461862f, -0.461943f, -0.462023f, -0.462103f, -0.462184f, -0.462264f, -0.462344f, -0.462425f, -0.462505f, -0.462585f, -0.462666f, -0.462746f, -0.462827f, -0.462907f, -0.462987f, -0.463068f, -0.463148f, -0.463228f, -0.463308f, -0.463389f,
+-0.463469f, -0.463549f, -0.46363f, -0.46371f, -0.46379f, -0.46387f, -0.463951f, -0.464031f, -0.464111f, -0.464192f, -0.464272f, -0.464352f, -0.464432f, -0.464513f, -0.464593f, -0.464673f, -0.464753f, -0.464833f, -0.464914f, -0.464994f,
+-0.465074f, -0.465154f, -0.465234f, -0.465315f, -0.465395f, -0.465475f, -0.465555f, -0.465635f, -0.465716f, -0.465796f, -0.465876f, -0.465956f, -0.466036f, -0.466116f, -0.466196f, -0.466277f, -0.466357f, -0.466437f, -0.466517f, -0.466597f,
+-0.466677f, -0.466757f, -0.466837f, -0.466917f, -0.466998f, -0.467078f, -0.467158f, -0.467238f, -0.467318f, -0.467398f, -0.467478f, -0.467558f, -0.467638f, -0.467718f, -0.467798f, -0.467878f, -0.467958f, -0.468038f, -0.468118f, -0.468198f,
+-0.468278f, -0.468358f, -0.468438f, -0.468518f, -0.468598f, -0.468678f, -0.468758f, -0.468838f, -0.468918f, -0.468998f, -0.469078f, -0.469158f, -0.469238f, -0.469318f, -0.469398f, -0.469478f, -0.469558f, -0.469638f, -0.469718f, -0.469798f,
+-0.469878f, -0.469958f, -0.470037f, -0.470117f, -0.470197f, -0.470277f, -0.470357f, -0.470437f, -0.470517f, -0.470597f, -0.470677f, -0.470756f, -0.470836f, -0.470916f, -0.470996f, -0.471076f, -0.471156f, -0.471235f, -0.471315f, -0.471395f,
+-0.471475f, -0.471555f, -0.471635f, -0.471714f, -0.471794f, -0.471874f, -0.471954f, -0.472034f, -0.472113f, -0.472193f, -0.472273f, -0.472353f, -0.472432f, -0.472512f, -0.472592f, -0.472672f, -0.472751f, -0.472831f, -0.472911f, -0.472991f,
+-0.47307f, -0.47315f, -0.47323f, -0.473309f, -0.473389f, -0.473469f, -0.473549f, -0.473628f, -0.473708f, -0.473788f, -0.473867f, -0.473947f, -0.474027f, -0.474106f, -0.474186f, -0.474266f, -0.474345f, -0.474425f, -0.474504f, -0.474584f,
+-0.474664f, -0.474743f, -0.474823f, -0.474903f, -0.474982f, -0.475062f, -0.475141f, -0.475221f, -0.4753f, -0.47538f, -0.47546f, -0.475539f, -0.475619f, -0.475698f, -0.475778f, -0.475857f, -0.475937f, -0.476016f, -0.476096f, -0.476176f,
+-0.476255f, -0.476335f, -0.476414f, -0.476494f, -0.476573f, -0.476653f, -0.476732f, -0.476812f, -0.476891f, -0.476971f, -0.47705f, -0.477129f, -0.477209f, -0.477288f, -0.477368f, -0.477447f, -0.477527f, -0.477606f, -0.477686f, -0.477765f,
+-0.477844f, -0.477924f, -0.478003f, -0.478083f, -0.478162f, -0.478242f, -0.478321f, -0.4784f, -0.47848f, -0.478559f, -0.478638f, -0.478718f, -0.478797f, -0.478877f, -0.478956f, -0.479035f, -0.479115f, -0.479194f, -0.479273f, -0.479353f,
+-0.479432f, -0.479511f, -0.479591f, -0.47967f, -0.479749f, -0.479828f, -0.479908f, -0.479987f, -0.480066f, -0.480146f, -0.480225f, -0.480304f, -0.480383f, -0.480463f, -0.480542f, -0.480621f, -0.4807f, -0.48078f, -0.480859f, -0.480938f,
+-0.481017f, -0.481096f, -0.481176f, -0.481255f, -0.481334f, -0.481413f, -0.481492f, -0.481572f, -0.481651f, -0.48173f, -0.481809f, -0.481888f, -0.481968f, -0.482047f, -0.482126f, -0.482205f, -0.482284f, -0.482363f, -0.482442f, -0.482522f,
+-0.482601f, -0.48268f, -0.482759f, -0.482838f, -0.482917f, -0.482996f, -0.483075f, -0.483154f, -0.483233f, -0.483312f, -0.483392f, -0.483471f, -0.48355f, -0.483629f, -0.483708f, -0.483787f, -0.483866f, -0.483945f, -0.484024f, -0.484103f,
+-0.484182f, -0.484261f, -0.48434f, -0.484419f, -0.484498f, -0.484577f, -0.484656f, -0.484735f, -0.484814f, -0.484893f, -0.484972f, -0.485051f, -0.48513f, -0.485209f, -0.485288f, -0.485367f, -0.485446f, -0.485524f, -0.485603f, -0.485682f,
+-0.485761f, -0.48584f, -0.485919f, -0.485998f, -0.486077f, -0.486156f, -0.486235f, -0.486313f, -0.486392f, -0.486471f, -0.48655f, -0.486629f, -0.486708f, -0.486787f, -0.486865f, -0.486944f, -0.487023f, -0.487102f, -0.487181f, -0.48726f,
+-0.487338f, -0.487417f, -0.487496f, -0.487575f, -0.487654f, -0.487732f, -0.487811f, -0.48789f, -0.487969f, -0.488048f, -0.488126f, -0.488205f, -0.488284f, -0.488363f, -0.488441f, -0.48852f, -0.488599f, -0.488677f, -0.488756f, -0.488835f,
+-0.488914f, -0.488992f, -0.489071f, -0.48915f, -0.489228f, -0.489307f, -0.489386f, -0.489464f, -0.489543f, -0.489622f, -0.4897f, -0.489779f, -0.489858f, -0.489936f, -0.490015f, -0.490094f, -0.490172f, -0.490251f, -0.490329f, -0.490408f,
+-0.490487f, -0.490565f, -0.490644f, -0.490722f, -0.490801f, -0.49088f, -0.490958f, -0.491037f, -0.491115f, -0.491194f, -0.491272f, -0.491351f, -0.491429f, -0.491508f, -0.491587f, -0.491665f, -0.491744f, -0.491822f, -0.491901f, -0.491979f,
+-0.492058f, -0.492136f, -0.492215f, -0.492293f, -0.492372f, -0.49245f, -0.492528f, -0.492607f, -0.492685f, -0.492764f, -0.492842f, -0.492921f, -0.492999f, -0.493078f, -0.493156f, -0.493234f, -0.493313f, -0.493391f, -0.49347f, -0.493548f,
+-0.493626f, -0.493705f, -0.493783f, -0.493862f, -0.49394f, -0.494018f, -0.494097f, -0.494175f, -0.494253f, -0.494332f, -0.49441f, -0.494488f, -0.494567f, -0.494645f, -0.494723f, -0.494802f, -0.49488f, -0.494958f, -0.495037f, -0.495115f,
+-0.495193f, -0.495271f, -0.49535f, -0.495428f, -0.495506f, -0.495585f, -0.495663f, -0.495741f, -0.495819f, -0.495898f, -0.495976f, -0.496054f, -0.496132f, -0.49621f, -0.496289f, -0.496367f, -0.496445f, -0.496523f, -0.496601f, -0.49668f,
+-0.496758f, -0.496836f, -0.496914f, -0.496992f, -0.49707f, -0.497149f, -0.497227f, -0.497305f, -0.497383f, -0.497461f, -0.497539f, -0.497617f, -0.497696f, -0.497774f, -0.497852f, -0.49793f, -0.498008f, -0.498086f, -0.498164f, -0.498242f,
+-0.49832f, -0.498398f, -0.498476f, -0.498554f, -0.498633f, -0.498711f, -0.498789f, -0.498867f, -0.498945f, -0.499023f, -0.499101f, -0.499179f, -0.499257f, -0.499335f, -0.499413f, -0.499491f, -0.499569f, -0.499647f, -0.499725f, -0.499803f,
+-0.499881f, -0.499959f, -0.500037f, -0.500114f, -0.500192f, -0.50027f, -0.500348f, -0.500426f, -0.500504f, -0.500582f, -0.50066f, -0.500738f, -0.500816f, -0.500894f, -0.500972f, -0.501049f, -0.501127f, -0.501205f, -0.501283f, -0.501361f,
+-0.501439f, -0.501517f, -0.501594f, -0.501672f, -0.50175f, -0.501828f, -0.501906f, -0.501984f, -0.502061f, -0.502139f, -0.502217f, -0.502295f, -0.502373f, -0.50245f, -0.502528f, -0.502606f, -0.502684f, -0.502762f, -0.502839f, -0.502917f,
+-0.502995f, -0.503073f, -0.50315f, -0.503228f, -0.503306f, -0.503383f, -0.503461f, -0.503539f, -0.503617f, -0.503694f, -0.503772f, -0.50385f, -0.503927f, -0.504005f, -0.504083f, -0.50416f, -0.504238f, -0.504316f, -0.504393f, -0.504471f,
+-0.504549f, -0.504626f, -0.504704f, -0.504781f, -0.504859f, -0.504937f, -0.505014f, -0.505092f, -0.505169f, -0.505247f, -0.505325f, -0.505402f, -0.50548f, -0.505557f, -0.505635f, -0.505712f, -0.50579f, -0.505868f, -0.505945f, -0.506023f,
+-0.5061f, -0.506178f, -0.506255f, -0.506333f, -0.50641f, -0.506488f, -0.506565f, -0.506643f, -0.50672f, -0.506798f, -0.506875f, -0.506953f, -0.50703f, -0.507108f, -0.507185f, -0.507262f, -0.50734f, -0.507417f, -0.507495f, -0.507572f,
+-0.50765f, -0.507727f, -0.507804f, -0.507882f, -0.507959f, -0.508037f, -0.508114f, -0.508191f, -0.508269f, -0.508346f, -0.508423f, -0.508501f, -0.508578f, -0.508656f, -0.508733f, -0.50881f, -0.508888f, -0.508965f, -0.509042f, -0.509119f,
+-0.509197f, -0.509274f, -0.509351f, -0.509429f, -0.509506f, -0.509583f, -0.509661f, -0.509738f, -0.509815f, -0.509892f, -0.50997f, -0.510047f, -0.510124f, -0.510201f, -0.510279f, -0.510356f, -0.510433f, -0.51051f, -0.510587f, -0.510665f,
+-0.510742f, -0.510819f, -0.510896f, -0.510973f, -0.51105f, -0.511128f, -0.511205f, -0.511282f, -0.511359f, -0.511436f, -0.511513f, -0.511591f, -0.511668f, -0.511745f, -0.511822f, -0.511899f, -0.511976f, -0.512053f, -0.51213f, -0.512207f,
+-0.512284f, -0.512362f, -0.512439f, -0.512516f, -0.512593f, -0.51267f, -0.512747f, -0.512824f, -0.512901f, -0.512978f, -0.513055f, -0.513132f, -0.513209f, -0.513286f, -0.513363f, -0.51344f, -0.513517f, -0.513594f, -0.513671f, -0.513748f,
+-0.513825f, -0.513902f, -0.513979f, -0.514056f, -0.514133f, -0.51421f, -0.514287f, -0.514364f, -0.514441f, -0.514517f, -0.514594f, -0.514671f, -0.514748f, -0.514825f, -0.514902f, -0.514979f, -0.515056f, -0.515133f, -0.515209f, -0.515286f,
+-0.515363f, -0.51544f, -0.515517f, -0.515594f, -0.515671f, -0.515747f, -0.515824f, -0.515901f, -0.515978f, -0.516055f, -0.516131f, -0.516208f, -0.516285f, -0.516362f, -0.516439f, -0.516515f, -0.516592f, -0.516669f, -0.516746f, -0.516822f,
+-0.516899f, -0.516976f, -0.517053f, -0.517129f, -0.517206f, -0.517283f, -0.517359f, -0.517436f, -0.517513f, -0.51759f, -0.517666f, -0.517743f, -0.51782f, -0.517896f, -0.517973f, -0.51805f, -0.518126f, -0.518203f, -0.51828f, -0.518356f,
+-0.518433f, -0.518509f, -0.518586f, -0.518663f, -0.518739f, -0.518816f, -0.518892f, -0.518969f, -0.519046f, -0.519122f, -0.519199f, -0.519275f, -0.519352f, -0.519428f, -0.519505f, -0.519582f, -0.519658f, -0.519735f, -0.519811f, -0.519888f,
+-0.519964f, -0.520041f, -0.520117f, -0.520194f, -0.52027f, -0.520347f, -0.520423f, -0.5205f, -0.520576f, -0.520653f, -0.520729f, -0.520805f, -0.520882f, -0.520958f, -0.521035f, -0.521111f, -0.521188f, -0.521264f, -0.52134f, -0.521417f,
+-0.521493f, -0.52157f, -0.521646f, -0.521722f, -0.521799f, -0.521875f, -0.521951f, -0.522028f, -0.522104f, -0.522181f, -0.522257f, -0.522333f, -0.52241f, -0.522486f, -0.522562f, -0.522639f, -0.522715f, -0.522791f, -0.522867f, -0.522944f,
+-0.52302f, -0.523096f, -0.523173f, -0.523249f, -0.523325f, -0.523401f, -0.523478f, -0.523554f, -0.52363f, -0.523706f, -0.523782f, -0.523859f, -0.523935f, -0.524011f, -0.524087f, -0.524164f, -0.52424f, -0.524316f, -0.524392f, -0.524468f,
+-0.524544f, -0.524621f, -0.524697f, -0.524773f, -0.524849f, -0.524925f, -0.525001f, -0.525077f, -0.525154f, -0.52523f, -0.525306f, -0.525382f, -0.525458f, -0.525534f, -0.52561f, -0.525686f, -0.525762f, -0.525838f, -0.525914f, -0.52599f,
+-0.526067f, -0.526143f, -0.526219f, -0.526295f, -0.526371f, -0.526447f, -0.526523f, -0.526599f, -0.526675f, -0.526751f, -0.526827f, -0.526903f, -0.526979f, -0.527055f, -0.527131f, -0.527207f, -0.527282f, -0.527358f, -0.527434f, -0.52751f,
+-0.527586f, -0.527662f, -0.527738f, -0.527814f, -0.52789f, -0.527966f, -0.528042f, -0.528118f, -0.528193f, -0.528269f, -0.528345f, -0.528421f, -0.528497f, -0.528573f, -0.528649f, -0.528725f, -0.5288f, -0.528876f, -0.528952f, -0.529028f,
+-0.529104f, -0.529179f, -0.529255f, -0.529331f, -0.529407f, -0.529483f, -0.529558f, -0.529634f, -0.52971f, -0.529786f, -0.529861f, -0.529937f, -0.530013f, -0.530089f, -0.530164f, -0.53024f, -0.530316f, -0.530392f, -0.530467f, -0.530543f,
+-0.530619f, -0.530694f, -0.53077f, -0.530846f, -0.530921f, -0.530997f, -0.531073f, -0.531148f, -0.531224f, -0.5313f, -0.531375f, -0.531451f, -0.531527f, -0.531602f, -0.531678f, -0.531753f, -0.531829f, -0.531905f, -0.53198f, -0.532056f,
+-0.532131f, -0.532207f, -0.532282f, -0.532358f, -0.532434f, -0.532509f, -0.532585f, -0.53266f, -0.532736f, -0.532811f, -0.532887f, -0.532962f, -0.533038f, -0.533113f, -0.533189f, -0.533264f, -0.53334f, -0.533415f, -0.533491f, -0.533566f,
+-0.533642f, -0.533717f, -0.533792f, -0.533868f, -0.533943f, -0.534019f, -0.534094f, -0.53417f, -0.534245f, -0.53432f, -0.534396f, -0.534471f, -0.534547f, -0.534622f, -0.534697f, -0.534773f, -0.534848f, -0.534923f, -0.534999f, -0.535074f,
+-0.535149f, -0.535225f, -0.5353f, -0.535375f, -0.535451f, -0.535526f, -0.535601f, -0.535677f, -0.535752f, -0.535827f, -0.535902f, -0.535978f, -0.536053f, -0.536128f, -0.536203f, -0.536279f, -0.536354f, -0.536429f, -0.536504f, -0.53658f,
+-0.536655f, -0.53673f, -0.536805f, -0.53688f, -0.536956f, -0.537031f, -0.537106f, -0.537181f, -0.537256f, -0.537331f, -0.537407f, -0.537482f, -0.537557f, -0.537632f, -0.537707f, -0.537782f, -0.537857f, -0.537933f, -0.538008f, -0.538083f,
+-0.538158f, -0.538233f, -0.538308f, -0.538383f, -0.538458f, -0.538533f, -0.538608f, -0.538683f, -0.538758f, -0.538833f, -0.538908f, -0.538983f, -0.539058f, -0.539133f, -0.539209f, -0.539284f, -0.539359f, -0.539433f, -0.539508f, -0.539583f,
+-0.539658f, -0.539733f, -0.539808f, -0.539883f, -0.539958f, -0.540033f, -0.540108f, -0.540183f, -0.540258f, -0.540333f, -0.540408f, -0.540483f, -0.540558f, -0.540632f, -0.540707f, -0.540782f, -0.540857f, -0.540932f, -0.541007f, -0.541082f,
+-0.541157f, -0.541231f, -0.541306f, -0.541381f, -0.541456f, -0.541531f, -0.541606f, -0.54168f, -0.541755f, -0.54183f, -0.541905f, -0.541979f, -0.542054f, -0.542129f, -0.542204f, -0.542279f, -0.542353f, -0.542428f, -0.542503f, -0.542578f,
+-0.542652f, -0.542727f, -0.542802f, -0.542876f, -0.542951f, -0.543026f, -0.5431f, -0.543175f, -0.54325f, -0.543325f, -0.543399f, -0.543474f, -0.543548f, -0.543623f, -0.543698f, -0.543772f, -0.543847f, -0.543922f, -0.543996f, -0.544071f,
+-0.544145f, -0.54422f, -0.544295f, -0.544369f, -0.544444f, -0.544518f, -0.544593f, -0.544668f, -0.544742f, -0.544817f, -0.544891f, -0.544966f, -0.54504f, -0.545115f, -0.545189f, -0.545264f, -0.545338f, -0.545413f, -0.545487f, -0.545562f,
+-0.545636f, -0.545711f, -0.545785f, -0.54586f, -0.545934f, -0.546009f, -0.546083f, -0.546157f, -0.546232f, -0.546306f, -0.546381f, -0.546455f, -0.546529f, -0.546604f, -0.546678f, -0.546753f, -0.546827f, -0.546901f, -0.546976f, -0.54705f,
+-0.547124f, -0.547199f, -0.547273f, -0.547348f, -0.547422f, -0.547496f, -0.54757f, -0.547645f, -0.547719f, -0.547793f, -0.547868f, -0.547942f, -0.548016f, -0.548091f, -0.548165f, -0.548239f, -0.548313f, -0.548388f, -0.548462f, -0.548536f,
+-0.54861f, -0.548684f, -0.548759f, -0.548833f, -0.548907f, -0.548981f, -0.549055f, -0.54913f, -0.549204f, -0.549278f, -0.549352f, -0.549426f, -0.549501f, -0.549575f, -0.549649f, -0.549723f, -0.549797f, -0.549871f, -0.549945f, -0.550019f,
+-0.550094f, -0.550168f, -0.550242f, -0.550316f, -0.55039f, -0.550464f, -0.550538f, -0.550612f, -0.550686f, -0.55076f, -0.550834f, -0.550908f, -0.550982f, -0.551056f, -0.55113f, -0.551204f, -0.551278f, -0.551352f, -0.551426f, -0.5515f,
+-0.551574f, -0.551648f, -0.551722f, -0.551796f, -0.55187f, -0.551944f, -0.552018f, -0.552092f, -0.552166f, -0.55224f, -0.552314f, -0.552388f, -0.552461f, -0.552535f, -0.552609f, -0.552683f, -0.552757f, -0.552831f, -0.552905f, -0.552979f,
+-0.553052f, -0.553126f, -0.5532f, -0.553274f, -0.553348f, -0.553422f, -0.553495f, -0.553569f, -0.553643f, -0.553717f, -0.553791f, -0.553864f, -0.553938f, -0.554012f, -0.554086f, -0.554159f, -0.554233f, -0.554307f, -0.554381f, -0.554454f,
+-0.554528f, -0.554602f, -0.554676f, -0.554749f, -0.554823f, -0.554897f, -0.55497f, -0.555044f, -0.555118f, -0.555191f, -0.555265f, -0.555339f, -0.555412f, -0.555486f, -0.55556f, -0.555633f, -0.555707f, -0.55578f, -0.555854f, -0.555928f,
+-0.556001f, -0.556075f, -0.556148f, -0.556222f, -0.556296f, -0.556369f, -0.556443f, -0.556516f, -0.55659f, -0.556663f, -0.556737f, -0.55681f, -0.556884f, -0.556957f, -0.557031f, -0.557104f, -0.557178f, -0.557251f, -0.557325f, -0.557398f,
+-0.557472f, -0.557545f, -0.557619f, -0.557692f, -0.557766f, -0.557839f, -0.557913f, -0.557986f, -0.558059f, -0.558133f, -0.558206f, -0.55828f, -0.558353f, -0.558426f, -0.5585f, -0.558573f, -0.558646f, -0.55872f, -0.558793f, -0.558867f,
+-0.55894f, -0.559013f, -0.559087f, -0.55916f, -0.559233f, -0.559306f, -0.55938f, -0.559453f, -0.559526f, -0.5596f, -0.559673f, -0.559746f, -0.559819f, -0.559893f, -0.559966f, -0.560039f, -0.560112f, -0.560186f, -0.560259f, -0.560332f,
+-0.560405f, -0.560479f, -0.560552f, -0.560625f, -0.560698f, -0.560771f, -0.560844f, -0.560918f, -0.560991f, -0.561064f, -0.561137f, -0.56121f, -0.561283f, -0.561356f, -0.56143f, -0.561503f, -0.561576f, -0.561649f, -0.561722f, -0.561795f,
+-0.561868f, -0.561941f, -0.562014f, -0.562087f, -0.56216f, -0.562233f, -0.562307f, -0.56238f, -0.562453f, -0.562526f, -0.562599f, -0.562672f, -0.562745f, -0.562818f, -0.562891f, -0.562964f, -0.563037f, -0.56311f, -0.563182f, -0.563255f,
+-0.563328f, -0.563401f, -0.563474f, -0.563547f, -0.56362f, -0.563693f, -0.563766f, -0.563839f, -0.563912f, -0.563985f, -0.564058f, -0.56413f, -0.564203f, -0.564276f, -0.564349f, -0.564422f, -0.564495f, -0.564568f, -0.56464f, -0.564713f,
+-0.564786f, -0.564859f, -0.564932f, -0.565004f, -0.565077f, -0.56515f, -0.565223f, -0.565296f, -0.565368f, -0.565441f, -0.565514f, -0.565587f, -0.565659f, -0.565732f, -0.565805f, -0.565878f, -0.56595f, -0.566023f, -0.566096f, -0.566168f,
+-0.566241f, -0.566314f, -0.566386f, -0.566459f, -0.566532f, -0.566604f, -0.566677f, -0.56675f, -0.566822f, -0.566895f, -0.566968f, -0.56704f, -0.567113f, -0.567185f, -0.567258f, -0.567331f, -0.567403f, -0.567476f, -0.567548f, -0.567621f,
+-0.567693f, -0.567766f, -0.567839f, -0.567911f, -0.567984f, -0.568056f, -0.568129f, -0.568201f, -0.568274f, -0.568346f, -0.568419f, -0.568491f, -0.568564f, -0.568636f, -0.568709f, -0.568781f, -0.568853f, -0.568926f, -0.568998f, -0.569071f,
+-0.569143f, -0.569216f, -0.569288f, -0.56936f, -0.569433f, -0.569505f, -0.569578f, -0.56965f, -0.569722f, -0.569795f, -0.569867f, -0.569939f, -0.570012f, -0.570084f, -0.570156f, -0.570229f, -0.570301f, -0.570373f, -0.570446f, -0.570518f,
+-0.57059f, -0.570663f, -0.570735f, -0.570807f, -0.570879f, -0.570952f, -0.571024f, -0.571096f, -0.571168f, -0.571241f, -0.571313f, -0.571385f, -0.571457f, -0.571529f, -0.571602f, -0.571674f, -0.571746f, -0.571818f, -0.57189f, -0.571963f,
+-0.572035f, -0.572107f, -0.572179f, -0.572251f, -0.572323f, -0.572395f, -0.572468f, -0.57254f, -0.572612f, -0.572684f, -0.572756f, -0.572828f, -0.5729f, -0.572972f, -0.573044f, -0.573116f, -0.573188f, -0.57326f, -0.573332f, -0.573404f,
+-0.573476f, -0.573548f, -0.573621f, -0.573693f, -0.573765f, -0.573836f, -0.573908f, -0.57398f, -0.574052f, -0.574124f, -0.574196f, -0.574268f, -0.57434f, -0.574412f, -0.574484f, -0.574556f, -0.574628f, -0.5747f, -0.574772f, -0.574844f,
+-0.574916f, -0.574987f, -0.575059f, -0.575131f, -0.575203f, -0.575275f, -0.575347f, -0.575419f, -0.57549f, -0.575562f, -0.575634f, -0.575706f, -0.575778f, -0.57585f, -0.575921f, -0.575993f, -0.576065f, -0.576137f, -0.576208f, -0.57628f,
+-0.576352f, -0.576424f, -0.576495f, -0.576567f, -0.576639f, -0.576711f, -0.576782f, -0.576854f, -0.576926f, -0.576997f, -0.577069f, -0.577141f, -0.577212f, -0.577284f, -0.577356f, -0.577427f, -0.577499f, -0.577571f, -0.577642f, -0.577714f,
+-0.577786f, -0.577857f, -0.577929f, -0.578f, -0.578072f, -0.578144f, -0.578215f, -0.578287f, -0.578358f, -0.57843f, -0.578501f, -0.578573f, -0.578645f, -0.578716f, -0.578788f, -0.578859f, -0.578931f, -0.579002f, -0.579074f, -0.579145f,
+-0.579217f, -0.579288f, -0.57936f, -0.579431f, -0.579503f, -0.579574f, -0.579645f, -0.579717f, -0.579788f, -0.57986f, -0.579931f, -0.580003f, -0.580074f, -0.580145f, -0.580217f, -0.580288f, -0.580359f, -0.580431f, -0.580502f, -0.580574f,
+-0.580645f, -0.580716f, -0.580788f, -0.580859f, -0.58093f, -0.581002f, -0.581073f, -0.581144f, -0.581215f, -0.581287f, -0.581358f, -0.581429f, -0.581501f, -0.581572f, -0.581643f, -0.581714f, -0.581786f, -0.581857f, -0.581928f, -0.581999f,
+-0.58207f, -0.582142f, -0.582213f, -0.582284f, -0.582355f, -0.582426f, -0.582498f, -0.582569f, -0.58264f, -0.582711f, -0.582782f, -0.582853f, -0.582924f, -0.582996f, -0.583067f, -0.583138f, -0.583209f, -0.58328f, -0.583351f, -0.583422f,
+-0.583493f, -0.583564f, -0.583635f, -0.583706f, -0.583777f, -0.583848f, -0.58392f, -0.583991f, -0.584062f, -0.584133f, -0.584204f, -0.584275f, -0.584346f, -0.584417f, -0.584488f, -0.584559f, -0.584629f, -0.5847f, -0.584771f, -0.584842f,
+-0.584913f, -0.584984f, -0.585055f, -0.585126f, -0.585197f, -0.585268f, -0.585339f, -0.58541f, -0.585481f, -0.585551f, -0.585622f, -0.585693f, -0.585764f, -0.585835f, -0.585906f, -0.585976f, -0.586047f, -0.586118f, -0.586189f, -0.58626f,
+-0.586331f, -0.586401f, -0.586472f, -0.586543f, -0.586614f, -0.586684f, -0.586755f, -0.586826f, -0.586897f, -0.586967f, -0.587038f, -0.587109f, -0.58718f, -0.58725f, -0.587321f, -0.587392f, -0.587462f, -0.587533f, -0.587604f, -0.587674f,
+-0.587745f, -0.587816f, -0.587886f, -0.587957f, -0.588028f, -0.588098f, -0.588169f, -0.588239f, -0.58831f, -0.588381f, -0.588451f, -0.588522f, -0.588592f, -0.588663f, -0.588734f, -0.588804f, -0.588875f, -0.588945f, -0.589016f, -0.589086f,
+-0.589157f, -0.589227f, -0.589298f, -0.589368f, -0.589439f, -0.589509f, -0.58958f, -0.58965f, -0.589721f, -0.589791f, -0.589862f, -0.589932f, -0.590003f, -0.590073f, -0.590143f, -0.590214f, -0.590284f, -0.590355f, -0.590425f, -0.590495f,
+-0.590566f, -0.590636f, -0.590706f, -0.590777f, -0.590847f, -0.590918f, -0.590988f, -0.591058f, -0.591129f, -0.591199f, -0.591269f, -0.591339f, -0.59141f, -0.59148f, -0.59155f, -0.591621f, -0.591691f, -0.591761f, -0.591831f, -0.591902f,
+-0.591972f, -0.592042f, -0.592112f, -0.592183f, -0.592253f, -0.592323f, -0.592393f, -0.592463f, -0.592534f, -0.592604f, -0.592674f, -0.592744f, -0.592814f, -0.592884f, -0.592955f, -0.593025f, -0.593095f, -0.593165f, -0.593235f, -0.593305f,
+-0.593375f, -0.593445f, -0.593515f, -0.593585f, -0.593656f, -0.593726f, -0.593796f, -0.593866f, -0.593936f, -0.594006f, -0.594076f, -0.594146f, -0.594216f, -0.594286f, -0.594356f, -0.594426f, -0.594496f, -0.594566f, -0.594636f, -0.594706f,
+-0.594776f, -0.594846f, -0.594916f, -0.594986f, -0.595056f, -0.595125f, -0.595195f, -0.595265f, -0.595335f, -0.595405f, -0.595475f, -0.595545f, -0.595615f, -0.595685f, -0.595754f, -0.595824f, -0.595894f, -0.595964f, -0.596034f, -0.596104f,
+-0.596173f, -0.596243f, -0.596313f, -0.596383f, -0.596453f, -0.596522f, -0.596592f, -0.596662f, -0.596732f, -0.596801f, -0.596871f, -0.596941f, -0.597011f, -0.59708f, -0.59715f, -0.59722f, -0.59729f, -0.597359f, -0.597429f, -0.597499f,
+-0.597568f, -0.597638f, -0.597708f, -0.597777f, -0.597847f, -0.597917f, -0.597986f, -0.598056f, -0.598125f, -0.598195f, -0.598265f, -0.598334f, -0.598404f, -0.598473f, -0.598543f, -0.598613f, -0.598682f, -0.598752f, -0.598821f, -0.598891f,
+-0.59896f, -0.59903f, -0.599099f, -0.599169f, -0.599238f, -0.599308f, -0.599377f, -0.599447f, -0.599516f, -0.599586f, -0.599655f, -0.599725f, -0.599794f, -0.599864f, -0.599933f, -0.600002f, -0.600072f, -0.600141f, -0.600211f, -0.60028f,
+-0.600349f, -0.600419f, -0.600488f, -0.600558f, -0.600627f, -0.600696f, -0.600766f, -0.600835f, -0.600904f, -0.600974f, -0.601043f, -0.601112f, -0.601182f, -0.601251f, -0.60132f, -0.601389f, -0.601459f, -0.601528f, -0.601597f, -0.601666f,
+-0.601736f, -0.601805f, -0.601874f, -0.601943f, -0.602013f, -0.602082f, -0.602151f, -0.60222f, -0.602289f, -0.602359f, -0.602428f, -0.602497f, -0.602566f, -0.602635f, -0.602704f, -0.602774f, -0.602843f, -0.602912f, -0.602981f, -0.60305f,
+-0.603119f, -0.603188f, -0.603257f, -0.603326f, -0.603395f, -0.603465f, -0.603534f, -0.603603f, -0.603672f, -0.603741f, -0.60381f, -0.603879f, -0.603948f, -0.604017f, -0.604086f, -0.604155f, -0.604224f, -0.604293f, -0.604362f, -0.604431f,
+-0.6045f, -0.604569f, -0.604638f, -0.604706f, -0.604775f, -0.604844f, -0.604913f, -0.604982f, -0.605051f, -0.60512f, -0.605189f, -0.605258f, -0.605327f, -0.605395f, -0.605464f, -0.605533f, -0.605602f, -0.605671f, -0.60574f, -0.605808f,
+-0.605877f, -0.605946f, -0.606015f, -0.606084f, -0.606152f, -0.606221f, -0.60629f, -0.606359f, -0.606428f, -0.606496f, -0.606565f, -0.606634f, -0.606702f, -0.606771f, -0.60684f, -0.606909f, -0.606977f, -0.607046f, -0.607115f, -0.607183f,
+-0.607252f, -0.607321f, -0.607389f, -0.607458f, -0.607527f, -0.607595f, -0.607664f, -0.607732f, -0.607801f, -0.60787f, -0.607938f, -0.608007f, -0.608075f, -0.608144f, -0.608213f, -0.608281f, -0.60835f, -0.608418f, -0.608487f, -0.608555f,
+-0.608624f, -0.608692f, -0.608761f, -0.608829f, -0.608898f, -0.608966f, -0.609035f, -0.609103f, -0.609172f, -0.60924f, -0.609309f, -0.609377f, -0.609445f, -0.609514f, -0.609582f, -0.609651f, -0.609719f, -0.609788f, -0.609856f, -0.609924f,
+-0.609993f, -0.610061f, -0.610129f, -0.610198f, -0.610266f, -0.610334f, -0.610403f, -0.610471f, -0.610539f, -0.610608f, -0.610676f, -0.610744f, -0.610813f, -0.610881f, -0.610949f, -0.611017f, -0.611086f, -0.611154f, -0.611222f, -0.61129f,
+-0.611359f, -0.611427f, -0.611495f, -0.611563f, -0.611631f, -0.6117f, -0.611768f, -0.611836f, -0.611904f, -0.611972f, -0.61204f, -0.612109f, -0.612177f, -0.612245f, -0.612313f, -0.612381f, -0.612449f, -0.612517f, -0.612585f, -0.612654f,
+-0.612722f, -0.61279f, -0.612858f, -0.612926f, -0.612994f, -0.613062f, -0.61313f, -0.613198f, -0.613266f, -0.613334f, -0.613402f, -0.61347f, -0.613538f, -0.613606f, -0.613674f, -0.613742f, -0.61381f, -0.613878f, -0.613946f, -0.614014f,
+-0.614082f, -0.61415f, -0.614218f, -0.614285f, -0.614353f, -0.614421f, -0.614489f, -0.614557f, -0.614625f, -0.614693f, -0.614761f, -0.614828f, -0.614896f, -0.614964f, -0.615032f, -0.6151f, -0.615168f, -0.615235f, -0.615303f, -0.615371f,
+-0.615439f, -0.615507f, -0.615574f, -0.615642f, -0.61571f, -0.615778f, -0.615845f, -0.615913f, -0.615981f, -0.616048f, -0.616116f, -0.616184f, -0.616252f, -0.616319f, -0.616387f, -0.616455f, -0.616522f, -0.61659f, -0.616658f, -0.616725f,
+-0.616793f, -0.61686f, -0.616928f, -0.616996f, -0.617063f, -0.617131f, -0.617199f, -0.617266f, -0.617334f, -0.617401f, -0.617469f, -0.617536f, -0.617604f, -0.617671f, -0.617739f, -0.617806f, -0.617874f, -0.617942f, -0.618009f, -0.618077f,
+-0.618144f, -0.618211f, -0.618279f, -0.618346f, -0.618414f, -0.618481f, -0.618549f, -0.618616f, -0.618684f, -0.618751f, -0.618818f, -0.618886f, -0.618953f, -0.619021f, -0.619088f, -0.619155f, -0.619223f, -0.61929f, -0.619357f, -0.619425f,
+-0.619492f, -0.619559f, -0.619627f, -0.619694f, -0.619761f, -0.619829f, -0.619896f, -0.619963f, -0.620031f, -0.620098f, -0.620165f, -0.620232f, -0.6203f, -0.620367f, -0.620434f, -0.620501f, -0.620568f, -0.620636f, -0.620703f, -0.62077f,
+-0.620837f, -0.620904f, -0.620972f, -0.621039f, -0.621106f, -0.621173f, -0.62124f, -0.621307f, -0.621374f, -0.621442f, -0.621509f, -0.621576f, -0.621643f, -0.62171f, -0.621777f, -0.621844f, -0.621911f, -0.621978f, -0.622045f, -0.622112f,
+-0.622179f, -0.622246f, -0.622313f, -0.62238f, -0.622447f, -0.622514f, -0.622581f, -0.622648f, -0.622715f, -0.622782f, -0.622849f, -0.622916f, -0.622983f, -0.62305f, -0.623117f, -0.623184f, -0.623251f, -0.623318f, -0.623385f, -0.623452f,
+-0.623519f, -0.623585f, -0.623652f, -0.623719f, -0.623786f, -0.623853f, -0.62392f, -0.623987f, -0.624053f, -0.62412f, -0.624187f, -0.624254f, -0.624321f, -0.624387f, -0.624454f, -0.624521f, -0.624588f, -0.624654f, -0.624721f, -0.624788f,
+-0.624855f, -0.624921f, -0.624988f, -0.625055f, -0.625121f, -0.625188f, -0.625255f, -0.625322f, -0.625388f, -0.625455f, -0.625522f, -0.625588f, -0.625655f, -0.625721f, -0.625788f, -0.625855f, -0.625921f, -0.625988f, -0.626054f, -0.626121f,
+-0.626188f, -0.626254f, -0.626321f, -0.626387f, -0.626454f, -0.62652f, -0.626587f, -0.626654f, -0.62672f, -0.626787f, -0.626853f, -0.62692f, -0.626986f, -0.627053f, -0.627119f, -0.627185f, -0.627252f, -0.627318f, -0.627385f, -0.627451f,
+-0.627518f, -0.627584f, -0.627651f, -0.627717f, -0.627783f, -0.62785f, -0.627916f, -0.627982f, -0.628049f, -0.628115f, -0.628182f, -0.628248f, -0.628314f, -0.628381f, -0.628447f, -0.628513f, -0.628579f, -0.628646f, -0.628712f, -0.628778f,
+-0.628845f, -0.628911f, -0.628977f, -0.629043f, -0.62911f, -0.629176f, -0.629242f, -0.629308f, -0.629375f, -0.629441f, -0.629507f, -0.629573f, -0.629639f, -0.629705f, -0.629772f, -0.629838f, -0.629904f, -0.62997f, -0.630036f, -0.630102f,
+-0.630169f, -0.630235f, -0.630301f, -0.630367f, -0.630433f, -0.630499f, -0.630565f, -0.630631f, -0.630697f, -0.630763f, -0.630829f, -0.630895f, -0.630961f, -0.631027f, -0.631093f, -0.631159f, -0.631225f, -0.631291f, -0.631357f, -0.631423f,
+-0.631489f, -0.631555f, -0.631621f, -0.631687f, -0.631753f, -0.631819f, -0.631885f, -0.631951f, -0.632017f, -0.632083f, -0.632149f, -0.632214f, -0.63228f, -0.632346f, -0.632412f, -0.632478f, -0.632544f, -0.63261f, -0.632675f, -0.632741f,
+-0.632807f, -0.632873f, -0.632939f, -0.633004f, -0.63307f, -0.633136f, -0.633202f, -0.633268f, -0.633333f, -0.633399f, -0.633465f, -0.63353f, -0.633596f, -0.633662f, -0.633728f, -0.633793f, -0.633859f, -0.633925f, -0.63399f, -0.634056f,
+-0.634122f, -0.634187f, -0.634253f, -0.634319f, -0.634384f, -0.63445f, -0.634515f, -0.634581f, -0.634647f, -0.634712f, -0.634778f, -0.634843f, -0.634909f, -0.634975f, -0.63504f, -0.635106f, -0.635171f, -0.635237f, -0.635302f, -0.635368f,
+-0.635433f, -0.635499f, -0.635564f, -0.63563f, -0.635695f, -0.635761f, -0.635826f, -0.635892f, -0.635957f, -0.636022f, -0.636088f, -0.636153f, -0.636219f, -0.636284f, -0.636349f, -0.636415f, -0.63648f, -0.636546f, -0.636611f, -0.636676f,
+-0.636742f, -0.636807f, -0.636872f, -0.636938f, -0.637003f, -0.637068f, -0.637134f, -0.637199f, -0.637264f, -0.637329f, -0.637395f, -0.63746f, -0.637525f, -0.63759f, -0.637656f, -0.637721f, -0.637786f, -0.637851f, -0.637917f, -0.637982f,
+-0.638047f, -0.638112f, -0.638177f, -0.638243f, -0.638308f, -0.638373f, -0.638438f, -0.638503f, -0.638568f, -0.638633f, -0.638698f, -0.638764f, -0.638829f, -0.638894f, -0.638959f, -0.639024f, -0.639089f, -0.639154f, -0.639219f, -0.639284f,
+-0.639349f, -0.639414f, -0.639479f, -0.639544f, -0.639609f, -0.639674f, -0.639739f, -0.639804f, -0.639869f, -0.639934f, -0.639999f, -0.640064f, -0.640129f, -0.640194f, -0.640259f, -0.640324f, -0.640389f, -0.640454f, -0.640518f, -0.640583f,
+-0.640648f, -0.640713f, -0.640778f, -0.640843f, -0.640908f, -0.640972f, -0.641037f, -0.641102f, -0.641167f, -0.641232f, -0.641297f, -0.641361f, -0.641426f, -0.641491f, -0.641556f, -0.64162f, -0.641685f, -0.64175f, -0.641815f, -0.641879f,
+-0.641944f, -0.642009f, -0.642074f, -0.642138f, -0.642203f, -0.642268f, -0.642332f, -0.642397f, -0.642462f, -0.642526f, -0.642591f, -0.642656f, -0.64272f, -0.642785f, -0.642849f, -0.642914f, -0.642979f, -0.643043f, -0.643108f, -0.643172f,
+-0.643237f, -0.643301f, -0.643366f, -0.643431f, -0.643495f, -0.64356f, -0.643624f, -0.643689f, -0.643753f, -0.643818f, -0.643882f, -0.643947f, -0.644011f, -0.644075f, -0.64414f, -0.644204f, -0.644269f, -0.644333f, -0.644398f, -0.644462f,
+-0.644526f, -0.644591f, -0.644655f, -0.64472f, -0.644784f, -0.644848f, -0.644913f, -0.644977f, -0.645041f, -0.645106f, -0.64517f, -0.645234f, -0.645299f, -0.645363f, -0.645427f, -0.645492f, -0.645556f, -0.64562f, -0.645684f, -0.645749f,
+-0.645813f, -0.645877f, -0.645941f, -0.646006f, -0.64607f, -0.646134f, -0.646198f, -0.646262f, -0.646327f, -0.646391f, -0.646455f, -0.646519f, -0.646583f, -0.646647f, -0.646711f, -0.646776f, -0.64684f, -0.646904f, -0.646968f, -0.647032f,
+-0.647096f, -0.64716f, -0.647224f, -0.647288f, -0.647352f, -0.647416f, -0.64748f, -0.647544f, -0.647609f, -0.647673f, -0.647737f, -0.647801f, -0.647865f, -0.647928f, -0.647992f, -0.648056f, -0.64812f, -0.648184f, -0.648248f, -0.648312f,
+-0.648376f, -0.64844f, -0.648504f, -0.648568f, -0.648632f, -0.648696f, -0.64876f, -0.648823f, -0.648887f, -0.648951f, -0.649015f, -0.649079f, -0.649143f, -0.649206f, -0.64927f, -0.649334f, -0.649398f, -0.649462f, -0.649525f, -0.649589f,
+-0.649653f, -0.649717f, -0.649781f, -0.649844f, -0.649908f, -0.649972f, -0.650035f, -0.650099f, -0.650163f, -0.650227f, -0.65029f, -0.650354f, -0.650418f, -0.650481f, -0.650545f, -0.650609f, -0.650672f, -0.650736f, -0.650799f, -0.650863f,
+-0.650927f, -0.65099f, -0.651054f, -0.651117f, -0.651181f, -0.651245f, -0.651308f, -0.651372f, -0.651435f, -0.651499f, -0.651562f, -0.651626f, -0.651689f, -0.651753f, -0.651816f, -0.65188f, -0.651943f, -0.652007f, -0.65207f, -0.652134f,
+-0.652197f, -0.65226f, -0.652324f, -0.652387f, -0.652451f, -0.652514f, -0.652578f, -0.652641f, -0.652704f, -0.652768f, -0.652831f, -0.652894f, -0.652958f, -0.653021f, -0.653084f, -0.653148f, -0.653211f, -0.653274f, -0.653338f, -0.653401f,
+-0.653464f, -0.653528f, -0.653591f, -0.653654f, -0.653717f, -0.653781f, -0.653844f, -0.653907f, -0.65397f, -0.654033f, -0.654097f, -0.65416f, -0.654223f, -0.654286f, -0.654349f, -0.654413f, -0.654476f, -0.654539f, -0.654602f, -0.654665f,
+-0.654728f, -0.654791f, -0.654854f, -0.654918f, -0.654981f, -0.655044f, -0.655107f, -0.65517f, -0.655233f, -0.655296f, -0.655359f, -0.655422f, -0.655485f, -0.655548f, -0.655611f, -0.655674f, -0.655737f, -0.6558f, -0.655863f, -0.655926f,
+-0.655989f, -0.656052f, -0.656115f, -0.656178f, -0.656241f, -0.656304f, -0.656367f, -0.656429f, -0.656492f, -0.656555f, -0.656618f, -0.656681f, -0.656744f, -0.656807f, -0.65687f, -0.656932f, -0.656995f, -0.657058f, -0.657121f, -0.657184f,
+-0.657246f, -0.657309f, -0.657372f, -0.657435f, -0.657498f, -0.65756f, -0.657623f, -0.657686f, -0.657748f, -0.657811f, -0.657874f, -0.657937f, -0.657999f, -0.658062f, -0.658125f, -0.658187f, -0.65825f, -0.658313f, -0.658375f, -0.658438f,
+-0.658501f, -0.658563f, -0.658626f, -0.658688f, -0.658751f, -0.658814f, -0.658876f, -0.658939f, -0.659001f, -0.659064f, -0.659127f, -0.659189f, -0.659252f, -0.659314f, -0.659377f, -0.659439f, -0.659502f, -0.659564f, -0.659627f, -0.659689f,
+-0.659752f, -0.659814f, -0.659876f, -0.659939f, -0.660001f, -0.660064f, -0.660126f, -0.660189f, -0.660251f, -0.660313f, -0.660376f, -0.660438f, -0.660501f, -0.660563f, -0.660625f, -0.660688f, -0.66075f, -0.660812f, -0.660875f, -0.660937f,
+-0.660999f, -0.661062f, -0.661124f, -0.661186f, -0.661248f, -0.661311f, -0.661373f, -0.661435f, -0.661497f, -0.66156f, -0.661622f, -0.661684f, -0.661746f, -0.661808f, -0.661871f, -0.661933f, -0.661995f, -0.662057f, -0.662119f, -0.662182f,
+-0.662244f, -0.662306f, -0.662368f, -0.66243f, -0.662492f, -0.662554f, -0.662616f, -0.662678f, -0.66274f, -0.662803f, -0.662865f, -0.662927f, -0.662989f, -0.663051f, -0.663113f, -0.663175f, -0.663237f, -0.663299f, -0.663361f, -0.663423f,
+-0.663485f, -0.663547f, -0.663609f, -0.663671f, -0.663733f, -0.663794f, -0.663856f, -0.663918f, -0.66398f, -0.664042f, -0.664104f, -0.664166f, -0.664228f, -0.66429f, -0.664352f, -0.664413f, -0.664475f, -0.664537f, -0.664599f, -0.664661f,
+-0.664723f, -0.664784f, -0.664846f, -0.664908f, -0.66497f, -0.665031f, -0.665093f, -0.665155f, -0.665217f, -0.665278f, -0.66534f, -0.665402f, -0.665464f, -0.665525f, -0.665587f, -0.665649f, -0.66571f, -0.665772f, -0.665834f, -0.665895f,
+-0.665957f, -0.666019f, -0.66608f, -0.666142f, -0.666204f, -0.666265f, -0.666327f, -0.666388f, -0.66645f, -0.666511f, -0.666573f, -0.666635f, -0.666696f, -0.666758f, -0.666819f, -0.666881f, -0.666942f, -0.667004f, -0.667065f, -0.667127f,
+-0.667188f, -0.66725f, -0.667311f, -0.667373f, -0.667434f, -0.667495f, -0.667557f, -0.667618f, -0.66768f, -0.667741f, -0.667803f, -0.667864f, -0.667925f, -0.667987f, -0.668048f, -0.668109f, -0.668171f, -0.668232f, -0.668293f, -0.668355f,
+-0.668416f, -0.668477f, -0.668539f, -0.6686f, -0.668661f, -0.668722f, -0.668784f, -0.668845f, -0.668906f, -0.668967f, -0.669029f, -0.66909f, -0.669151f, -0.669212f, -0.669274f, -0.669335f, -0.669396f, -0.669457f, -0.669518f, -0.669579f,
+-0.669641f, -0.669702f, -0.669763f, -0.669824f, -0.669885f, -0.669946f, -0.670007f, -0.670068f, -0.670129f, -0.67019f, -0.670252f, -0.670313f, -0.670374f, -0.670435f, -0.670496f, -0.670557f, -0.670618f, -0.670679f, -0.67074f, -0.670801f,
+-0.670862f, -0.670923f, -0.670984f, -0.671045f, -0.671106f, -0.671166f, -0.671227f, -0.671288f, -0.671349f, -0.67141f, -0.671471f, -0.671532f, -0.671593f, -0.671654f, -0.671714f, -0.671775f, -0.671836f, -0.671897f, -0.671958f, -0.672019f,
+-0.672079f, -0.67214f, -0.672201f, -0.672262f, -0.672323f, -0.672383f, -0.672444f, -0.672505f, -0.672566f, -0.672626f, -0.672687f, -0.672748f, -0.672809f, -0.672869f, -0.67293f, -0.672991f, -0.673051f, -0.673112f, -0.673173f, -0.673233f,
+-0.673294f, -0.673355f, -0.673415f, -0.673476f, -0.673536f, -0.673597f, -0.673658f, -0.673718f, -0.673779f, -0.673839f, -0.6739f, -0.67396f, -0.674021f, -0.674082f, -0.674142f, -0.674203f, -0.674263f, -0.674324f, -0.674384f, -0.674445f,
+-0.674505f, -0.674565f, -0.674626f, -0.674686f, -0.674747f, -0.674807f, -0.674868f, -0.674928f, -0.674988f, -0.675049f, -0.675109f, -0.67517f, -0.67523f, -0.67529f, -0.675351f, -0.675411f, -0.675471f, -0.675532f, -0.675592f, -0.675652f,
+-0.675713f, -0.675773f, -0.675833f, -0.675894f, -0.675954f, -0.676014f, -0.676074f, -0.676135f, -0.676195f, -0.676255f, -0.676315f, -0.676375f, -0.676436f, -0.676496f, -0.676556f, -0.676616f, -0.676676f, -0.676737f, -0.676797f, -0.676857f,
+-0.676917f, -0.676977f, -0.677037f, -0.677097f, -0.677157f, -0.677218f, -0.677278f, -0.677338f, -0.677398f, -0.677458f, -0.677518f, -0.677578f, -0.677638f, -0.677698f, -0.677758f, -0.677818f, -0.677878f, -0.677938f, -0.677998f, -0.678058f,
+-0.678118f, -0.678178f, -0.678238f, -0.678298f, -0.678358f, -0.678418f, -0.678478f, -0.678537f, -0.678597f, -0.678657f, -0.678717f, -0.678777f, -0.678837f, -0.678897f, -0.678957f, -0.679016f, -0.679076f, -0.679136f, -0.679196f, -0.679256f,
+-0.679315f, -0.679375f, -0.679435f, -0.679495f, -0.679555f, -0.679614f, -0.679674f, -0.679734f, -0.679794f, -0.679853f, -0.679913f, -0.679973f, -0.680032f, -0.680092f, -0.680152f, -0.680211f, -0.680271f, -0.680331f, -0.68039f, -0.68045f,
+-0.68051f, -0.680569f, -0.680629f, -0.680688f, -0.680748f, -0.680808f, -0.680867f, -0.680927f, -0.680986f, -0.681046f, -0.681105f, -0.681165f, -0.681224f, -0.681284f, -0.681343f, -0.681403f, -0.681462f, -0.681522f, -0.681581f, -0.681641f,
+-0.6817f, -0.68176f, -0.681819f, -0.681879f, -0.681938f, -0.681997f, -0.682057f, -0.682116f, -0.682176f, -0.682235f, -0.682294f, -0.682354f, -0.682413f, -0.682472f, -0.682532f, -0.682591f, -0.68265f, -0.68271f, -0.682769f, -0.682828f,
+-0.682888f, -0.682947f, -0.683006f, -0.683065f, -0.683125f, -0.683184f, -0.683243f, -0.683302f, -0.683361f, -0.683421f, -0.68348f, -0.683539f, -0.683598f, -0.683657f, -0.683717f, -0.683776f, -0.683835f, -0.683894f, -0.683953f, -0.684012f,
+-0.684071f, -0.68413f, -0.68419f, -0.684249f, -0.684308f, -0.684367f, -0.684426f, -0.684485f, -0.684544f, -0.684603f, -0.684662f, -0.684721f, -0.68478f, -0.684839f, -0.684898f, -0.684957f, -0.685016f, -0.685075f, -0.685134f, -0.685193f,
+-0.685252f, -0.685311f, -0.68537f, -0.685429f, -0.685487f, -0.685546f, -0.685605f, -0.685664f, -0.685723f, -0.685782f, -0.685841f, -0.6859f, -0.685958f, -0.686017f, -0.686076f, -0.686135f, -0.686194f, -0.686252f, -0.686311f, -0.68637f,
+-0.686429f, -0.686487f, -0.686546f, -0.686605f, -0.686664f, -0.686722f, -0.686781f, -0.68684f, -0.686899f, -0.686957f, -0.687016f, -0.687075f, -0.687133f, -0.687192f, -0.687251f, -0.687309f, -0.687368f, -0.687426f, -0.687485f, -0.687544f,
+-0.687602f, -0.687661f, -0.687719f, -0.687778f, -0.687836f, -0.687895f, -0.687954f, -0.688012f, -0.688071f, -0.688129f, -0.688188f, -0.688246f, -0.688305f, -0.688363f, -0.688422f, -0.68848f, -0.688538f, -0.688597f, -0.688655f, -0.688714f,
+-0.688772f, -0.688831f, -0.688889f, -0.688947f, -0.689006f, -0.689064f, -0.689123f, -0.689181f, -0.689239f, -0.689298f, -0.689356f, -0.689414f, -0.689473f, -0.689531f, -0.689589f, -0.689647f, -0.689706f, -0.689764f, -0.689822f, -0.689881f,
+-0.689939f, -0.689997f, -0.690055f, -0.690113f, -0.690172f, -0.69023f, -0.690288f, -0.690346f, -0.690404f, -0.690463f, -0.690521f, -0.690579f, -0.690637f, -0.690695f, -0.690753f, -0.690811f, -0.690869f, -0.690928f, -0.690986f, -0.691044f,
+-0.691102f, -0.69116f, -0.691218f, -0.691276f, -0.691334f, -0.691392f, -0.69145f, -0.691508f, -0.691566f, -0.691624f, -0.691682f, -0.69174f, -0.691798f, -0.691856f, -0.691914f, -0.691972f, -0.69203f, -0.692088f, -0.692146f, -0.692204f,
+-0.692261f, -0.692319f, -0.692377f, -0.692435f, -0.692493f, -0.692551f, -0.692609f, -0.692666f, -0.692724f, -0.692782f, -0.69284f, -0.692898f, -0.692955f, -0.693013f, -0.693071f, -0.693129f, -0.693187f, -0.693244f, -0.693302f, -0.69336f,
+-0.693417f, -0.693475f, -0.693533f, -0.693591f, -0.693648f, -0.693706f, -0.693764f, -0.693821f, -0.693879f, -0.693937f, -0.693994f, -0.694052f, -0.694109f, -0.694167f, -0.694225f, -0.694282f, -0.69434f, -0.694397f, -0.694455f, -0.694513f,
+-0.69457f, -0.694628f, -0.694685f, -0.694743f, -0.6948f, -0.694858f, -0.694915f, -0.694973f, -0.69503f, -0.695088f, -0.695145f, -0.695202f, -0.69526f, -0.695317f, -0.695375f, -0.695432f, -0.69549f, -0.695547f, -0.695604f, -0.695662f,
+-0.695719f, -0.695776f, -0.695834f, -0.695891f, -0.695949f, -0.696006f, -0.696063f, -0.69612f, -0.696178f, -0.696235f, -0.696292f, -0.69635f, -0.696407f, -0.696464f, -0.696521f, -0.696579f, -0.696636f, -0.696693f, -0.69675f, -0.696807f,
+-0.696865f, -0.696922f, -0.696979f, -0.697036f, -0.697093f, -0.69715f, -0.697208f, -0.697265f, -0.697322f, -0.697379f, -0.697436f, -0.697493f, -0.69755f, -0.697607f, -0.697664f, -0.697721f, -0.697779f, -0.697836f, -0.697893f, -0.69795f,
+-0.698007f, -0.698064f, -0.698121f, -0.698178f, -0.698235f, -0.698292f, -0.698349f, -0.698406f, -0.698462f, -0.698519f, -0.698576f, -0.698633f, -0.69869f, -0.698747f, -0.698804f, -0.698861f, -0.698918f, -0.698975f, -0.699031f, -0.699088f,
+-0.699145f, -0.699202f, -0.699259f, -0.699316f, -0.699372f, -0.699429f, -0.699486f, -0.699543f, -0.6996f, -0.699656f, -0.699713f, -0.69977f, -0.699827f, -0.699883f, -0.69994f, -0.699997f, -0.700053f, -0.70011f, -0.700167f, -0.700223f,
+-0.70028f, -0.700337f, -0.700393f, -0.70045f, -0.700507f, -0.700563f, -0.70062f, -0.700676f, -0.700733f, -0.70079f, -0.700846f, -0.700903f, -0.700959f, -0.701016f, -0.701072f, -0.701129f, -0.701185f, -0.701242f, -0.701298f, -0.701355f,
+-0.701411f, -0.701468f, -0.701524f, -0.701581f, -0.701637f, -0.701694f, -0.70175f, -0.701807f, -0.701863f, -0.701919f, -0.701976f, -0.702032f, -0.702089f, -0.702145f, -0.702201f, -0.702258f, -0.702314f, -0.70237f, -0.702427f, -0.702483f,
+-0.702539f, -0.702596f, -0.702652f, -0.702708f, -0.702764f, -0.702821f, -0.702877f, -0.702933f, -0.702989f, -0.703046f, -0.703102f, -0.703158f, -0.703214f, -0.70327f, -0.703327f, -0.703383f, -0.703439f, -0.703495f, -0.703551f, -0.703607f,
+-0.703664f, -0.70372f, -0.703776f, -0.703832f, -0.703888f, -0.703944f, -0.704f, -0.704056f, -0.704112f, -0.704168f, -0.704224f, -0.70428f, -0.704336f, -0.704392f, -0.704448f, -0.704504f, -0.70456f, -0.704616f, -0.704672f, -0.704728f,
+-0.704784f, -0.70484f, -0.704896f, -0.704952f, -0.705008f, -0.705064f, -0.70512f, -0.705176f, -0.705231f, -0.705287f, -0.705343f, -0.705399f, -0.705455f, -0.705511f, -0.705567f, -0.705622f, -0.705678f, -0.705734f, -0.70579f, -0.705846f,
+-0.705901f, -0.705957f, -0.706013f, -0.706069f, -0.706124f, -0.70618f, -0.706236f, -0.706291f, -0.706347f, -0.706403f, -0.706458f, -0.706514f, -0.70657f, -0.706625f, -0.706681f, -0.706737f, -0.706792f, -0.706848f, -0.706904f, -0.706959f,
+-0.707015f, -0.70707f, -0.707126f, -0.707181f, -0.707237f, -0.707293f, -0.707348f, -0.707404f, -0.707459f, -0.707515f, -0.70757f, -0.707626f, -0.707681f, -0.707737f, -0.707792f, -0.707848f, -0.707903f, -0.707958f, -0.708014f, -0.708069f,
+-0.708125f, -0.70818f, -0.708235f, -0.708291f, -0.708346f, -0.708402f, -0.708457f, -0.708512f, -0.708568f, -0.708623f, -0.708678f, -0.708734f, -0.708789f, -0.708844f, -0.708899f, -0.708955f, -0.70901f, -0.709065f, -0.709121f, -0.709176f,
+-0.709231f, -0.709286f, -0.709341f, -0.709397f, -0.709452f, -0.709507f, -0.709562f, -0.709617f, -0.709672f, -0.709728f, -0.709783f, -0.709838f, -0.709893f, -0.709948f, -0.710003f, -0.710058f, -0.710113f, -0.710168f, -0.710224f, -0.710279f,
+-0.710334f, -0.710389f, -0.710444f, -0.710499f, -0.710554f, -0.710609f, -0.710664f, -0.710719f, -0.710774f, -0.710829f, -0.710884f, -0.710939f, -0.710994f, -0.711048f, -0.711103f, -0.711158f, -0.711213f, -0.711268f, -0.711323f, -0.711378f,
+-0.711433f, -0.711488f, -0.711542f, -0.711597f, -0.711652f, -0.711707f, -0.711762f, -0.711817f, -0.711871f, -0.711926f, -0.711981f, -0.712036f, -0.71209f, -0.712145f, -0.7122f, -0.712255f, -0.712309f, -0.712364f, -0.712419f, -0.712473f,
+-0.712528f, -0.712583f, -0.712638f, -0.712692f, -0.712747f, -0.712801f, -0.712856f, -0.712911f, -0.712965f, -0.71302f, -0.713075f, -0.713129f, -0.713184f, -0.713238f, -0.713293f, -0.713347f, -0.713402f, -0.713456f, -0.713511f, -0.713565f,
+-0.71362f, -0.713674f, -0.713729f, -0.713783f, -0.713838f, -0.713892f, -0.713947f, -0.714001f, -0.714056f, -0.71411f, -0.714165f, -0.714219f, -0.714273f, -0.714328f, -0.714382f, -0.714436f, -0.714491f, -0.714545f, -0.714599f, -0.714654f,
+-0.714708f, -0.714762f, -0.714817f, -0.714871f, -0.714925f, -0.71498f, -0.715034f, -0.715088f, -0.715142f, -0.715197f, -0.715251f, -0.715305f, -0.715359f, -0.715413f, -0.715468f, -0.715522f, -0.715576f, -0.71563f, -0.715684f, -0.715739f,
+-0.715793f, -0.715847f, -0.715901f, -0.715955f, -0.716009f, -0.716063f, -0.716117f, -0.716171f, -0.716225f, -0.716279f, -0.716334f, -0.716388f, -0.716442f, -0.716496f, -0.71655f, -0.716604f, -0.716658f, -0.716712f, -0.716766f, -0.71682f,
+-0.716874f, -0.716927f, -0.716981f, -0.717035f, -0.717089f, -0.717143f, -0.717197f, -0.717251f, -0.717305f, -0.717359f, -0.717413f, -0.717466f, -0.71752f, -0.717574f, -0.717628f, -0.717682f, -0.717736f, -0.717789f, -0.717843f, -0.717897f,
+-0.717951f, -0.718004f, -0.718058f, -0.718112f, -0.718166f, -0.718219f, -0.718273f, -0.718327f, -0.718381f, -0.718434f, -0.718488f, -0.718542f, -0.718595f, -0.718649f, -0.718703f, -0.718756f, -0.71881f, -0.718863f, -0.718917f, -0.718971f,
+-0.719024f, -0.719078f, -0.719131f, -0.719185f, -0.719238f, -0.719292f, -0.719346f, -0.719399f, -0.719453f, -0.719506f, -0.71956f, -0.719613f, -0.719667f, -0.71972f, -0.719774f, -0.719827f, -0.71988f, -0.719934f, -0.719987f, -0.720041f,
+-0.720094f, -0.720147f, -0.720201f, -0.720254f, -0.720308f, -0.720361f, -0.720414f, -0.720468f, -0.720521f, -0.720574f, -0.720628f, -0.720681f, -0.720734f, -0.720787f, -0.720841f, -0.720894f, -0.720947f, -0.721001f, -0.721054f, -0.721107f,
+-0.72116f, -0.721213f, -0.721267f, -0.72132f, -0.721373f, -0.721426f, -0.721479f, -0.721533f, -0.721586f, -0.721639f, -0.721692f, -0.721745f, -0.721798f, -0.721851f, -0.721904f, -0.721957f, -0.722011f, -0.722064f, -0.722117f, -0.72217f,
+-0.722223f, -0.722276f, -0.722329f, -0.722382f, -0.722435f, -0.722488f, -0.722541f, -0.722594f, -0.722647f, -0.7227f, -0.722753f, -0.722805f, -0.722858f, -0.722911f, -0.722964f, -0.723017f, -0.72307f, -0.723123f, -0.723176f, -0.723229f,
+-0.723281f, -0.723334f, -0.723387f, -0.72344f, -0.723493f, -0.723546f, -0.723598f, -0.723651f, -0.723704f, -0.723757f, -0.723809f, -0.723862f, -0.723915f, -0.723968f, -0.72402f, -0.724073f, -0.724126f, -0.724178f, -0.724231f, -0.724284f,
+-0.724337f, -0.724389f, -0.724442f, -0.724494f, -0.724547f, -0.7246f, -0.724652f, -0.724705f, -0.724758f, -0.72481f, -0.724863f, -0.724915f, -0.724968f, -0.72502f, -0.725073f, -0.725125f, -0.725178f, -0.72523f, -0.725283f, -0.725335f,
+-0.725388f, -0.72544f, -0.725493f, -0.725545f, -0.725598f, -0.72565f, -0.725703f, -0.725755f, -0.725807f, -0.72586f, -0.725912f, -0.725965f, -0.726017f, -0.726069f, -0.726122f, -0.726174f, -0.726226f, -0.726279f, -0.726331f, -0.726383f,
+-0.726435f, -0.726488f, -0.72654f, -0.726592f, -0.726645f, -0.726697f, -0.726749f, -0.726801f, -0.726853f, -0.726906f, -0.726958f, -0.72701f, -0.727062f, -0.727114f, -0.727167f, -0.727219f, -0.727271f, -0.727323f, -0.727375f, -0.727427f,
+-0.727479f, -0.727531f, -0.727584f, -0.727636f, -0.727688f, -0.72774f, -0.727792f, -0.727844f, -0.727896f, -0.727948f, -0.728f, -0.728052f, -0.728104f, -0.728156f, -0.728208f, -0.72826f, -0.728312f, -0.728364f, -0.728416f, -0.728468f,
+-0.72852f, -0.728571f, -0.728623f, -0.728675f, -0.728727f, -0.728779f, -0.728831f, -0.728883f, -0.728935f, -0.728986f, -0.729038f, -0.72909f, -0.729142f, -0.729194f, -0.729245f, -0.729297f, -0.729349f, -0.729401f, -0.729452f, -0.729504f,
+-0.729556f, -0.729608f, -0.729659f, -0.729711f, -0.729763f, -0.729814f, -0.729866f, -0.729918f, -0.729969f, -0.730021f, -0.730073f, -0.730124f, -0.730176f, -0.730228f, -0.730279f, -0.730331f, -0.730382f, -0.730434f, -0.730486f, -0.730537f,
+-0.730589f, -0.73064f, -0.730692f, -0.730743f, -0.730795f, -0.730846f, -0.730898f, -0.730949f, -0.731001f, -0.731052f, -0.731104f, -0.731155f, -0.731206f, -0.731258f, -0.731309f, -0.731361f, -0.731412f, -0.731463f, -0.731515f, -0.731566f,
+-0.731618f, -0.731669f, -0.73172f, -0.731772f, -0.731823f, -0.731874f, -0.731925f, -0.731977f, -0.732028f, -0.732079f, -0.732131f, -0.732182f, -0.732233f, -0.732284f, -0.732336f, -0.732387f, -0.732438f, -0.732489f, -0.73254f, -0.732591f,
+-0.732643f, -0.732694f, -0.732745f, -0.732796f, -0.732847f, -0.732898f, -0.732949f, -0.733001f, -0.733052f, -0.733103f, -0.733154f, -0.733205f, -0.733256f, -0.733307f, -0.733358f, -0.733409f, -0.73346f, -0.733511f, -0.733562f, -0.733613f,
+-0.733664f, -0.733715f, -0.733766f, -0.733817f, -0.733868f, -0.733919f, -0.73397f, -0.734021f, -0.734072f, -0.734122f, -0.734173f, -0.734224f, -0.734275f, -0.734326f, -0.734377f, -0.734428f, -0.734478f, -0.734529f, -0.73458f, -0.734631f,
+-0.734682f, -0.734732f, -0.734783f, -0.734834f, -0.734885f, -0.734935f, -0.734986f, -0.735037f, -0.735088f, -0.735138f, -0.735189f, -0.73524f, -0.73529f, -0.735341f, -0.735392f, -0.735442f, -0.735493f, -0.735544f, -0.735594f, -0.735645f,
+-0.735695f, -0.735746f, -0.735797f, -0.735847f, -0.735898f, -0.735948f, -0.735999f, -0.736049f, -0.7361f, -0.73615f, -0.736201f, -0.736251f, -0.736302f, -0.736352f, -0.736403f, -0.736453f, -0.736504f, -0.736554f, -0.736605f, -0.736655f,
+-0.736705f, -0.736756f, -0.736806f, -0.736857f, -0.736907f, -0.736957f, -0.737008f, -0.737058f, -0.737108f, -0.737159f, -0.737209f, -0.737259f, -0.73731f, -0.73736f, -0.73741f, -0.73746f, -0.737511f, -0.737561f, -0.737611f, -0.737661f,
+-0.737712f, -0.737762f, -0.737812f, -0.737862f, -0.737912f, -0.737963f, -0.738013f, -0.738063f, -0.738113f, -0.738163f, -0.738213f, -0.738263f, -0.738314f, -0.738364f, -0.738414f, -0.738464f, -0.738514f, -0.738564f, -0.738614f, -0.738664f,
+-0.738714f, -0.738764f, -0.738814f, -0.738864f, -0.738914f, -0.738964f, -0.739014f, -0.739064f, -0.739114f, -0.739164f, -0.739214f, -0.739264f, -0.739314f, -0.739364f, -0.739414f, -0.739463f, -0.739513f, -0.739563f, -0.739613f, -0.739663f,
+-0.739713f, -0.739763f, -0.739812f, -0.739862f, -0.739912f, -0.739962f, -0.740012f, -0.740061f, -0.740111f, -0.740161f, -0.740211f, -0.74026f, -0.74031f, -0.74036f, -0.740409f, -0.740459f, -0.740509f, -0.740559f, -0.740608f, -0.740658f,
+-0.740708f, -0.740757f, -0.740807f, -0.740856f, -0.740906f, -0.740956f, -0.741005f, -0.741055f, -0.741104f, -0.741154f, -0.741203f, -0.741253f, -0.741303f, -0.741352f, -0.741402f, -0.741451f, -0.741501f, -0.74155f, -0.7416f, -0.741649f,
+-0.741698f, -0.741748f, -0.741797f, -0.741847f, -0.741896f, -0.741946f, -0.741995f, -0.742044f, -0.742094f, -0.742143f, -0.742193f, -0.742242f, -0.742291f, -0.742341f, -0.74239f, -0.742439f, -0.742488f, -0.742538f, -0.742587f, -0.742636f,
+-0.742686f, -0.742735f, -0.742784f, -0.742833f, -0.742883f, -0.742932f, -0.742981f, -0.74303f, -0.743079f, -0.743129f, -0.743178f, -0.743227f, -0.743276f, -0.743325f, -0.743374f, -0.743423f, -0.743473f, -0.743522f, -0.743571f, -0.74362f,
+-0.743669f, -0.743718f, -0.743767f, -0.743816f, -0.743865f, -0.743914f, -0.743963f, -0.744012f, -0.744061f, -0.74411f, -0.744159f, -0.744208f, -0.744257f, -0.744306f, -0.744355f, -0.744404f, -0.744453f, -0.744502f, -0.744551f, -0.744599f,
+-0.744648f, -0.744697f, -0.744746f, -0.744795f, -0.744844f, -0.744893f, -0.744941f, -0.74499f, -0.745039f, -0.745088f, -0.745137f, -0.745185f, -0.745234f, -0.745283f, -0.745332f, -0.74538f, -0.745429f, -0.745478f, -0.745527f, -0.745575f,
+-0.745624f, -0.745673f, -0.745721f, -0.74577f, -0.745819f, -0.745867f, -0.745916f, -0.745965f, -0.746013f, -0.746062f, -0.74611f, -0.746159f, -0.746207f, -0.746256f, -0.746305f, -0.746353f, -0.746402f, -0.74645f, -0.746499f, -0.746547f,
+-0.746596f, -0.746644f, -0.746693f, -0.746741f, -0.74679f, -0.746838f, -0.746886f, -0.746935f, -0.746983f, -0.747032f, -0.74708f, -0.747129f, -0.747177f, -0.747225f, -0.747274f, -0.747322f, -0.74737f, -0.747419f, -0.747467f, -0.747515f,
+-0.747564f, -0.747612f, -0.74766f, -0.747708f, -0.747757f, -0.747805f, -0.747853f, -0.747901f, -0.74795f, -0.747998f, -0.748046f, -0.748094f, -0.748142f, -0.748191f, -0.748239f, -0.748287f, -0.748335f, -0.748383f, -0.748431f, -0.748479f,
+-0.748528f, -0.748576f, -0.748624f, -0.748672f, -0.74872f, -0.748768f, -0.748816f, -0.748864f, -0.748912f, -0.74896f, -0.749008f, -0.749056f, -0.749104f, -0.749152f, -0.7492f, -0.749248f, -0.749296f, -0.749344f, -0.749392f, -0.74944f,
+-0.749488f, -0.749536f, -0.749584f, -0.749631f, -0.749679f, -0.749727f, -0.749775f, -0.749823f, -0.749871f, -0.749918f, -0.749966f, -0.750014f, -0.750062f, -0.75011f, -0.750157f, -0.750205f, -0.750253f, -0.750301f, -0.750349f, -0.750396f,
+-0.750444f, -0.750492f, -0.750539f, -0.750587f, -0.750635f, -0.750682f, -0.75073f, -0.750778f, -0.750825f, -0.750873f, -0.750921f, -0.750968f, -0.751016f, -0.751063f, -0.751111f, -0.751159f, -0.751206f, -0.751254f, -0.751301f, -0.751349f,
+-0.751396f, -0.751444f, -0.751491f, -0.751539f, -0.751586f, -0.751634f, -0.751681f, -0.751729f, -0.751776f, -0.751824f, -0.751871f, -0.751918f, -0.751966f, -0.752013f, -0.752061f, -0.752108f, -0.752155f, -0.752203f, -0.75225f, -0.752297f,
+-0.752345f, -0.752392f, -0.752439f, -0.752487f, -0.752534f, -0.752581f, -0.752629f, -0.752676f, -0.752723f, -0.75277f, -0.752818f, -0.752865f, -0.752912f, -0.752959f, -0.753006f, -0.753054f, -0.753101f, -0.753148f, -0.753195f, -0.753242f,
+-0.753289f, -0.753336f, -0.753384f, -0.753431f, -0.753478f, -0.753525f, -0.753572f, -0.753619f, -0.753666f, -0.753713f, -0.75376f, -0.753807f, -0.753854f, -0.753901f, -0.753948f, -0.753995f, -0.754042f, -0.754089f, -0.754136f, -0.754183f,
+-0.75423f, -0.754277f, -0.754324f, -0.754371f, -0.754418f, -0.754465f, -0.754511f, -0.754558f, -0.754605f, -0.754652f, -0.754699f, -0.754746f, -0.754792f, -0.754839f, -0.754886f, -0.754933f, -0.75498f, -0.755026f, -0.755073f, -0.75512f,
+-0.755167f, -0.755213f, -0.75526f, -0.755307f, -0.755354f, -0.7554f, -0.755447f, -0.755494f, -0.75554f, -0.755587f, -0.755634f, -0.75568f, -0.755727f, -0.755773f, -0.75582f, -0.755867f, -0.755913f, -0.75596f, -0.756006f, -0.756053f,
+-0.7561f, -0.756146f, -0.756193f, -0.756239f, -0.756286f, -0.756332f, -0.756379f, -0.756425f, -0.756472f, -0.756518f, -0.756564f, -0.756611f, -0.756657f, -0.756704f, -0.75675f, -0.756797f, -0.756843f, -0.756889f, -0.756936f, -0.756982f,
+-0.757028f, -0.757075f, -0.757121f, -0.757167f, -0.757214f, -0.75726f, -0.757306f, -0.757353f, -0.757399f, -0.757445f, -0.757491f, -0.757538f, -0.757584f, -0.75763f, -0.757676f, -0.757722f, -0.757769f, -0.757815f, -0.757861f, -0.757907f,
+-0.757953f, -0.757999f, -0.758046f, -0.758092f, -0.758138f, -0.758184f, -0.75823f, -0.758276f, -0.758322f, -0.758368f, -0.758414f, -0.75846f, -0.758506f, -0.758552f, -0.758598f, -0.758644f, -0.75869f, -0.758736f, -0.758782f, -0.758828f,
+-0.758874f, -0.75892f, -0.758966f, -0.759012f, -0.759058f, -0.759104f, -0.75915f, -0.759196f, -0.759242f, -0.759288f, -0.759333f, -0.759379f, -0.759425f, -0.759471f, -0.759517f, -0.759563f, -0.759608f, -0.759654f, -0.7597f, -0.759746f,
+-0.759791f, -0.759837f, -0.759883f, -0.759929f, -0.759974f, -0.76002f, -0.760066f, -0.760111f, -0.760157f, -0.760203f, -0.760248f, -0.760294f, -0.76034f, -0.760385f, -0.760431f, -0.760477f, -0.760522f, -0.760568f, -0.760613f, -0.760659f,
+-0.760705f, -0.76075f, -0.760796f, -0.760841f, -0.760887f, -0.760932f, -0.760978f, -0.761023f, -0.761069f, -0.761114f, -0.76116f, -0.761205f, -0.76125f, -0.761296f, -0.761341f, -0.761387f, -0.761432f, -0.761478f, -0.761523f, -0.761568f,
+-0.761614f, -0.761659f, -0.761704f, -0.76175f, -0.761795f, -0.76184f, -0.761886f, -0.761931f, -0.761976f, -0.762021f, -0.762067f, -0.762112f, -0.762157f, -0.762202f, -0.762248f, -0.762293f, -0.762338f, -0.762383f, -0.762429f, -0.762474f,
+-0.762519f, -0.762564f, -0.762609f, -0.762654f, -0.762699f, -0.762745f, -0.76279f, -0.762835f, -0.76288f, -0.762925f, -0.76297f, -0.763015f, -0.76306f, -0.763105f, -0.76315f, -0.763195f, -0.76324f, -0.763285f, -0.76333f, -0.763375f,
+-0.76342f, -0.763465f, -0.76351f, -0.763555f, -0.7636f, -0.763645f, -0.76369f, -0.763735f, -0.763779f, -0.763824f, -0.763869f, -0.763914f, -0.763959f, -0.764004f, -0.764049f, -0.764093f, -0.764138f, -0.764183f, -0.764228f, -0.764273f,
+-0.764317f, -0.764362f, -0.764407f, -0.764452f, -0.764496f, -0.764541f, -0.764586f, -0.76463f, -0.764675f, -0.76472f, -0.764764f, -0.764809f, -0.764854f, -0.764898f, -0.764943f, -0.764988f, -0.765032f, -0.765077f, -0.765121f, -0.765166f,
+-0.765211f, -0.765255f, -0.7653f, -0.765344f, -0.765389f, -0.765433f, -0.765478f, -0.765522f, -0.765567f, -0.765611f, -0.765656f, -0.7657f, -0.765745f, -0.765789f, -0.765833f, -0.765878f, -0.765922f, -0.765967f, -0.766011f, -0.766055f,
+-0.7661f, -0.766144f, -0.766189f, -0.766233f, -0.766277f, -0.766321f, -0.766366f, -0.76641f, -0.766454f, -0.766499f, -0.766543f, -0.766587f, -0.766631f, -0.766676f, -0.76672f, -0.766764f, -0.766808f, -0.766853f, -0.766897f, -0.766941f,
+-0.766985f, -0.767029f, -0.767073f, -0.767118f, -0.767162f, -0.767206f, -0.76725f, -0.767294f, -0.767338f, -0.767382f, -0.767426f, -0.76747f, -0.767514f, -0.767558f, -0.767602f, -0.767646f, -0.76769f, -0.767734f, -0.767778f, -0.767822f,
+-0.767866f, -0.76791f, -0.767954f, -0.767998f, -0.768042f, -0.768086f, -0.76813f, -0.768174f, -0.768218f, -0.768262f, -0.768305f, -0.768349f, -0.768393f, -0.768437f, -0.768481f, -0.768525f, -0.768568f, -0.768612f, -0.768656f, -0.7687f,
+-0.768744f, -0.768787f, -0.768831f, -0.768875f, -0.768919f, -0.768962f, -0.769006f, -0.76905f, -0.769093f, -0.769137f, -0.769181f, -0.769224f, -0.769268f, -0.769312f, -0.769355f, -0.769399f, -0.769443f, -0.769486f, -0.76953f, -0.769573f,
+-0.769617f, -0.76966f, -0.769704f, -0.769747f, -0.769791f, -0.769835f, -0.769878f, -0.769922f, -0.769965f, -0.770008f, -0.770052f, -0.770095f, -0.770139f, -0.770182f, -0.770226f, -0.770269f, -0.770313f, -0.770356f, -0.770399f, -0.770443f,
+-0.770486f, -0.770529f, -0.770573f, -0.770616f, -0.770659f, -0.770703f, -0.770746f, -0.770789f, -0.770833f, -0.770876f, -0.770919f, -0.770962f, -0.771006f, -0.771049f, -0.771092f, -0.771135f, -0.771179f, -0.771222f, -0.771265f, -0.771308f,
+-0.771351f, -0.771394f, -0.771438f, -0.771481f, -0.771524f, -0.771567f, -0.77161f, -0.771653f, -0.771696f, -0.771739f, -0.771782f, -0.771825f, -0.771868f, -0.771911f, -0.771955f, -0.771998f, -0.772041f, -0.772084f, -0.772126f, -0.772169f,
+-0.772212f, -0.772255f, -0.772298f, -0.772341f, -0.772384f, -0.772427f, -0.77247f, -0.772513f, -0.772556f, -0.772599f, -0.772642f, -0.772684f, -0.772727f, -0.77277f, -0.772813f, -0.772856f, -0.772898f, -0.772941f, -0.772984f, -0.773027f,
+-0.77307f, -0.773112f, -0.773155f, -0.773198f, -0.773241f, -0.773283f, -0.773326f, -0.773369f, -0.773411f, -0.773454f, -0.773497f, -0.773539f, -0.773582f, -0.773625f, -0.773667f, -0.77371f, -0.773752f, -0.773795f, -0.773838f, -0.77388f,
+-0.773923f, -0.773965f, -0.774008f, -0.77405f, -0.774093f, -0.774135f, -0.774178f, -0.77422f, -0.774263f, -0.774305f, -0.774348f, -0.77439f, -0.774433f, -0.774475f, -0.774517f, -0.77456f, -0.774602f, -0.774645f, -0.774687f, -0.774729f,
+-0.774772f, -0.774814f, -0.774856f, -0.774899f, -0.774941f, -0.774983f, -0.775026f, -0.775068f, -0.77511f, -0.775152f, -0.775195f, -0.775237f, -0.775279f, -0.775321f, -0.775364f, -0.775406f, -0.775448f, -0.77549f, -0.775532f, -0.775575f,
+-0.775617f, -0.775659f, -0.775701f, -0.775743f, -0.775785f, -0.775827f, -0.775869f, -0.775911f, -0.775954f, -0.775996f, -0.776038f, -0.77608f, -0.776122f, -0.776164f, -0.776206f, -0.776248f, -0.77629f, -0.776332f, -0.776374f, -0.776416f,
+-0.776458f, -0.7765f, -0.776542f, -0.776583f, -0.776625f, -0.776667f, -0.776709f, -0.776751f, -0.776793f, -0.776835f, -0.776877f, -0.776918f, -0.77696f, -0.777002f, -0.777044f, -0.777086f, -0.777127f, -0.777169f, -0.777211f, -0.777253f,
+-0.777294f, -0.777336f, -0.777378f, -0.77742f, -0.777461f, -0.777503f, -0.777545f, -0.777586f, -0.777628f, -0.77767f, -0.777711f, -0.777753f, -0.777795f, -0.777836f, -0.777878f, -0.777919f, -0.777961f, -0.778003f, -0.778044f, -0.778086f,
+-0.778127f, -0.778169f, -0.77821f, -0.778252f, -0.778293f, -0.778335f, -0.778376f, -0.778418f, -0.778459f, -0.778501f, -0.778542f, -0.778584f, -0.778625f, -0.778666f, -0.778708f, -0.778749f, -0.778791f, -0.778832f, -0.778873f, -0.778915f,
+-0.778956f, -0.778997f, -0.779039f, -0.77908f, -0.779121f, -0.779163f, -0.779204f, -0.779245f, -0.779286f, -0.779328f, -0.779369f, -0.77941f, -0.779451f, -0.779493f, -0.779534f, -0.779575f, -0.779616f, -0.779657f, -0.779698f, -0.77974f,
+-0.779781f, -0.779822f, -0.779863f, -0.779904f, -0.779945f, -0.779986f, -0.780027f, -0.780068f, -0.780109f, -0.78015f, -0.780191f, -0.780232f, -0.780273f, -0.780314f, -0.780355f, -0.780396f, -0.780437f, -0.780478f, -0.780519f, -0.78056f,
+-0.780601f, -0.780642f, -0.780683f, -0.780724f, -0.780765f, -0.780806f, -0.780847f, -0.780887f, -0.780928f, -0.780969f, -0.78101f, -0.781051f, -0.781092f, -0.781132f, -0.781173f, -0.781214f, -0.781255f, -0.781295f, -0.781336f, -0.781377f,
+-0.781418f, -0.781458f, -0.781499f, -0.78154f, -0.78158f, -0.781621f, -0.781662f, -0.781702f, -0.781743f, -0.781784f, -0.781824f, -0.781865f, -0.781906f, -0.781946f, -0.781987f, -0.782027f, -0.782068f, -0.782108f, -0.782149f, -0.78219f,
+-0.78223f, -0.782271f, -0.782311f, -0.782352f, -0.782392f, -0.782432f, -0.782473f, -0.782513f, -0.782554f, -0.782594f, -0.782635f, -0.782675f, -0.782715f, -0.782756f, -0.782796f, -0.782837f, -0.782877f, -0.782917f, -0.782958f, -0.782998f,
+-0.783038f, -0.783079f, -0.783119f, -0.783159f, -0.783199f, -0.78324f, -0.78328f, -0.78332f, -0.78336f, -0.783401f, -0.783441f, -0.783481f, -0.783521f, -0.783561f, -0.783602f, -0.783642f, -0.783682f, -0.783722f, -0.783762f, -0.783802f,
+-0.783842f, -0.783883f, -0.783923f, -0.783963f, -0.784003f, -0.784043f, -0.784083f, -0.784123f, -0.784163f, -0.784203f, -0.784243f, -0.784283f, -0.784323f, -0.784363f, -0.784403f, -0.784443f, -0.784483f, -0.784523f, -0.784563f, -0.784603f,
+-0.784642f, -0.784682f, -0.784722f, -0.784762f, -0.784802f, -0.784842f, -0.784882f, -0.784922f, -0.784961f, -0.785001f, -0.785041f, -0.785081f, -0.785121f, -0.78516f, -0.7852f, -0.78524f, -0.78528f, -0.785319f, -0.785359f, -0.785399f,
+-0.785438f, -0.785478f, -0.785518f, -0.785557f, -0.785597f, -0.785637f, -0.785676f, -0.785716f, -0.785756f, -0.785795f, -0.785835f, -0.785874f, -0.785914f, -0.785954f, -0.785993f, -0.786033f, -0.786072f, -0.786112f, -0.786151f, -0.786191f,
+-0.78623f, -0.78627f, -0.786309f, -0.786349f, -0.786388f, -0.786427f, -0.786467f, -0.786506f, -0.786546f, -0.786585f, -0.786625f, -0.786664f, -0.786703f, -0.786743f, -0.786782f, -0.786821f, -0.786861f, -0.7869f, -0.786939f, -0.786979f,
+-0.787018f, -0.787057f, -0.787096f, -0.787136f, -0.787175f, -0.787214f, -0.787253f, -0.787293f, -0.787332f, -0.787371f, -0.78741f, -0.787449f, -0.787488f, -0.787528f, -0.787567f, -0.787606f, -0.787645f, -0.787684f, -0.787723f, -0.787762f,
+-0.787801f, -0.78784f, -0.78788f, -0.787919f, -0.787958f, -0.787997f, -0.788036f, -0.788075f, -0.788114f, -0.788153f, -0.788192f, -0.788231f, -0.78827f, -0.788308f, -0.788347f, -0.788386f, -0.788425f, -0.788464f, -0.788503f, -0.788542f,
+-0.788581f, -0.78862f, -0.788658f, -0.788697f, -0.788736f, -0.788775f, -0.788814f, -0.788853f, -0.788891f, -0.78893f, -0.788969f, -0.789008f, -0.789046f, -0.789085f, -0.789124f, -0.789163f, -0.789201f, -0.78924f, -0.789279f, -0.789317f,
+-0.789356f, -0.789395f, -0.789433f, -0.789472f, -0.789511f, -0.789549f, -0.789588f, -0.789626f, -0.789665f, -0.789704f, -0.789742f, -0.789781f, -0.789819f, -0.789858f, -0.789896f, -0.789935f, -0.789973f, -0.790012f, -0.79005f, -0.790089f,
+-0.790127f, -0.790166f, -0.790204f, -0.790242f, -0.790281f, -0.790319f, -0.790358f, -0.790396f, -0.790434f, -0.790473f, -0.790511f, -0.790549f, -0.790588f, -0.790626f, -0.790664f, -0.790703f, -0.790741f, -0.790779f, -0.790818f, -0.790856f,
+-0.790894f, -0.790932f, -0.79097f, -0.791009f, -0.791047f, -0.791085f, -0.791123f, -0.791161f, -0.7912f, -0.791238f, -0.791276f, -0.791314f, -0.791352f, -0.79139f, -0.791428f, -0.791466f, -0.791505f, -0.791543f, -0.791581f, -0.791619f,
+-0.791657f, -0.791695f, -0.791733f, -0.791771f, -0.791809f, -0.791847f, -0.791885f, -0.791923f, -0.791961f, -0.791999f, -0.792037f, -0.792075f, -0.792112f, -0.79215f, -0.792188f, -0.792226f, -0.792264f, -0.792302f, -0.79234f, -0.792378f,
+-0.792415f, -0.792453f, -0.792491f, -0.792529f, -0.792567f, -0.792604f, -0.792642f, -0.79268f, -0.792718f, -0.792755f, -0.792793f, -0.792831f, -0.792869f, -0.792906f, -0.792944f, -0.792982f, -0.793019f, -0.793057f, -0.793095f, -0.793132f,
+-0.79317f, -0.793207f, -0.793245f, -0.793283f, -0.79332f, -0.793358f, -0.793395f, -0.793433f, -0.79347f, -0.793508f, -0.793545f, -0.793583f, -0.79362f, -0.793658f, -0.793695f, -0.793733f, -0.79377f, -0.793808f, -0.793845f, -0.793883f,
+-0.79392f, -0.793957f, -0.793995f, -0.794032f, -0.79407f, -0.794107f, -0.794144f, -0.794182f, -0.794219f, -0.794256f, -0.794294f, -0.794331f, -0.794368f, -0.794406f, -0.794443f, -0.79448f, -0.794517f, -0.794555f, -0.794592f, -0.794629f,
+-0.794666f, -0.794703f, -0.794741f, -0.794778f, -0.794815f, -0.794852f, -0.794889f, -0.794926f, -0.794963f, -0.795001f, -0.795038f, -0.795075f, -0.795112f, -0.795149f, -0.795186f, -0.795223f, -0.79526f, -0.795297f, -0.795334f, -0.795371f,
+-0.795408f, -0.795445f, -0.795482f, -0.795519f, -0.795556f, -0.795593f, -0.79563f, -0.795667f, -0.795704f, -0.795741f, -0.795777f, -0.795814f, -0.795851f, -0.795888f, -0.795925f, -0.795962f, -0.795999f, -0.796035f, -0.796072f, -0.796109f,
+-0.796146f, -0.796183f, -0.796219f, -0.796256f, -0.796293f, -0.79633f, -0.796366f, -0.796403f, -0.79644f, -0.796476f, -0.796513f, -0.79655f, -0.796586f, -0.796623f, -0.79666f, -0.796696f, -0.796733f, -0.796769f, -0.796806f, -0.796843f,
+-0.796879f, -0.796916f, -0.796952f, -0.796989f, -0.797025f, -0.797062f, -0.797098f, -0.797135f, -0.797171f, -0.797208f, -0.797244f, -0.797281f, -0.797317f, -0.797354f, -0.79739f, -0.797427f, -0.797463f, -0.797499f, -0.797536f, -0.797572f,
+-0.797609f, -0.797645f, -0.797681f, -0.797718f, -0.797754f, -0.79779f, -0.797827f, -0.797863f, -0.797899f, -0.797935f, -0.797972f, -0.798008f, -0.798044f, -0.79808f, -0.798117f, -0.798153f, -0.798189f, -0.798225f, -0.798261f, -0.798297f,
+-0.798334f, -0.79837f, -0.798406f, -0.798442f, -0.798478f, -0.798514f, -0.79855f, -0.798586f, -0.798622f, -0.798659f, -0.798695f, -0.798731f, -0.798767f, -0.798803f, -0.798839f, -0.798875f, -0.798911f, -0.798947f, -0.798983f, -0.799019f,
+-0.799055f, -0.79909f, -0.799126f, -0.799162f, -0.799198f, -0.799234f, -0.79927f, -0.799306f, -0.799342f, -0.799378f, -0.799413f, -0.799449f, -0.799485f, -0.799521f, -0.799557f, -0.799592f, -0.799628f, -0.799664f, -0.7997f, -0.799735f,
+-0.799771f, -0.799807f, -0.799843f, -0.799878f, -0.799914f, -0.79995f, -0.799985f, -0.800021f, -0.800057f, -0.800092f, -0.800128f, -0.800164f, -0.800199f, -0.800235f, -0.80027f, -0.800306f, -0.800341f, -0.800377f, -0.800413f, -0.800448f,
+-0.800484f, -0.800519f, -0.800555f, -0.80059f, -0.800626f, -0.800661f, -0.800697f, -0.800732f, -0.800767f, -0.800803f, -0.800838f, -0.800874f, -0.800909f, -0.800944f, -0.80098f, -0.801015f, -0.801051f, -0.801086f, -0.801121f, -0.801157f,
+-0.801192f, -0.801227f, -0.801262f, -0.801298f, -0.801333f, -0.801368f, -0.801403f, -0.801439f, -0.801474f, -0.801509f, -0.801544f, -0.80158f, -0.801615f, -0.80165f, -0.801685f, -0.80172f, -0.801755f, -0.801791f, -0.801826f, -0.801861f,
+-0.801896f, -0.801931f, -0.801966f, -0.802001f, -0.802036f, -0.802071f, -0.802106f, -0.802141f, -0.802176f, -0.802211f, -0.802246f, -0.802281f, -0.802316f, -0.802351f, -0.802386f, -0.802421f, -0.802456f, -0.802491f, -0.802526f, -0.802561f,
+-0.802596f, -0.80263f, -0.802665f, -0.8027f, -0.802735f, -0.80277f, -0.802805f, -0.802839f, -0.802874f, -0.802909f, -0.802944f, -0.802979f, -0.803013f, -0.803048f, -0.803083f, -0.803118f, -0.803152f, -0.803187f, -0.803222f, -0.803256f,
+-0.803291f, -0.803326f, -0.80336f, -0.803395f, -0.80343f, -0.803464f, -0.803499f, -0.803534f, -0.803568f, -0.803603f, -0.803637f, -0.803672f, -0.803706f, -0.803741f, -0.803775f, -0.80381f, -0.803844f, -0.803879f, -0.803913f, -0.803948f,
+-0.803982f, -0.804017f, -0.804051f, -0.804086f, -0.80412f, -0.804155f, -0.804189f, -0.804223f, -0.804258f, -0.804292f, -0.804326f, -0.804361f, -0.804395f, -0.804429f, -0.804464f, -0.804498f, -0.804532f, -0.804567f, -0.804601f, -0.804635f,
+-0.804669f, -0.804704f, -0.804738f, -0.804772f, -0.804806f, -0.80484f, -0.804875f, -0.804909f, -0.804943f, -0.804977f, -0.805011f, -0.805045f, -0.80508f, -0.805114f, -0.805148f, -0.805182f, -0.805216f, -0.80525f, -0.805284f, -0.805318f,
+-0.805352f, -0.805386f, -0.80542f, -0.805454f, -0.805488f, -0.805522f, -0.805556f, -0.80559f, -0.805624f, -0.805658f, -0.805692f, -0.805726f, -0.80576f, -0.805794f, -0.805828f, -0.805861f, -0.805895f, -0.805929f, -0.805963f, -0.805997f,
+-0.806031f, -0.806064f, -0.806098f, -0.806132f, -0.806166f, -0.8062f, -0.806233f, -0.806267f, -0.806301f, -0.806335f, -0.806368f, -0.806402f, -0.806436f, -0.806469f, -0.806503f, -0.806537f, -0.80657f, -0.806604f, -0.806638f, -0.806671f,
+-0.806705f, -0.806738f, -0.806772f, -0.806806f, -0.806839f, -0.806873f, -0.806906f, -0.80694f, -0.806973f, -0.807007f, -0.80704f, -0.807074f, -0.807107f, -0.807141f, -0.807174f, -0.807208f, -0.807241f, -0.807275f, -0.807308f, -0.807341f,
+-0.807375f, -0.807408f, -0.807442f, -0.807475f, -0.807508f, -0.807542f, -0.807575f, -0.807608f, -0.807642f, -0.807675f, -0.807708f, -0.807742f, -0.807775f, -0.807808f, -0.807841f, -0.807875f, -0.807908f, -0.807941f, -0.807974f, -0.808007f,
+-0.808041f, -0.808074f, -0.808107f, -0.80814f, -0.808173f, -0.808206f, -0.808239f, -0.808273f, -0.808306f, -0.808339f, -0.808372f, -0.808405f, -0.808438f, -0.808471f, -0.808504f, -0.808537f, -0.80857f, -0.808603f, -0.808636f, -0.808669f,
+-0.808702f, -0.808735f, -0.808768f, -0.808801f, -0.808834f, -0.808867f, -0.8089f, -0.808932f, -0.808965f, -0.808998f, -0.809031f, -0.809064f, -0.809097f, -0.80913f, -0.809162f, -0.809195f, -0.809228f, -0.809261f, -0.809294f, -0.809326f,
+-0.809359f, -0.809392f, -0.809425f, -0.809457f, -0.80949f, -0.809523f, -0.809555f, -0.809588f, -0.809621f, -0.809653f, -0.809686f, -0.809719f, -0.809751f, -0.809784f, -0.809817f, -0.809849f, -0.809882f, -0.809914f, -0.809947f, -0.809979f,
+-0.810012f, -0.810045f, -0.810077f, -0.81011f, -0.810142f, -0.810175f, -0.810207f, -0.810239f, -0.810272f, -0.810304f, -0.810337f, -0.810369f, -0.810402f, -0.810434f, -0.810466f, -0.810499f, -0.810531f, -0.810564f, -0.810596f, -0.810628f,
+-0.810661f, -0.810693f, -0.810725f, -0.810757f, -0.81079f, -0.810822f, -0.810854f, -0.810887f, -0.810919f, -0.810951f, -0.810983f, -0.811015f, -0.811048f, -0.81108f, -0.811112f, -0.811144f, -0.811176f, -0.811208f, -0.811241f, -0.811273f,
+-0.811305f, -0.811337f, -0.811369f, -0.811401f, -0.811433f, -0.811465f, -0.811497f, -0.811529f, -0.811561f, -0.811593f, -0.811625f, -0.811657f, -0.811689f, -0.811721f, -0.811753f, -0.811785f, -0.811817f, -0.811849f, -0.811881f, -0.811913f,
+-0.811945f, -0.811977f, -0.812009f, -0.81204f, -0.812072f, -0.812104f, -0.812136f, -0.812168f, -0.8122f, -0.812231f, -0.812263f, -0.812295f, -0.812327f, -0.812358f, -0.81239f, -0.812422f, -0.812454f, -0.812485f, -0.812517f, -0.812549f,
+-0.81258f, -0.812612f, -0.812644f, -0.812675f, -0.812707f, -0.812739f, -0.81277f, -0.812802f, -0.812834f, -0.812865f, -0.812897f, -0.812928f, -0.81296f, -0.812991f, -0.813023f, -0.813054f, -0.813086f, -0.813117f, -0.813149f, -0.81318f,
+-0.813212f, -0.813243f, -0.813275f, -0.813306f, -0.813338f, -0.813369f, -0.8134f, -0.813432f, -0.813463f, -0.813495f, -0.813526f, -0.813557f, -0.813589f, -0.81362f, -0.813651f, -0.813683f, -0.813714f, -0.813745f, -0.813776f, -0.813808f,
+-0.813839f, -0.81387f, -0.813901f, -0.813933f, -0.813964f, -0.813995f, -0.814026f, -0.814057f, -0.814089f, -0.81412f, -0.814151f, -0.814182f, -0.814213f, -0.814244f, -0.814275f, -0.814306f, -0.814337f, -0.814368f, -0.8144f, -0.814431f,
+-0.814462f, -0.814493f, -0.814524f, -0.814555f, -0.814586f, -0.814617f, -0.814648f, -0.814679f, -0.81471f, -0.81474f, -0.814771f, -0.814802f, -0.814833f, -0.814864f, -0.814895f, -0.814926f, -0.814957f, -0.814988f, -0.815018f, -0.815049f,
+-0.81508f, -0.815111f, -0.815142f, -0.815172f, -0.815203f, -0.815234f, -0.815265f, -0.815295f, -0.815326f, -0.815357f, -0.815388f, -0.815418f, -0.815449f, -0.81548f, -0.81551f, -0.815541f, -0.815572f, -0.815602f, -0.815633f, -0.815664f,
+-0.815694f, -0.815725f, -0.815755f, -0.815786f, -0.815816f, -0.815847f, -0.815878f, -0.815908f, -0.815939f, -0.815969f, -0.816f, -0.81603f, -0.816061f, -0.816091f, -0.816121f, -0.816152f, -0.816182f, -0.816213f, -0.816243f, -0.816274f,
+-0.816304f, -0.816334f, -0.816365f, -0.816395f, -0.816425f, -0.816456f, -0.816486f, -0.816516f, -0.816547f, -0.816577f, -0.816607f, -0.816637f, -0.816668f, -0.816698f, -0.816728f, -0.816758f, -0.816789f, -0.816819f, -0.816849f, -0.816879f,
+-0.816909f, -0.81694f, -0.81697f, -0.817f, -0.81703f, -0.81706f, -0.81709f, -0.81712f, -0.81715f, -0.81718f, -0.81721f, -0.81724f, -0.817271f, -0.817301f, -0.817331f, -0.817361f, -0.817391f, -0.817421f, -0.817451f, -0.81748f,
+-0.81751f, -0.81754f, -0.81757f, -0.8176f, -0.81763f, -0.81766f, -0.81769f, -0.81772f, -0.81775f, -0.81778f, -0.817809f, -0.817839f, -0.817869f, -0.817899f, -0.817929f, -0.817958f, -0.817988f, -0.818018f, -0.818048f, -0.818077f,
+-0.818107f, -0.818137f, -0.818167f, -0.818196f, -0.818226f, -0.818256f, -0.818285f, -0.818315f, -0.818345f, -0.818374f, -0.818404f, -0.818434f, -0.818463f, -0.818493f, -0.818522f, -0.818552f, -0.818581f, -0.818611f, -0.818641f, -0.81867f,
+-0.8187f, -0.818729f, -0.818759f, -0.818788f, -0.818818f, -0.818847f, -0.818876f, -0.818906f, -0.818935f, -0.818965f, -0.818994f, -0.819024f, -0.819053f, -0.819082f, -0.819112f, -0.819141f, -0.81917f, -0.8192f, -0.819229f, -0.819258f,
+-0.819288f, -0.819317f, -0.819346f, -0.819376f, -0.819405f, -0.819434f, -0.819463f, -0.819492f, -0.819522f, -0.819551f, -0.81958f, -0.819609f, -0.819638f, -0.819668f, -0.819697f, -0.819726f, -0.819755f, -0.819784f, -0.819813f, -0.819842f,
+-0.819871f, -0.8199f, -0.81993f, -0.819959f, -0.819988f, -0.820017f, -0.820046f, -0.820075f, -0.820104f, -0.820133f, -0.820162f, -0.820191f, -0.82022f, -0.820248f, -0.820277f, -0.820306f, -0.820335f, -0.820364f, -0.820393f, -0.820422f,
+-0.820451f, -0.82048f, -0.820508f, -0.820537f, -0.820566f, -0.820595f, -0.820624f, -0.820652f, -0.820681f, -0.82071f, -0.820739f, -0.820768f, -0.820796f, -0.820825f, -0.820854f, -0.820882f, -0.820911f, -0.82094f, -0.820968f, -0.820997f,
+-0.821026f, -0.821054f, -0.821083f, -0.821112f, -0.82114f, -0.821169f, -0.821197f, -0.821226f, -0.821255f, -0.821283f, -0.821312f, -0.82134f, -0.821369f, -0.821397f, -0.821426f, -0.821454f, -0.821483f, -0.821511f, -0.82154f, -0.821568f,
+-0.821596f, -0.821625f, -0.821653f, -0.821682f, -0.82171f, -0.821738f, -0.821767f, -0.821795f, -0.821823f, -0.821852f, -0.82188f, -0.821908f, -0.821937f, -0.821965f, -0.821993f, -0.822021f, -0.82205f, -0.822078f, -0.822106f, -0.822134f,
+-0.822163f, -0.822191f, -0.822219f, -0.822247f, -0.822275f, -0.822304f, -0.822332f, -0.82236f, -0.822388f, -0.822416f, -0.822444f, -0.822472f, -0.8225f, -0.822528f, -0.822556f, -0.822584f, -0.822613f, -0.822641f, -0.822669f, -0.822697f,
+-0.822725f, -0.822753f, -0.82278f, -0.822808f, -0.822836f, -0.822864f, -0.822892f, -0.82292f, -0.822948f, -0.822976f, -0.823004f, -0.823032f, -0.82306f, -0.823087f, -0.823115f, -0.823143f, -0.823171f, -0.823199f, -0.823226f, -0.823254f,
+-0.823282f, -0.82331f, -0.823338f, -0.823365f, -0.823393f, -0.823421f, -0.823448f, -0.823476f, -0.823504f, -0.823531f, -0.823559f, -0.823587f, -0.823614f, -0.823642f, -0.82367f, -0.823697f, -0.823725f, -0.823752f, -0.82378f, -0.823808f,
+-0.823835f, -0.823863f, -0.82389f, -0.823918f, -0.823945f, -0.823973f, -0.824f, -0.824028f, -0.824055f, -0.824083f, -0.82411f, -0.824138f, -0.824165f, -0.824192f, -0.82422f, -0.824247f, -0.824275f, -0.824302f, -0.824329f, -0.824357f,
+-0.824384f, -0.824411f, -0.824439f, -0.824466f, -0.824493f, -0.82452f, -0.824548f, -0.824575f, -0.824602f, -0.824629f, -0.824657f, -0.824684f, -0.824711f, -0.824738f, -0.824765f, -0.824793f, -0.82482f, -0.824847f, -0.824874f, -0.824901f,
+-0.824928f, -0.824955f, -0.824982f, -0.82501f, -0.825037f, -0.825064f, -0.825091f, -0.825118f, -0.825145f, -0.825172f, -0.825199f, -0.825226f, -0.825253f, -0.82528f, -0.825307f, -0.825334f, -0.825361f, -0.825388f, -0.825414f, -0.825441f,
+-0.825468f, -0.825495f, -0.825522f, -0.825549f, -0.825576f, -0.825603f, -0.825629f, -0.825656f, -0.825683f, -0.82571f, -0.825737f, -0.825763f, -0.82579f, -0.825817f, -0.825844f, -0.82587f, -0.825897f, -0.825924f, -0.82595f, -0.825977f,
+-0.826004f, -0.826031f, -0.826057f, -0.826084f, -0.82611f, -0.826137f, -0.826164f, -0.82619f, -0.826217f, -0.826243f, -0.82627f, -0.826297f, -0.826323f, -0.82635f, -0.826376f, -0.826403f, -0.826429f, -0.826456f, -0.826482f, -0.826509f,
+-0.826535f, -0.826561f, -0.826588f, -0.826614f, -0.826641f, -0.826667f, -0.826694f, -0.82672f, -0.826746f, -0.826773f, -0.826799f, -0.826825f, -0.826852f, -0.826878f, -0.826904f, -0.826931f, -0.826957f, -0.826983f, -0.827009f, -0.827036f,
+-0.827062f, -0.827088f, -0.827114f, -0.82714f, -0.827167f, -0.827193f, -0.827219f, -0.827245f, -0.827271f, -0.827297f, -0.827324f, -0.82735f, -0.827376f, -0.827402f, -0.827428f, -0.827454f, -0.82748f, -0.827506f, -0.827532f, -0.827558f,
+-0.827584f, -0.82761f, -0.827636f, -0.827662f, -0.827688f, -0.827714f, -0.82774f, -0.827766f, -0.827792f, -0.827818f, -0.827844f, -0.82787f, -0.827896f, -0.827921f, -0.827947f, -0.827973f, -0.827999f, -0.828025f, -0.828051f, -0.828076f,
+-0.828102f, -0.828128f, -0.828154f, -0.828179f, -0.828205f, -0.828231f, -0.828257f, -0.828282f, -0.828308f, -0.828334f, -0.828359f, -0.828385f, -0.828411f, -0.828436f, -0.828462f, -0.828488f, -0.828513f, -0.828539f, -0.828565f, -0.82859f,
+-0.828616f, -0.828641f, -0.828667f, -0.828692f, -0.828718f, -0.828743f, -0.828769f, -0.828794f, -0.82882f, -0.828845f, -0.828871f, -0.828896f, -0.828922f, -0.828947f, -0.828973f, -0.828998f, -0.829023f, -0.829049f, -0.829074f, -0.8291f,
+-0.829125f, -0.82915f, -0.829176f, -0.829201f, -0.829226f, -0.829251f, -0.829277f, -0.829302f, -0.829327f, -0.829353f, -0.829378f, -0.829403f, -0.829428f, -0.829453f, -0.829479f, -0.829504f, -0.829529f, -0.829554f, -0.829579f, -0.829604f,
+-0.82963f, -0.829655f, -0.82968f, -0.829705f, -0.82973f, -0.829755f, -0.82978f, -0.829805f, -0.82983f, -0.829855f, -0.82988f, -0.829905f, -0.82993f, -0.829955f, -0.82998f, -0.830005f, -0.83003f, -0.830055f, -0.83008f, -0.830105f,
+-0.83013f, -0.830155f, -0.83018f, -0.830205f, -0.830229f, -0.830254f, -0.830279f, -0.830304f, -0.830329f, -0.830354f, -0.830378f, -0.830403f, -0.830428f, -0.830453f, -0.830477f, -0.830502f, -0.830527f, -0.830552f, -0.830576f, -0.830601f,
+-0.830626f, -0.83065f, -0.830675f, -0.8307f, -0.830724f, -0.830749f, -0.830774f, -0.830798f, -0.830823f, -0.830847f, -0.830872f, -0.830897f, -0.830921f, -0.830946f, -0.83097f, -0.830995f, -0.831019f, -0.831044f, -0.831068f, -0.831093f,
+-0.831117f, -0.831142f, -0.831166f, -0.831191f, -0.831215f, -0.831239f, -0.831264f, -0.831288f, -0.831313f, -0.831337f, -0.831361f, -0.831386f, -0.83141f, -0.831434f, -0.831459f, -0.831483f, -0.831507f, -0.831531f, -0.831556f, -0.83158f,
+-0.831604f, -0.831628f, -0.831653f, -0.831677f, -0.831701f, -0.831725f, -0.831749f, -0.831774f, -0.831798f, -0.831822f, -0.831846f, -0.83187f, -0.831894f, -0.831918f, -0.831942f, -0.831967f, -0.831991f, -0.832015f, -0.832039f, -0.832063f,
+-0.832087f, -0.832111f, -0.832135f, -0.832159f, -0.832183f, -0.832207f, -0.832231f, -0.832255f, -0.832279f, -0.832302f, -0.832326f, -0.83235f, -0.832374f, -0.832398f, -0.832422f, -0.832446f, -0.83247f, -0.832493f, -0.832517f, -0.832541f,
+-0.832565f, -0.832589f, -0.832612f, -0.832636f, -0.83266f, -0.832684f, -0.832707f, -0.832731f, -0.832755f, -0.832779f, -0.832802f, -0.832826f, -0.83285f, -0.832873f, -0.832897f, -0.832921f, -0.832944f, -0.832968f, -0.832991f, -0.833015f,
+-0.833039f, -0.833062f, -0.833086f, -0.833109f, -0.833133f, -0.833156f, -0.83318f, -0.833203f, -0.833227f, -0.83325f, -0.833274f, -0.833297f, -0.833321f, -0.833344f, -0.833368f, -0.833391f, -0.833414f, -0.833438f, -0.833461f, -0.833484f,
+-0.833508f, -0.833531f, -0.833555f, -0.833578f, -0.833601f, -0.833624f, -0.833648f, -0.833671f, -0.833694f, -0.833718f, -0.833741f, -0.833764f, -0.833787f, -0.83381f, -0.833834f, -0.833857f, -0.83388f, -0.833903f, -0.833926f, -0.833949f,
+-0.833973f, -0.833996f, -0.834019f, -0.834042f, -0.834065f, -0.834088f, -0.834111f, -0.834134f, -0.834157f, -0.83418f, -0.834203f, -0.834226f, -0.834249f, -0.834272f, -0.834295f, -0.834318f, -0.834341f, -0.834364f, -0.834387f, -0.83441f,
+-0.834433f, -0.834456f, -0.834479f, -0.834502f, -0.834525f, -0.834547f, -0.83457f, -0.834593f, -0.834616f, -0.834639f, -0.834661f, -0.834684f, -0.834707f, -0.83473f, -0.834753f, -0.834775f, -0.834798f, -0.834821f, -0.834843f, -0.834866f,
+-0.834889f, -0.834912f, -0.834934f, -0.834957f, -0.834979f, -0.835002f, -0.835025f, -0.835047f, -0.83507f, -0.835093f, -0.835115f, -0.835138f, -0.83516f, -0.835183f, -0.835205f, -0.835228f, -0.83525f, -0.835273f, -0.835295f, -0.835318f,
+-0.83534f, -0.835363f, -0.835385f, -0.835408f, -0.83543f, -0.835452f, -0.835475f, -0.835497f, -0.83552f, -0.835542f, -0.835564f, -0.835587f, -0.835609f, -0.835631f, -0.835654f, -0.835676f, -0.835698f, -0.83572f, -0.835743f, -0.835765f,
+-0.835787f, -0.835809f, -0.835832f, -0.835854f, -0.835876f, -0.835898f, -0.83592f, -0.835943f, -0.835965f, -0.835987f, -0.836009f, -0.836031f, -0.836053f, -0.836075f, -0.836097f, -0.83612f, -0.836142f, -0.836164f, -0.836186f, -0.836208f,
+-0.83623f, -0.836252f, -0.836274f, -0.836296f, -0.836318f, -0.83634f, -0.836362f, -0.836384f, -0.836405f, -0.836427f, -0.836449f, -0.836471f, -0.836493f, -0.836515f, -0.836537f, -0.836559f, -0.836581f, -0.836602f, -0.836624f, -0.836646f,
+-0.836668f, -0.83669f, -0.836711f, -0.836733f, -0.836755f, -0.836777f, -0.836798f, -0.83682f, -0.836842f, -0.836863f, -0.836885f, -0.836907f, -0.836928f, -0.83695f, -0.836972f, -0.836993f, -0.837015f, -0.837037f, -0.837058f, -0.83708f,
+-0.837101f, -0.837123f, -0.837144f, -0.837166f, -0.837188f, -0.837209f, -0.837231f, -0.837252f, -0.837274f, -0.837295f, -0.837316f, -0.837338f, -0.837359f, -0.837381f, -0.837402f, -0.837424f, -0.837445f, -0.837466f, -0.837488f, -0.837509f,
+-0.83753f, -0.837552f, -0.837573f, -0.837594f, -0.837616f, -0.837637f, -0.837658f, -0.83768f, -0.837701f, -0.837722f, -0.837743f, -0.837765f, -0.837786f, -0.837807f, -0.837828f, -0.837849f, -0.83787f, -0.837892f, -0.837913f, -0.837934f,
+-0.837955f, -0.837976f, -0.837997f, -0.838018f, -0.838039f, -0.83806f, -0.838082f, -0.838103f, -0.838124f, -0.838145f, -0.838166f, -0.838187f, -0.838208f, -0.838229f, -0.83825f, -0.838271f, -0.838292f, -0.838312f, -0.838333f, -0.838354f,
+-0.838375f, -0.838396f, -0.838417f, -0.838438f, -0.838459f, -0.83848f, -0.8385f, -0.838521f, -0.838542f, -0.838563f, -0.838584f, -0.838604f, -0.838625f, -0.838646f, -0.838667f, -0.838687f, -0.838708f, -0.838729f, -0.838749f, -0.83877f,
+-0.838791f, -0.838811f, -0.838832f, -0.838853f, -0.838873f, -0.838894f, -0.838915f, -0.838935f, -0.838956f, -0.838976f, -0.838997f, -0.839018f, -0.839038f, -0.839059f, -0.839079f, -0.8391f, -0.83912f, -0.839141f, -0.839161f, -0.839182f,
+-0.839202f, -0.839222f, -0.839243f, -0.839263f, -0.839284f, -0.839304f, -0.839324f, -0.839345f, -0.839365f, -0.839386f, -0.839406f, -0.839426f, -0.839447f, -0.839467f, -0.839487f, -0.839507f, -0.839528f, -0.839548f, -0.839568f, -0.839588f,
+-0.839609f, -0.839629f, -0.839649f, -0.839669f, -0.839689f, -0.83971f, -0.83973f, -0.83975f, -0.83977f, -0.83979f, -0.83981f, -0.83983f, -0.839851f, -0.839871f, -0.839891f, -0.839911f, -0.839931f, -0.839951f, -0.839971f, -0.839991f,
+-0.840011f, -0.840031f, -0.840051f, -0.840071f, -0.840091f, -0.840111f, -0.840131f, -0.840151f, -0.84017f, -0.84019f, -0.84021f, -0.84023f, -0.84025f, -0.84027f, -0.84029f, -0.84031f, -0.840329f, -0.840349f, -0.840369f, -0.840389f,
+-0.840409f, -0.840428f, -0.840448f, -0.840468f, -0.840488f, -0.840507f, -0.840527f, -0.840547f, -0.840566f, -0.840586f, -0.840606f, -0.840625f, -0.840645f, -0.840665f, -0.840684f, -0.840704f, -0.840723f, -0.840743f, -0.840763f, -0.840782f,
+-0.840802f, -0.840821f, -0.840841f, -0.84086f, -0.84088f, -0.840899f, -0.840919f, -0.840938f, -0.840958f, -0.840977f, -0.840997f, -0.841016f, -0.841035f, -0.841055f, -0.841074f, -0.841094f, -0.841113f, -0.841132f, -0.841152f, -0.841171f,
+-0.84119f, -0.84121f, -0.841229f, -0.841248f, -0.841268f, -0.841287f, -0.841306f, -0.841325f, -0.841345f, -0.841364f, -0.841383f, -0.841402f, -0.841421f, -0.841441f, -0.84146f, -0.841479f, -0.841498f, -0.841517f, -0.841536f, -0.841555f,
+-0.841575f, -0.841594f, -0.841613f, -0.841632f, -0.841651f, -0.84167f, -0.841689f, -0.841708f, -0.841727f, -0.841746f, -0.841765f, -0.841784f, -0.841803f, -0.841822f, -0.841841f, -0.84186f, -0.841879f, -0.841898f, -0.841917f, -0.841935f,
+-0.841954f, -0.841973f, -0.841992f, -0.842011f, -0.84203f, -0.842048f, -0.842067f, -0.842086f, -0.842105f, -0.842124f, -0.842142f, -0.842161f, -0.84218f, -0.842199f, -0.842217f, -0.842236f, -0.842255f, -0.842273f, -0.842292f, -0.842311f,
+-0.842329f, -0.842348f, -0.842367f, -0.842385f, -0.842404f, -0.842423f, -0.842441f, -0.84246f, -0.842478f, -0.842497f, -0.842515f, -0.842534f, -0.842552f, -0.842571f, -0.842589f, -0.842608f, -0.842626f, -0.842645f, -0.842663f, -0.842682f,
+-0.8427f, -0.842719f, -0.842737f, -0.842755f, -0.842774f, -0.842792f, -0.84281f, -0.842829f, -0.842847f, -0.842865f, -0.842884f, -0.842902f, -0.84292f, -0.842939f, -0.842957f, -0.842975f, -0.842993f, -0.843012f, -0.84303f, -0.843048f,
+-0.843066f, -0.843084f, -0.843103f, -0.843121f, -0.843139f, -0.843157f, -0.843175f, -0.843193f, -0.843211f, -0.84323f, -0.843248f, -0.843266f, -0.843284f, -0.843302f, -0.84332f, -0.843338f, -0.843356f, -0.843374f, -0.843392f, -0.84341f,
+-0.843428f, -0.843446f, -0.843464f, -0.843482f, -0.8435f, -0.843518f, -0.843536f, -0.843553f, -0.843571f, -0.843589f, -0.843607f, -0.843625f, -0.843643f, -0.843661f, -0.843678f, -0.843696f, -0.843714f, -0.843732f, -0.84375f, -0.843767f,
+-0.843785f, -0.843803f, -0.84382f, -0.843838f, -0.843856f, -0.843874f, -0.843891f, -0.843909f, -0.843927f, -0.843944f, -0.843962f, -0.84398f, -0.843997f, -0.844015f, -0.844032f, -0.84405f, -0.844067f, -0.844085f, -0.844103f, -0.84412f,
+-0.844138f, -0.844155f, -0.844173f, -0.84419f, -0.844208f, -0.844225f, -0.844243f, -0.84426f, -0.844277f, -0.844295f, -0.844312f, -0.84433f, -0.844347f, -0.844364f, -0.844382f, -0.844399f, -0.844416f, -0.844434f, -0.844451f, -0.844468f,
+-0.844486f, -0.844503f, -0.84452f, -0.844538f, -0.844555f, -0.844572f, -0.844589f, -0.844606f, -0.844624f, -0.844641f, -0.844658f, -0.844675f, -0.844692f, -0.84471f, -0.844727f, -0.844744f, -0.844761f, -0.844778f, -0.844795f, -0.844812f,
+-0.844829f, -0.844846f, -0.844863f, -0.84488f, -0.844897f, -0.844914f, -0.844931f, -0.844948f, -0.844965f, -0.844982f, -0.844999f, -0.845016f, -0.845033f, -0.84505f, -0.845067f, -0.845084f, -0.845101f, -0.845118f, -0.845135f, -0.845151f,
+-0.845168f, -0.845185f, -0.845202f, -0.845219f, -0.845236f, -0.845252f, -0.845269f, -0.845286f, -0.845303f, -0.845319f, -0.845336f, -0.845353f, -0.845369f, -0.845386f, -0.845403f, -0.84542f, -0.845436f, -0.845453f, -0.845469f, -0.845486f,
+-0.845503f, -0.845519f, -0.845536f, -0.845553f, -0.845569f, -0.845586f, -0.845602f, -0.845619f, -0.845635f, -0.845652f, -0.845668f, -0.845685f, -0.845701f, -0.845718f, -0.845734f, -0.845751f, -0.845767f, -0.845783f, -0.8458f, -0.845816f,
+-0.845833f, -0.845849f, -0.845865f, -0.845882f, -0.845898f, -0.845914f, -0.845931f, -0.845947f, -0.845963f, -0.84598f, -0.845996f, -0.846012f, -0.846028f, -0.846045f, -0.846061f, -0.846077f, -0.846093f, -0.84611f, -0.846126f, -0.846142f,
+-0.846158f, -0.846174f, -0.84619f, -0.846207f, -0.846223f, -0.846239f, -0.846255f, -0.846271f, -0.846287f, -0.846303f, -0.846319f, -0.846335f, -0.846351f, -0.846367f, -0.846383f, -0.846399f, -0.846415f, -0.846431f, -0.846447f, -0.846463f,
+-0.846479f, -0.846495f, -0.846511f, -0.846527f, -0.846543f, -0.846559f, -0.846574f, -0.84659f, -0.846606f, -0.846622f, -0.846638f, -0.846654f, -0.846669f, -0.846685f, -0.846701f, -0.846717f, -0.846732f, -0.846748f, -0.846764f, -0.84678f,
+-0.846795f, -0.846811f, -0.846827f, -0.846842f, -0.846858f, -0.846874f, -0.846889f, -0.846905f, -0.846921f, -0.846936f, -0.846952f, -0.846967f, -0.846983f, -0.846999f, -0.847014f, -0.84703f, -0.847045f, -0.847061f, -0.847076f, -0.847092f,
+-0.847107f, -0.847123f, -0.847138f, -0.847154f, -0.847169f, -0.847184f, -0.8472f, -0.847215f, -0.847231f, -0.847246f, -0.847261f, -0.847277f, -0.847292f, -0.847307f, -0.847323f, -0.847338f, -0.847353f, -0.847369f, -0.847384f, -0.847399f,
+-0.847414f, -0.84743f, -0.847445f, -0.84746f, -0.847475f, -0.847491f, -0.847506f, -0.847521f, -0.847536f, -0.847551f, -0.847566f, -0.847581f, -0.847597f, -0.847612f, -0.847627f, -0.847642f, -0.847657f, -0.847672f, -0.847687f, -0.847702f,
+-0.847717f, -0.847732f, -0.847747f, -0.847762f, -0.847777f, -0.847792f, -0.847807f, -0.847822f, -0.847837f, -0.847852f, -0.847867f, -0.847882f, -0.847897f, -0.847911f, -0.847926f, -0.847941f, -0.847956f, -0.847971f, -0.847986f, -0.848f,
+-0.848015f, -0.84803f, -0.848045f, -0.84806f, -0.848074f, -0.848089f, -0.848104f, -0.848119f, -0.848133f, -0.848148f, -0.848163f, -0.848177f, -0.848192f, -0.848207f, -0.848221f, -0.848236f, -0.848251f, -0.848265f, -0.84828f, -0.848294f,
+-0.848309f, -0.848323f, -0.848338f, -0.848353f, -0.848367f, -0.848382f, -0.848396f, -0.848411f, -0.848425f, -0.84844f, -0.848454f, -0.848468f, -0.848483f, -0.848497f, -0.848512f, -0.848526f, -0.84854f, -0.848555f, -0.848569f, -0.848584f,
+-0.848598f, -0.848612f, -0.848627f, -0.848641f, -0.848655f, -0.848669f, -0.848684f, -0.848698f, -0.848712f, -0.848727f, -0.848741f, -0.848755f, -0.848769f, -0.848783f, -0.848798f, -0.848812f, -0.848826f, -0.84884f, -0.848854f, -0.848868f,
+-0.848882f, -0.848897f, -0.848911f, -0.848925f, -0.848939f, -0.848953f, -0.848967f, -0.848981f, -0.848995f, -0.849009f, -0.849023f, -0.849037f, -0.849051f, -0.849065f, -0.849079f, -0.849093f, -0.849107f, -0.849121f, -0.849135f, -0.849148f,
+-0.849162f, -0.849176f, -0.84919f, -0.849204f, -0.849218f, -0.849232f, -0.849245f, -0.849259f, -0.849273f, -0.849287f, -0.849301f, -0.849314f, -0.849328f, -0.849342f, -0.849356f, -0.849369f, -0.849383f, -0.849397f, -0.84941f, -0.849424f,
+-0.849438f, -0.849451f, -0.849465f, -0.849479f, -0.849492f, -0.849506f, -0.849519f, -0.849533f, -0.849547f, -0.84956f, -0.849574f, -0.849587f, -0.849601f, -0.849614f, -0.849628f, -0.849641f, -0.849655f, -0.849668f, -0.849682f, -0.849695f,
+-0.849709f, -0.849722f, -0.849735f, -0.849749f, -0.849762f, -0.849776f, -0.849789f, -0.849802f, -0.849816f, -0.849829f, -0.849842f, -0.849856f, -0.849869f, -0.849882f, -0.849895f, -0.849909f, -0.849922f, -0.849935f, -0.849948f, -0.849962f,
+-0.849975f, -0.849988f, -0.850001f, -0.850014f, -0.850028f, -0.850041f, -0.850054f, -0.850067f, -0.85008f, -0.850093f, -0.850106f, -0.850119f, -0.850132f, -0.850145f, -0.850159f, -0.850172f, -0.850185f, -0.850198f, -0.850211f, -0.850224f,
+-0.850237f, -0.85025f, -0.850262f, -0.850275f, -0.850288f, -0.850301f, -0.850314f, -0.850327f, -0.85034f, -0.850353f, -0.850366f, -0.850379f, -0.850391f, -0.850404f, -0.850417f, -0.85043f, -0.850443f, -0.850455f, -0.850468f, -0.850481f,
+-0.850494f, -0.850506f, -0.850519f, -0.850532f, -0.850545f, -0.850557f, -0.85057f, -0.850583f, -0.850595f, -0.850608f, -0.850621f, -0.850633f, -0.850646f, -0.850658f, -0.850671f, -0.850684f, -0.850696f, -0.850709f, -0.850721f, -0.850734f,
+-0.850746f, -0.850759f, -0.850771f, -0.850784f, -0.850796f, -0.850809f, -0.850821f, -0.850834f, -0.850846f, -0.850858f, -0.850871f, -0.850883f, -0.850896f, -0.850908f, -0.85092f, -0.850933f, -0.850945f, -0.850957f, -0.85097f, -0.850982f,
+-0.850994f, -0.851006f, -0.851019f, -0.851031f, -0.851043f, -0.851055f, -0.851068f, -0.85108f, -0.851092f, -0.851104f, -0.851116f, -0.851129f, -0.851141f, -0.851153f, -0.851165f, -0.851177f, -0.851189f, -0.851201f, -0.851213f, -0.851226f,
+-0.851238f, -0.85125f, -0.851262f, -0.851274f, -0.851286f, -0.851298f, -0.85131f, -0.851322f, -0.851334f, -0.851346f, -0.851358f, -0.85137f, -0.851381f, -0.851393f, -0.851405f, -0.851417f, -0.851429f, -0.851441f, -0.851453f, -0.851465f,
+-0.851476f, -0.851488f, -0.8515f, -0.851512f, -0.851524f, -0.851535f, -0.851547f, -0.851559f, -0.851571f, -0.851582f, -0.851594f, -0.851606f, -0.851618f, -0.851629f, -0.851641f, -0.851653f, -0.851664f, -0.851676f, -0.851688f, -0.851699f,
+-0.851711f, -0.851722f, -0.851734f, -0.851745f, -0.851757f, -0.851769f, -0.85178f, -0.851792f, -0.851803f, -0.851815f, -0.851826f, -0.851838f, -0.851849f, -0.851861f, -0.851872f, -0.851883f, -0.851895f, -0.851906f, -0.851918f, -0.851929f,
+-0.85194f, -0.851952f, -0.851963f, -0.851974f, -0.851986f, -0.851997f, -0.852008f, -0.85202f, -0.852031f, -0.852042f, -0.852054f, -0.852065f, -0.852076f, -0.852087f, -0.852098f, -0.85211f, -0.852121f, -0.852132f, -0.852143f, -0.852154f,
+-0.852166f, -0.852177f, -0.852188f, -0.852199f, -0.85221f, -0.852221f, -0.852232f, -0.852243f, -0.852254f, -0.852265f, -0.852276f, -0.852287f, -0.852298f, -0.852309f, -0.85232f, -0.852331f, -0.852342f, -0.852353f, -0.852364f, -0.852375f,
+-0.852386f, -0.852397f, -0.852408f, -0.852419f, -0.85243f, -0.85244f, -0.852451f, -0.852462f, -0.852473f, -0.852484f, -0.852495f, -0.852505f, -0.852516f, -0.852527f, -0.852538f, -0.852548f, -0.852559f, -0.85257f, -0.852581f, -0.852591f,
+-0.852602f, -0.852613f, -0.852623f, -0.852634f, -0.852645f, -0.852655f, -0.852666f, -0.852676f, -0.852687f, -0.852698f, -0.852708f, -0.852719f, -0.852729f, -0.85274f, -0.85275f, -0.852761f, -0.852771f, -0.852782f, -0.852792f, -0.852803f,
+-0.852813f, -0.852824f, -0.852834f, -0.852845f, -0.852855f, -0.852865f, -0.852876f, -0.852886f, -0.852897f, -0.852907f, -0.852917f, -0.852928f, -0.852938f, -0.852948f, -0.852959f, -0.852969f, -0.852979f, -0.852989f, -0.853f, -0.85301f,
+-0.85302f, -0.85303f, -0.853041f, -0.853051f, -0.853061f, -0.853071f, -0.853081f, -0.853091f, -0.853102f, -0.853112f, -0.853122f, -0.853132f, -0.853142f, -0.853152f, -0.853162f, -0.853172f, -0.853182f, -0.853192f, -0.853202f, -0.853212f,
+-0.853222f, -0.853232f, -0.853242f, -0.853252f, -0.853262f, -0.853272f, -0.853282f, -0.853292f, -0.853302f, -0.853312f, -0.853322f, -0.853332f, -0.853341f, -0.853351f, -0.853361f, -0.853371f, -0.853381f, -0.853391f, -0.8534f, -0.85341f,
+-0.85342f, -0.85343f, -0.853439f, -0.853449f, -0.853459f, -0.853469f, -0.853478f, -0.853488f, -0.853498f, -0.853507f, -0.853517f, -0.853527f, -0.853536f, -0.853546f, -0.853555f, -0.853565f, -0.853575f, -0.853584f, -0.853594f, -0.853603f,
+-0.853613f, -0.853622f, -0.853632f, -0.853641f, -0.853651f, -0.85366f, -0.85367f, -0.853679f, -0.853689f, -0.853698f, -0.853708f, -0.853717f, -0.853726f, -0.853736f, -0.853745f, -0.853755f, -0.853764f, -0.853773f, -0.853783f, -0.853792f,
+-0.853801f, -0.853811f, -0.85382f, -0.853829f, -0.853838f, -0.853848f, -0.853857f, -0.853866f, -0.853875f, -0.853885f, -0.853894f, -0.853903f, -0.853912f, -0.853921f, -0.85393f, -0.85394f, -0.853949f, -0.853958f, -0.853967f, -0.853976f,
+-0.853985f, -0.853994f, -0.854003f, -0.854012f, -0.854021f, -0.85403f, -0.854039f, -0.854048f, -0.854057f, -0.854066f, -0.854075f, -0.854084f, -0.854093f, -0.854102f, -0.854111f, -0.85412f, -0.854129f, -0.854138f, -0.854147f, -0.854155f,
+-0.854164f, -0.854173f, -0.854182f, -0.854191f, -0.8542f, -0.854208f, -0.854217f, -0.854226f, -0.854235f, -0.854243f, -0.854252f, -0.854261f, -0.85427f, -0.854278f, -0.854287f, -0.854296f, -0.854304f, -0.854313f, -0.854322f, -0.85433f,
+-0.854339f, -0.854348f, -0.854356f, -0.854365f, -0.854373f, -0.854382f, -0.85439f, -0.854399f, -0.854407f, -0.854416f, -0.854424f, -0.854433f, -0.854441f, -0.85445f, -0.854458f, -0.854467f, -0.854475f, -0.854484f, -0.854492f, -0.854501f,
+-0.854509f, -0.854517f, -0.854526f, -0.854534f, -0.854542f, -0.854551f, -0.854559f, -0.854567f, -0.854576f, -0.854584f, -0.854592f, -0.8546f, -0.854609f, -0.854617f, -0.854625f, -0.854633f, -0.854642f, -0.85465f, -0.854658f, -0.854666f,
+-0.854674f, -0.854682f, -0.854691f, -0.854699f, -0.854707f, -0.854715f, -0.854723f, -0.854731f, -0.854739f, -0.854747f, -0.854755f, -0.854763f, -0.854771f, -0.854779f, -0.854787f, -0.854795f, -0.854803f, -0.854811f, -0.854819f, -0.854827f,
+-0.854835f, -0.854843f, -0.854851f, -0.854859f, -0.854867f, -0.854875f, -0.854882f, -0.85489f, -0.854898f, -0.854906f, -0.854914f, -0.854922f, -0.854929f, -0.854937f, -0.854945f, -0.854953f, -0.85496f, -0.854968f, -0.854976f, -0.854984f,
+-0.854991f, -0.854999f, -0.855007f, -0.855014f, -0.855022f, -0.85503f, -0.855037f, -0.855045f, -0.855053f, -0.85506f, -0.855068f, -0.855075f, -0.855083f, -0.85509f, -0.855098f, -0.855105f, -0.855113f, -0.855121f, -0.855128f, -0.855135f,
+-0.855143f, -0.85515f, -0.855158f, -0.855165f, -0.855173f, -0.85518f, -0.855188f, -0.855195f, -0.855202f, -0.85521f, -0.855217f, -0.855224f, -0.855232f, -0.855239f, -0.855246f, -0.855254f, -0.855261f, -0.855268f, -0.855275f, -0.855283f,
+-0.85529f, -0.855297f, -0.855304f, -0.855312f, -0.855319f, -0.855326f, -0.855333f, -0.85534f, -0.855347f, -0.855355f, -0.855362f, -0.855369f, -0.855376f, -0.855383f, -0.85539f, -0.855397f, -0.855404f, -0.855411f, -0.855418f, -0.855425f,
+-0.855432f, -0.855439f, -0.855446f, -0.855453f, -0.85546f, -0.855467f, -0.855474f, -0.855481f, -0.855488f, -0.855495f, -0.855502f, -0.855509f, -0.855516f, -0.855522f, -0.855529f, -0.855536f, -0.855543f, -0.85555f, -0.855557f, -0.855563f,
+-0.85557f, -0.855577f, -0.855584f, -0.85559f, -0.855597f, -0.855604f, -0.855611f, -0.855617f, -0.855624f, -0.855631f, -0.855637f, -0.855644f, -0.855651f, -0.855657f, -0.855664f, -0.85567f, -0.855677f, -0.855684f, -0.85569f, -0.855697f,
+-0.855703f, -0.85571f, -0.855716f, -0.855723f, -0.855729f, -0.855736f, -0.855742f, -0.855749f, -0.855755f, -0.855762f, -0.855768f, -0.855775f, -0.855781f, -0.855787f, -0.855794f, -0.8558f, -0.855807f, -0.855813f, -0.855819f, -0.855826f,
+-0.855832f, -0.855838f, -0.855845f, -0.855851f, -0.855857f, -0.855863f, -0.85587f, -0.855876f, -0.855882f, -0.855888f, -0.855894f, -0.855901f, -0.855907f, -0.855913f, -0.855919f, -0.855925f, -0.855931f, -0.855938f, -0.855944f, -0.85595f,
+-0.855956f, -0.855962f, -0.855968f, -0.855974f, -0.85598f, -0.855986f, -0.855992f, -0.855998f, -0.856004f, -0.85601f, -0.856016f, -0.856022f, -0.856028f, -0.856034f, -0.85604f, -0.856046f, -0.856052f, -0.856058f, -0.856063f, -0.856069f,
+-0.856075f, -0.856081f, -0.856087f, -0.856093f, -0.856099f, -0.856104f, -0.85611f, -0.856116f, -0.856122f, -0.856127f, -0.856133f, -0.856139f, -0.856145f, -0.85615f, -0.856156f, -0.856162f, -0.856167f, -0.856173f, -0.856179f, -0.856184f,
+-0.85619f, -0.856196f, -0.856201f, -0.856207f, -0.856212f, -0.856218f, -0.856223f, -0.856229f, -0.856235f, -0.85624f, -0.856246f, -0.856251f, -0.856257f, -0.856262f, -0.856267f, -0.856273f, -0.856278f, -0.856284f, -0.856289f, -0.856295f,
+-0.8563f, -0.856305f, -0.856311f, -0.856316f, -0.856322f, -0.856327f, -0.856332f, -0.856337f, -0.856343f, -0.856348f, -0.856353f, -0.856359f, -0.856364f, -0.856369f, -0.856374f, -0.85638f, -0.856385f, -0.85639f, -0.856395f, -0.8564f,
+-0.856406f, -0.856411f, -0.856416f, -0.856421f, -0.856426f, -0.856431f, -0.856436f, -0.856441f, -0.856446f, -0.856452f, -0.856457f, -0.856462f, -0.856467f, -0.856472f, -0.856477f, -0.856482f, -0.856487f, -0.856492f, -0.856497f, -0.856501f,
+-0.856506f, -0.856511f, -0.856516f, -0.856521f, -0.856526f, -0.856531f, -0.856536f, -0.856541f, -0.856545f, -0.85655f, -0.856555f, -0.85656f, -0.856565f, -0.85657f, -0.856574f, -0.856579f, -0.856584f, -0.856589f, -0.856593f, -0.856598f,
+-0.856603f, -0.856607f, -0.856612f, -0.856617f, -0.856621f, -0.856626f, -0.856631f, -0.856635f, -0.85664f, -0.856645f, -0.856649f, -0.856654f, -0.856658f, -0.856663f, -0.856667f, -0.856672f, -0.856676f, -0.856681f, -0.856685f, -0.85669f,
+-0.856694f, -0.856699f, -0.856703f, -0.856708f, -0.856712f, -0.856717f, -0.856721f, -0.856725f, -0.85673f, -0.856734f, -0.856738f, -0.856743f, -0.856747f, -0.856751f, -0.856756f, -0.85676f, -0.856764f, -0.856769f, -0.856773f, -0.856777f,
+-0.856781f, -0.856786f, -0.85679f, -0.856794f, -0.856798f, -0.856802f, -0.856807f, -0.856811f, -0.856815f, -0.856819f, -0.856823f, -0.856827f, -0.856831f, -0.856835f, -0.85684f, -0.856844f, -0.856848f, -0.856852f, -0.856856f, -0.85686f,
+-0.856864f, -0.856868f, -0.856872f, -0.856876f, -0.85688f, -0.856884f, -0.856888f, -0.856892f, -0.856895f, -0.856899f, -0.856903f, -0.856907f, -0.856911f, -0.856915f, -0.856919f, -0.856923f, -0.856926f, -0.85693f, -0.856934f, -0.856938f,
+-0.856942f, -0.856945f, -0.856949f, -0.856953f, -0.856957f, -0.85696f, -0.856964f, -0.856968f, -0.856971f, -0.856975f, -0.856979f, -0.856982f, -0.856986f, -0.85699f, -0.856993f, -0.856997f, -0.857f, -0.857004f, -0.857008f, -0.857011f,
+-0.857015f, -0.857018f, -0.857022f, -0.857025f, -0.857029f, -0.857032f, -0.857036f, -0.857039f, -0.857043f, -0.857046f, -0.85705f, -0.857053f, -0.857056f, -0.85706f, -0.857063f, -0.857067f, -0.85707f, -0.857073f, -0.857077f, -0.85708f,
+-0.857083f, -0.857087f, -0.85709f, -0.857093f, -0.857096f, -0.8571f, -0.857103f, -0.857106f, -0.857109f, -0.857113f, -0.857116f, -0.857119f, -0.857122f, -0.857125f, -0.857128f, -0.857132f, -0.857135f, -0.857138f, -0.857141f, -0.857144f,
+-0.857147f, -0.85715f, -0.857153f, -0.857156f, -0.857159f, -0.857162f, -0.857165f, -0.857168f, -0.857171f, -0.857174f, -0.857177f, -0.85718f, -0.857183f, -0.857186f, -0.857189f, -0.857192f, -0.857195f, -0.857198f, -0.857201f, -0.857204f,
+-0.857206f, -0.857209f, -0.857212f, -0.857215f, -0.857218f, -0.857221f, -0.857223f, -0.857226f, -0.857229f, -0.857232f, -0.857234f, -0.857237f, -0.85724f, -0.857243f, -0.857245f, -0.857248f, -0.857251f, -0.857253f, -0.857256f, -0.857259f,
+-0.857261f, -0.857264f, -0.857266f, -0.857269f, -0.857272f, -0.857274f, -0.857277f, -0.857279f, -0.857282f, -0.857284f, -0.857287f, -0.857289f, -0.857292f, -0.857294f, -0.857297f, -0.857299f, -0.857302f, -0.857304f, -0.857306f, -0.857309f,
+-0.857311f, -0.857314f, -0.857316f, -0.857318f, -0.857321f, -0.857323f, -0.857325f, -0.857328f, -0.85733f, -0.857332f, -0.857334f, -0.857337f, -0.857339f, -0.857341f, -0.857343f, -0.857346f, -0.857348f, -0.85735f, -0.857352f, -0.857354f,
+-0.857357f, -0.857359f, -0.857361f, -0.857363f, -0.857365f, -0.857367f, -0.857369f, -0.857371f, -0.857373f, -0.857376f, -0.857378f, -0.85738f, -0.857382f, -0.857384f, -0.857386f, -0.857388f, -0.85739f, -0.857392f, -0.857394f, -0.857395f,
+-0.857397f, -0.857399f, -0.857401f, -0.857403f, -0.857405f, -0.857407f, -0.857409f, -0.857411f, -0.857412f, -0.857414f, -0.857416f, -0.857418f, -0.85742f, -0.857421f, -0.857423f, -0.857425f, -0.857427f, -0.857428f, -0.85743f, -0.857432f,
+-0.857434f, -0.857435f, -0.857437f, -0.857439f, -0.85744f, -0.857442f, -0.857443f, -0.857445f, -0.857447f, -0.857448f, -0.85745f, -0.857451f, -0.857453f, -0.857455f, -0.857456f, -0.857458f, -0.857459f, -0.857461f, -0.857462f, -0.857464f,
+-0.857465f, -0.857467f, -0.857468f, -0.857469f, -0.857471f, -0.857472f, -0.857474f, -0.857475f, -0.857476f, -0.857478f, -0.857479f, -0.85748f, -0.857482f, -0.857483f, -0.857484f, -0.857486f, -0.857487f, -0.857488f, -0.85749f, -0.857491f,
+-0.857492f, -0.857493f, -0.857494f, -0.857496f, -0.857497f, -0.857498f, -0.857499f, -0.8575f, -0.857501f, -0.857503f, -0.857504f, -0.857505f, -0.857506f, -0.857507f, -0.857508f, -0.857509f, -0.85751f, -0.857511f, -0.857512f, -0.857513f,
+-0.857514f, -0.857515f, -0.857516f, -0.857517f, -0.857518f, -0.857519f, -0.85752f, -0.857521f, -0.857522f, -0.857523f, -0.857524f, -0.857525f, -0.857525f, -0.857526f, -0.857527f, -0.857528f, -0.857529f, -0.85753f, -0.85753f, -0.857531f,
+-0.857532f, -0.857533f, -0.857533f, -0.857534f, -0.857535f, -0.857536f, -0.857536f, -0.857537f, -0.857538f, -0.857538f, -0.857539f, -0.85754f, -0.85754f, -0.857541f, -0.857541f, -0.857542f, -0.857543f, -0.857543f, -0.857544f, -0.857544f,
+-0.857545f, -0.857545f, -0.857546f, -0.857546f, -0.857547f, -0.857547f, -0.857548f, -0.857548f, -0.857549f, -0.857549f, -0.85755f, -0.85755f, -0.857551f, -0.857551f, -0.857551f, -0.857552f, -0.857552f, -0.857552f, -0.857553f, -0.857553f,
+-0.857553f, -0.857554f, -0.857554f, -0.857554f, -0.857554f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f,
+-0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857556f, -0.857556f,
+-0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857554f, -0.857554f, -0.857554f, -0.857553f, -0.857553f, -0.857553f, -0.857552f, -0.857552f, -0.857552f, -0.857551f, -0.857551f,
+-0.857551f, -0.85755f, -0.85755f, -0.857549f, -0.857549f, -0.857549f, -0.857548f, -0.857548f, -0.857547f, -0.857547f, -0.857546f, -0.857546f, -0.857545f, -0.857545f, -0.857544f, -0.857543f, -0.857543f, -0.857542f, -0.857542f, -0.857541f,
+-0.857541f, -0.85754f, -0.857539f, -0.857539f, -0.857538f, -0.857537f, -0.857537f, -0.857536f, -0.857535f, -0.857534f, -0.857534f, -0.857533f, -0.857532f, -0.857531f, -0.857531f, -0.85753f, -0.857529f, -0.857528f, -0.857527f, -0.857527f,
+-0.857526f, -0.857525f, -0.857524f, -0.857523f, -0.857522f, -0.857521f, -0.85752f, -0.857519f, -0.857519f, -0.857518f, -0.857517f, -0.857516f, -0.857515f, -0.857514f, -0.857513f, -0.857512f, -0.857511f, -0.85751f, -0.857508f, -0.857507f,
+-0.857506f, -0.857505f, -0.857504f, -0.857503f, -0.857502f, -0.857501f, -0.8575f, -0.857498f, -0.857497f, -0.857496f, -0.857495f, -0.857494f, -0.857492f, -0.857491f, -0.85749f, -0.857489f, -0.857487f, -0.857486f, -0.857485f, -0.857484f,
+-0.857482f, -0.857481f, -0.85748f, -0.857478f, -0.857477f, -0.857476f, -0.857474f, -0.857473f, -0.857471f, -0.85747f, -0.857469f, -0.857467f, -0.857466f, -0.857464f, -0.857463f, -0.857461f, -0.85746f, -0.857458f, -0.857457f, -0.857455f,
+-0.857454f, -0.857452f, -0.85745f, -0.857449f, -0.857447f, -0.857446f, -0.857444f, -0.857442f, -0.857441f, -0.857439f, -0.857438f, -0.857436f, -0.857434f, -0.857432f, -0.857431f, -0.857429f, -0.857427f, -0.857426f, -0.857424f, -0.857422f,
+-0.85742f, -0.857419f, -0.857417f, -0.857415f, -0.857413f, -0.857411f, -0.857409f, -0.857408f, -0.857406f, -0.857404f, -0.857402f, -0.8574f, -0.857398f, -0.857396f, -0.857394f, -0.857392f, -0.85739f, -0.857388f, -0.857386f, -0.857384f,
+-0.857382f, -0.85738f, -0.857378f, -0.857376f, -0.857374f, -0.857372f, -0.85737f, -0.857368f, -0.857366f, -0.857364f, -0.857362f, -0.85736f, -0.857357f, -0.857355f, -0.857353f, -0.857351f, -0.857349f, -0.857346f, -0.857344f, -0.857342f,
+-0.85734f, -0.857338f, -0.857335f, -0.857333f, -0.857331f, -0.857328f, -0.857326f, -0.857324f, -0.857321f, -0.857319f, -0.857317f, -0.857314f, -0.857312f, -0.85731f, -0.857307f, -0.857305f, -0.857302f, -0.8573f, -0.857297f, -0.857295f,
+-0.857293f, -0.85729f, -0.857288f, -0.857285f, -0.857283f, -0.85728f, -0.857278f, -0.857275f, -0.857272f, -0.85727f, -0.857267f, -0.857265f, -0.857262f, -0.857259f, -0.857257f, -0.857254f, -0.857251f, -0.857249f, -0.857246f, -0.857243f,
+-0.857241f, -0.857238f, -0.857235f, -0.857233f, -0.85723f, -0.857227f, -0.857224f, -0.857221f, -0.857219f, -0.857216f, -0.857213f, -0.85721f, -0.857207f, -0.857205f, -0.857202f, -0.857199f, -0.857196f, -0.857193f, -0.85719f, -0.857187f,
+-0.857184f, -0.857181f, -0.857178f, -0.857175f, -0.857172f, -0.857169f, -0.857166f, -0.857163f, -0.85716f, -0.857157f, -0.857154f, -0.857151f, -0.857148f, -0.857145f, -0.857142f, -0.857139f, -0.857136f, -0.857133f, -0.857129f, -0.857126f,
+-0.857123f, -0.85712f, -0.857117f, -0.857114f, -0.85711f, -0.857107f, -0.857104f, -0.857101f, -0.857097f, -0.857094f, -0.857091f, -0.857088f, -0.857084f, -0.857081f, -0.857078f, -0.857074f, -0.857071f, -0.857068f, -0.857064f, -0.857061f,
+-0.857057f, -0.857054f, -0.857051f, -0.857047f, -0.857044f, -0.85704f, -0.857037f, -0.857033f, -0.85703f, -0.857026f, -0.857023f, -0.857019f, -0.857016f, -0.857012f, -0.857009f, -0.857005f, -0.857001f, -0.856998f, -0.856994f, -0.856991f,
+-0.856987f, -0.856983f, -0.85698f, -0.856976f, -0.856972f, -0.856969f, -0.856965f, -0.856961f, -0.856958f, -0.856954f, -0.85695f, -0.856946f, -0.856943f, -0.856939f, -0.856935f, -0.856931f, -0.856927f, -0.856924f, -0.85692f, -0.856916f,
+-0.856912f, -0.856908f, -0.856904f, -0.8569f, -0.856896f, -0.856893f, -0.856889f, -0.856885f, -0.856881f, -0.856877f, -0.856873f, -0.856869f, -0.856865f, -0.856861f, -0.856857f, -0.856853f, -0.856849f, -0.856845f, -0.856841f, -0.856836f,
+-0.856832f, -0.856828f, -0.856824f, -0.85682f, -0.856816f, -0.856812f, -0.856808f, -0.856803f, -0.856799f, -0.856795f, -0.856791f, -0.856787f, -0.856782f, -0.856778f, -0.856774f, -0.85677f, -0.856765f, -0.856761f, -0.856757f, -0.856752f,
+-0.856748f, -0.856744f, -0.856739f, -0.856735f, -0.856731f, -0.856726f, -0.856722f, -0.856717f, -0.856713f, -0.856709f, -0.856704f, -0.8567f, -0.856695f, -0.856691f, -0.856686f, -0.856682f, -0.856677f, -0.856673f, -0.856668f, -0.856664f,
+-0.856659f, -0.856655f, -0.85665f, -0.856645f, -0.856641f, -0.856636f, -0.856632f, -0.856627f, -0.856622f, -0.856618f, -0.856613f, -0.856608f, -0.856604f, -0.856599f, -0.856594f, -0.856589f, -0.856585f, -0.85658f, -0.856575f, -0.85657f,
+-0.856566f, -0.856561f, -0.856556f, -0.856551f, -0.856546f, -0.856541f, -0.856537f, -0.856532f, -0.856527f, -0.856522f, -0.856517f, -0.856512f, -0.856507f, -0.856502f, -0.856497f, -0.856492f, -0.856487f, -0.856482f, -0.856477f, -0.856472f,
+-0.856467f, -0.856462f, -0.856457f, -0.856452f, -0.856447f, -0.856442f, -0.856437f, -0.856432f, -0.856427f, -0.856422f, -0.856417f, -0.856411f, -0.856406f, -0.856401f, -0.856396f, -0.856391f, -0.856386f, -0.85638f, -0.856375f, -0.85637f,
+-0.856365f, -0.856359f, -0.856354f, -0.856349f, -0.856343f, -0.856338f, -0.856333f, -0.856327f, -0.856322f, -0.856317f, -0.856311f, -0.856306f, -0.856301f, -0.856295f, -0.85629f, -0.856284f, -0.856279f, -0.856274f, -0.856268f, -0.856263f,
+-0.856257f, -0.856252f, -0.856246f, -0.856241f, -0.856235f, -0.85623f, -0.856224f, -0.856218f, -0.856213f, -0.856207f, -0.856202f, -0.856196f, -0.85619f, -0.856185f, -0.856179f, -0.856173f, -0.856168f, -0.856162f, -0.856156f, -0.856151f,
+-0.856145f, -0.856139f, -0.856134f, -0.856128f, -0.856122f, -0.856116f, -0.856111f, -0.856105f, -0.856099f, -0.856093f, -0.856087f, -0.856081f, -0.856076f, -0.85607f, -0.856064f, -0.856058f, -0.856052f, -0.856046f, -0.85604f, -0.856034f,
+-0.856028f, -0.856022f, -0.856016f, -0.85601f, -0.856004f, -0.855998f, -0.855992f, -0.855986f, -0.85598f, -0.855974f, -0.855968f, -0.855962f, -0.855956f, -0.85595f, -0.855944f, -0.855938f, -0.855932f, -0.855925f, -0.855919f, -0.855913f,
+-0.855907f, -0.855901f, -0.855895f, -0.855888f, -0.855882f, -0.855876f, -0.85587f, -0.855863f, -0.855857f, -0.855851f, -0.855845f, -0.855838f, -0.855832f, -0.855826f, -0.855819f, -0.855813f, -0.855807f, -0.8558f, -0.855794f, -0.855787f,
+-0.855781f, -0.855775f, -0.855768f, -0.855762f, -0.855755f, -0.855749f, -0.855742f, -0.855736f, -0.855729f, -0.855723f, -0.855716f, -0.85571f, -0.855703f, -0.855697f, -0.85569f, -0.855683f, -0.855677f, -0.85567f, -0.855664f, -0.855657f,
+-0.85565f, -0.855644f, -0.855637f, -0.85563f, -0.855624f, -0.855617f, -0.85561f, -0.855604f, -0.855597f, -0.85559f, -0.855583f, -0.855577f, -0.85557f, -0.855563f, -0.855556f, -0.855549f, -0.855543f, -0.855536f, -0.855529f, -0.855522f,
+-0.855515f, -0.855508f, -0.855501f, -0.855494f, -0.855488f, -0.855481f, -0.855474f, -0.855467f, -0.85546f, -0.855453f, -0.855446f, -0.855439f, -0.855432f, -0.855425f, -0.855418f, -0.855411f, -0.855404f, -0.855397f, -0.855389f, -0.855382f,
+-0.855375f, -0.855368f, -0.855361f, -0.855354f, -0.855347f, -0.85534f, -0.855332f, -0.855325f, -0.855318f, -0.855311f, -0.855304f, -0.855296f, -0.855289f, -0.855282f, -0.855275f, -0.855267f, -0.85526f, -0.855253f, -0.855245f, -0.855238f,
+-0.855231f, -0.855223f, -0.855216f, -0.855209f, -0.855201f, -0.855194f, -0.855187f, -0.855179f, -0.855172f, -0.855164f, -0.855157f, -0.855149f, -0.855142f, -0.855134f, -0.855127f, -0.855119f, -0.855112f, -0.855104f, -0.855097f, -0.855089f,
+-0.855082f, -0.855074f, -0.855066f, -0.855059f, -0.855051f, -0.855044f, -0.855036f, -0.855028f, -0.855021f, -0.855013f, -0.855005f, -0.854998f, -0.85499f, -0.854982f, -0.854974f, -0.854967f, -0.854959f, -0.854951f, -0.854943f, -0.854936f,
+-0.854928f, -0.85492f, -0.854912f, -0.854904f, -0.854897f, -0.854889f, -0.854881f, -0.854873f, -0.854865f, -0.854857f, -0.854849f, -0.854841f, -0.854833f, -0.854825f, -0.854817f, -0.85481f, -0.854802f, -0.854794f, -0.854786f, -0.854778f,
+-0.854769f, -0.854761f, -0.854753f, -0.854745f, -0.854737f, -0.854729f, -0.854721f, -0.854713f, -0.854705f, -0.854697f, -0.854689f, -0.85468f, -0.854672f, -0.854664f, -0.854656f, -0.854648f, -0.854639f, -0.854631f, -0.854623f, -0.854615f,
+-0.854606f, -0.854598f, -0.85459f, -0.854582f, -0.854573f, -0.854565f, -0.854557f, -0.854548f, -0.85454f, -0.854532f, -0.854523f, -0.854515f, -0.854506f, -0.854498f, -0.85449f, -0.854481f, -0.854473f, -0.854464f, -0.854456f, -0.854447f,
+-0.854439f, -0.85443f, -0.854422f, -0.854413f, -0.854405f, -0.854396f, -0.854388f, -0.854379f, -0.85437f, -0.854362f, -0.854353f, -0.854345f, -0.854336f, -0.854327f, -0.854319f, -0.85431f, -0.854301f, -0.854293f, -0.854284f, -0.854275f,
+-0.854267f, -0.854258f, -0.854249f, -0.85424f, -0.854232f, -0.854223f, -0.854214f, -0.854205f, -0.854196f, -0.854188f, -0.854179f, -0.85417f, -0.854161f, -0.854152f, -0.854143f, -0.854134f, -0.854125f, -0.854116f, -0.854108f, -0.854099f,
+-0.85409f, -0.854081f, -0.854072f, -0.854063f, -0.854054f, -0.854045f, -0.854036f, -0.854027f, -0.854018f, -0.854009f, -0.853999f, -0.85399f, -0.853981f, -0.853972f, -0.853963f, -0.853954f, -0.853945f, -0.853936f, -0.853926f, -0.853917f,
+-0.853908f, -0.853899f, -0.85389f, -0.85388f, -0.853871f, -0.853862f, -0.853853f, -0.853843f, -0.853834f, -0.853825f, -0.853816f, -0.853806f, -0.853797f, -0.853788f, -0.853778f, -0.853769f, -0.85376f, -0.85375f, -0.853741f, -0.853731f,
+-0.853722f, -0.853713f, -0.853703f, -0.853694f, -0.853684f, -0.853675f, -0.853665f, -0.853656f, -0.853646f, -0.853637f, -0.853627f, -0.853618f, -0.853608f, -0.853598f, -0.853589f, -0.853579f, -0.85357f, -0.85356f, -0.85355f, -0.853541f,
+-0.853531f, -0.853522f, -0.853512f, -0.853502f, -0.853492f, -0.853483f, -0.853473f, -0.853463f, -0.853454f, -0.853444f, -0.853434f, -0.853424f, -0.853414f, -0.853405f, -0.853395f, -0.853385f, -0.853375f, -0.853365f, -0.853356f, -0.853346f,
+-0.853336f, -0.853326f, -0.853316f, -0.853306f, -0.853296f, -0.853286f, -0.853276f, -0.853266f, -0.853256f, -0.853246f, -0.853236f, -0.853226f, -0.853216f, -0.853206f, -0.853196f, -0.853186f, -0.853176f, -0.853166f, -0.853156f, -0.853146f,
+-0.853136f, -0.853126f, -0.853116f, -0.853105f, -0.853095f, -0.853085f, -0.853075f, -0.853065f, -0.853054f, -0.853044f, -0.853034f, -0.853024f, -0.853014f, -0.853003f, -0.852993f, -0.852983f, -0.852972f, -0.852962f, -0.852952f, -0.852941f,
+-0.852931f, -0.852921f, -0.85291f, -0.8529f, -0.85289f, -0.852879f, -0.852869f, -0.852858f, -0.852848f, -0.852838f, -0.852827f, -0.852817f, -0.852806f, -0.852796f, -0.852785f, -0.852775f, -0.852764f, -0.852754f, -0.852743f, -0.852732f,
+-0.852722f, -0.852711f, -0.852701f, -0.85269f, -0.852679f, -0.852669f, -0.852658f, -0.852648f, -0.852637f, -0.852626f, -0.852615f, -0.852605f, -0.852594f, -0.852583f, -0.852573f, -0.852562f, -0.852551f, -0.85254f, -0.85253f, -0.852519f,
+-0.852508f, -0.852497f, -0.852486f, -0.852475f, -0.852465f, -0.852454f, -0.852443f, -0.852432f, -0.852421f, -0.85241f, -0.852399f, -0.852388f, -0.852377f, -0.852366f, -0.852356f, -0.852345f, -0.852334f, -0.852323f, -0.852312f, -0.852301f,
+-0.852289f, -0.852278f, -0.852267f, -0.852256f, -0.852245f, -0.852234f, -0.852223f, -0.852212f, -0.852201f, -0.85219f, -0.852178f, -0.852167f, -0.852156f, -0.852145f, -0.852134f, -0.852123f, -0.852111f, -0.8521f, -0.852089f, -0.852078f,
+-0.852066f, -0.852055f, -0.852044f, -0.852032f, -0.852021f, -0.85201f, -0.851999f, -0.851987f, -0.851976f, -0.851964f, -0.851953f, -0.851942f, -0.85193f, -0.851919f, -0.851907f, -0.851896f, -0.851885f, -0.851873f, -0.851862f, -0.85185f,
+-0.851839f, -0.851827f, -0.851816f, -0.851804f, -0.851793f, -0.851781f, -0.851769f, -0.851758f, -0.851746f, -0.851735f, -0.851723f, -0.851711f, -0.8517f, -0.851688f, -0.851676f, -0.851665f, -0.851653f, -0.851641f, -0.85163f, -0.851618f,
+-0.851606f, -0.851595f, -0.851583f, -0.851571f, -0.851559f, -0.851547f, -0.851536f, -0.851524f, -0.851512f, -0.8515f, -0.851488f, -0.851476f, -0.851465f, -0.851453f, -0.851441f, -0.851429f, -0.851417f, -0.851405f, -0.851393f, -0.851381f,
+-0.851369f, -0.851357f, -0.851345f, -0.851333f, -0.851321f, -0.851309f, -0.851297f, -0.851285f, -0.851273f, -0.851261f, -0.851249f, -0.851237f, -0.851225f, -0.851213f, -0.851201f, -0.851189f, -0.851176f, -0.851164f, -0.851152f, -0.85114f,
+-0.851128f, -0.851115f, -0.851103f, -0.851091f, -0.851079f, -0.851067f, -0.851054f, -0.851042f, -0.85103f, -0.851017f, -0.851005f, -0.850993f, -0.850981f, -0.850968f, -0.850956f, -0.850943f, -0.850931f, -0.850919f, -0.850906f, -0.850894f,
+-0.850881f, -0.850869f, -0.850857f, -0.850844f, -0.850832f, -0.850819f, -0.850807f, -0.850794f, -0.850782f, -0.850769f, -0.850757f, -0.850744f, -0.850732f, -0.850719f, -0.850706f, -0.850694f, -0.850681f, -0.850669f, -0.850656f, -0.850643f,
+-0.850631f, -0.850618f, -0.850605f, -0.850593f, -0.85058f, -0.850567f, -0.850555f, -0.850542f, -0.850529f, -0.850516f, -0.850504f, -0.850491f, -0.850478f, -0.850465f, -0.850452f, -0.85044f, -0.850427f, -0.850414f, -0.850401f, -0.850388f,
+-0.850375f, -0.850362f, -0.850349f, -0.850337f, -0.850324f, -0.850311f, -0.850298f, -0.850285f, -0.850272f, -0.850259f, -0.850246f, -0.850233f, -0.85022f, -0.850207f, -0.850194f, -0.850181f, -0.850168f, -0.850155f, -0.850141f, -0.850128f,
+-0.850115f, -0.850102f, -0.850089f, -0.850076f, -0.850063f, -0.850049f, -0.850036f, -0.850023f, -0.85001f, -0.849997f, -0.849983f, -0.84997f, -0.849957f, -0.849944f, -0.84993f, -0.849917f, -0.849904f, -0.849891f, -0.849877f, -0.849864f,
+-0.849851f, -0.849837f, -0.849824f, -0.84981f, -0.849797f, -0.849784f, -0.84977f, -0.849757f, -0.849743f, -0.84973f, -0.849717f, -0.849703f, -0.84969f, -0.849676f, -0.849663f, -0.849649f, -0.849636f, -0.849622f, -0.849608f, -0.849595f,
+-0.849581f, -0.849568f, -0.849554f, -0.849541f, -0.849527f, -0.849513f, -0.8495f, -0.849486f, -0.849472f, -0.849459f, -0.849445f, -0.849431f, -0.849418f, -0.849404f, -0.84939f, -0.849376f, -0.849363f, -0.849349f, -0.849335f, -0.849321f,
+-0.849307f, -0.849294f, -0.84928f, -0.849266f, -0.849252f, -0.849238f, -0.849224f, -0.849211f, -0.849197f, -0.849183f, -0.849169f, -0.849155f, -0.849141f, -0.849127f, -0.849113f, -0.849099f, -0.849085f, -0.849071f, -0.849057f, -0.849043f,
+-0.849029f, -0.849015f, -0.849001f, -0.848987f, -0.848973f, -0.848959f, -0.848945f, -0.84893f, -0.848916f, -0.848902f, -0.848888f, -0.848874f, -0.84886f, -0.848846f, -0.848831f, -0.848817f, -0.848803f, -0.848789f, -0.848774f, -0.84876f,
+-0.848746f, -0.848732f, -0.848717f, -0.848703f, -0.848689f, -0.848674f, -0.84866f, -0.848646f, -0.848631f, -0.848617f, -0.848603f, -0.848588f, -0.848574f, -0.848559f, -0.848545f, -0.848531f, -0.848516f, -0.848502f, -0.848487f, -0.848473f,
+-0.848458f, -0.848444f, -0.848429f, -0.848415f, -0.8484f, -0.848386f, -0.848371f, -0.848357f, -0.848342f, -0.848327f, -0.848313f, -0.848298f, -0.848283f, -0.848269f, -0.848254f, -0.84824f, -0.848225f, -0.84821f, -0.848195f, -0.848181f,
+-0.848166f, -0.848151f, -0.848137f, -0.848122f, -0.848107f, -0.848092f, -0.848077f, -0.848063f, -0.848048f, -0.848033f, -0.848018f, -0.848003f, -0.847988f, -0.847974f, -0.847959f, -0.847944f, -0.847929f, -0.847914f, -0.847899f, -0.847884f,
+-0.847869f, -0.847854f, -0.847839f, -0.847824f, -0.847809f, -0.847794f, -0.847779f, -0.847764f, -0.847749f, -0.847734f, -0.847719f, -0.847704f, -0.847689f, -0.847674f, -0.847659f, -0.847643f, -0.847628f, -0.847613f, -0.847598f, -0.847583f,
+-0.847568f, -0.847552f, -0.847537f, -0.847522f, -0.847507f, -0.847492f, -0.847476f, -0.847461f, -0.847446f, -0.847431f, -0.847415f, -0.8474f, -0.847385f, -0.847369f, -0.847354f, -0.847339f, -0.847323f, -0.847308f, -0.847292f, -0.847277f,
+-0.847262f, -0.847246f, -0.847231f, -0.847215f, -0.8472f, -0.847184f, -0.847169f, -0.847153f, -0.847138f, -0.847122f, -0.847107f, -0.847091f, -0.847076f, -0.84706f, -0.847045f, -0.847029f, -0.847013f, -0.846998f, -0.846982f, -0.846967f,
+-0.846951f, -0.846935f, -0.84692f, -0.846904f, -0.846888f, -0.846873f, -0.846857f, -0.846841f, -0.846825f, -0.84681f, -0.846794f, -0.846778f, -0.846762f, -0.846747f, -0.846731f, -0.846715f, -0.846699f, -0.846683f, -0.846667f, -0.846652f,
+-0.846636f, -0.84662f, -0.846604f, -0.846588f, -0.846572f, -0.846556f, -0.84654f, -0.846524f, -0.846508f, -0.846492f, -0.846476f, -0.84646f, -0.846444f, -0.846428f, -0.846412f, -0.846396f, -0.84638f, -0.846364f, -0.846348f, -0.846332f,
+-0.846316f, -0.8463f, -0.846284f, -0.846267f, -0.846251f, -0.846235f, -0.846219f, -0.846203f, -0.846187f, -0.84617f, -0.846154f, -0.846138f, -0.846122f, -0.846105f, -0.846089f, -0.846073f, -0.846057f, -0.84604f, -0.846024f, -0.846008f,
+-0.845991f, -0.845975f, -0.845959f, -0.845942f, -0.845926f, -0.84591f, -0.845893f, -0.845877f, -0.84586f, -0.845844f, -0.845827f, -0.845811f, -0.845795f, -0.845778f, -0.845762f, -0.845745f, -0.845729f, -0.845712f, -0.845695f, -0.845679f,
+-0.845662f, -0.845646f, -0.845629f, -0.845613f, -0.845596f, -0.845579f, -0.845563f, -0.845546f, -0.845529f, -0.845513f, -0.845496f, -0.845479f, -0.845463f, -0.845446f, -0.845429f, -0.845413f, -0.845396f, -0.845379f, -0.845362f, -0.845346f,
+-0.845329f, -0.845312f, -0.845295f, -0.845278f, -0.845261f, -0.845245f, -0.845228f, -0.845211f, -0.845194f, -0.845177f, -0.84516f, -0.845143f, -0.845126f, -0.845109f, -0.845092f, -0.845075f, -0.845059f, -0.845042f, -0.845025f, -0.845008f,
+-0.844991f, -0.844973f, -0.844956f, -0.844939f, -0.844922f, -0.844905f, -0.844888f, -0.844871f, -0.844854f, -0.844837f, -0.84482f, -0.844803f, -0.844785f, -0.844768f, -0.844751f, -0.844734f, -0.844717f, -0.844699f, -0.844682f, -0.844665f,
+-0.844648f, -0.84463f, -0.844613f, -0.844596f, -0.844579f, -0.844561f, -0.844544f, -0.844527f, -0.844509f, -0.844492f, -0.844475f, -0.844457f, -0.84444f, -0.844422f, -0.844405f, -0.844388f, -0.84437f, -0.844353f, -0.844335f, -0.844318f,
+-0.8443f, -0.844283f, -0.844265f, -0.844248f, -0.84423f, -0.844213f, -0.844195f, -0.844178f, -0.84416f, -0.844143f, -0.844125f, -0.844107f, -0.84409f, -0.844072f, -0.844054f, -0.844037f, -0.844019f, -0.844001f, -0.843984f, -0.843966f,
+-0.843948f, -0.843931f, -0.843913f, -0.843895f, -0.843877f, -0.84386f, -0.843842f, -0.843824f, -0.843806f, -0.843789f, -0.843771f, -0.843753f, -0.843735f, -0.843717f, -0.843699f, -0.843681f, -0.843664f, -0.843646f, -0.843628f, -0.84361f,
+-0.843592f, -0.843574f, -0.843556f, -0.843538f, -0.84352f, -0.843502f, -0.843484f, -0.843466f, -0.843448f, -0.84343f, -0.843412f, -0.843394f, -0.843376f, -0.843358f, -0.84334f, -0.843321f, -0.843303f, -0.843285f, -0.843267f, -0.843249f,
+-0.843231f, -0.843213f, -0.843194f, -0.843176f, -0.843158f, -0.84314f, -0.843121f, -0.843103f, -0.843085f, -0.843067f, -0.843048f, -0.84303f, -0.843012f, -0.842994f, -0.842975f, -0.842957f, -0.842939f, -0.84292f, -0.842902f, -0.842883f,
+-0.842865f, -0.842847f, -0.842828f, -0.84281f, -0.842791f, -0.842773f, -0.842754f, -0.842736f, -0.842717f, -0.842699f, -0.84268f, -0.842662f, -0.842643f, -0.842625f, -0.842606f, -0.842588f, -0.842569f, -0.842551f, -0.842532f, -0.842513f,
+-0.842495f, -0.842476f, -0.842457f, -0.842439f, -0.84242f, -0.842401f, -0.842383f, -0.842364f, -0.842345f, -0.842327f, -0.842308f, -0.842289f, -0.84227f, -0.842252f, -0.842233f, -0.842214f, -0.842195f, -0.842176f, -0.842158f, -0.842139f,
+-0.84212f, -0.842101f, -0.842082f, -0.842063f, -0.842044f, -0.842025f, -0.842007f, -0.841988f, -0.841969f, -0.84195f, -0.841931f, -0.841912f, -0.841893f, -0.841874f, -0.841855f, -0.841836f, -0.841817f, -0.841798f, -0.841779f, -0.84176f,
+-0.84174f, -0.841721f, -0.841702f, -0.841683f, -0.841664f, -0.841645f, -0.841626f, -0.841607f, -0.841587f, -0.841568f, -0.841549f, -0.84153f, -0.841511f, -0.841491f, -0.841472f, -0.841453f, -0.841434f, -0.841414f, -0.841395f, -0.841376f,
+-0.841356f, -0.841337f, -0.841318f, -0.841299f, -0.841279f, -0.84126f, -0.84124f, -0.841221f, -0.841202f, -0.841182f, -0.841163f, -0.841143f, -0.841124f, -0.841104f, -0.841085f, -0.841066f, -0.841046f, -0.841027f, -0.841007f, -0.840987f,
+-0.840968f, -0.840948f, -0.840929f, -0.840909f, -0.84089f, -0.84087f, -0.84085f, -0.840831f, -0.840811f, -0.840792f, -0.840772f, -0.840752f, -0.840733f, -0.840713f, -0.840693f, -0.840674f, -0.840654f, -0.840634f, -0.840614f, -0.840595f,
+-0.840575f, -0.840555f, -0.840535f, -0.840515f, -0.840496f, -0.840476f, -0.840456f, -0.840436f, -0.840416f, -0.840396f, -0.840377f, -0.840357f, -0.840337f, -0.840317f, -0.840297f, -0.840277f, -0.840257f, -0.840237f, -0.840217f, -0.840197f,
+-0.840177f, -0.840157f, -0.840137f, -0.840117f, -0.840097f, -0.840077f, -0.840057f, -0.840037f, -0.840017f, -0.839997f, -0.839977f, -0.839956f, -0.839936f, -0.839916f, -0.839896f, -0.839876f, -0.839856f, -0.839836f, -0.839815f, -0.839795f,
+-0.839775f, -0.839755f, -0.839734f, -0.839714f, -0.839694f, -0.839674f, -0.839653f, -0.839633f, -0.839613f, -0.839592f, -0.839572f, -0.839552f, -0.839531f, -0.839511f, -0.839491f, -0.83947f, -0.83945f, -0.839429f, -0.839409f, -0.839389f,
+-0.839368f, -0.839348f, -0.839327f, -0.839307f, -0.839286f, -0.839266f, -0.839245f, -0.839225f, -0.839204f, -0.839184f, -0.839163f, -0.839142f, -0.839122f, -0.839101f, -0.839081f, -0.83906f, -0.839039f, -0.839019f, -0.838998f, -0.838977f,
+-0.838957f, -0.838936f, -0.838915f, -0.838895f, -0.838874f, -0.838853f, -0.838832f, -0.838812f, -0.838791f, -0.83877f, -0.838749f, -0.838729f, -0.838708f, -0.838687f, -0.838666f, -0.838645f, -0.838624f, -0.838603f, -0.838583f, -0.838562f,
+-0.838541f, -0.83852f, -0.838499f, -0.838478f, -0.838457f, -0.838436f, -0.838415f, -0.838394f, -0.838373f, -0.838352f, -0.838331f, -0.83831f, -0.838289f, -0.838268f, -0.838247f, -0.838226f, -0.838205f, -0.838184f, -0.838163f, -0.838141f,
+-0.83812f, -0.838099f, -0.838078f, -0.838057f, -0.838036f, -0.838014f, -0.837993f, -0.837972f, -0.837951f, -0.83793f, -0.837908f, -0.837887f, -0.837866f, -0.837845f, -0.837823f, -0.837802f, -0.837781f, -0.837759f, -0.837738f, -0.837717f,
+-0.837695f, -0.837674f, -0.837653f, -0.837631f, -0.83761f, -0.837588f, -0.837567f, -0.837545f, -0.837524f, -0.837503f, -0.837481f, -0.83746f, -0.837438f, -0.837417f, -0.837395f, -0.837374f, -0.837352f, -0.83733f, -0.837309f, -0.837287f,
+-0.837266f, -0.837244f, -0.837222f, -0.837201f, -0.837179f, -0.837158f, -0.837136f, -0.837114f, -0.837093f, -0.837071f, -0.837049f, -0.837027f, -0.837006f, -0.836984f, -0.836962f, -0.836941f, -0.836919f, -0.836897f, -0.836875f, -0.836853f,
+-0.836832f, -0.83681f, -0.836788f, -0.836766f, -0.836744f, -0.836722f, -0.8367f, -0.836679f, -0.836657f, -0.836635f, -0.836613f, -0.836591f, -0.836569f, -0.836547f, -0.836525f, -0.836503f, -0.836481f, -0.836459f, -0.836437f, -0.836415f,
+-0.836393f, -0.836371f, -0.836349f, -0.836327f, -0.836305f, -0.836282f, -0.83626f, -0.836238f, -0.836216f, -0.836194f, -0.836172f, -0.83615f, -0.836127f, -0.836105f, -0.836083f, -0.836061f, -0.836039f, -0.836016f, -0.835994f, -0.835972f,
+-0.83595f, -0.835927f, -0.835905f, -0.835883f, -0.83586f, -0.835838f, -0.835816f, -0.835793f, -0.835771f, -0.835749f, -0.835726f, -0.835704f, -0.835682f, -0.835659f, -0.835637f, -0.835614f, -0.835592f, -0.835569f, -0.835547f, -0.835524f,
+-0.835502f, -0.835479f, -0.835457f, -0.835434f, -0.835412f, -0.835389f, -0.835367f, -0.835344f, -0.835322f, -0.835299f, -0.835276f, -0.835254f, -0.835231f, -0.835208f, -0.835186f, -0.835163f, -0.83514f, -0.835118f, -0.835095f, -0.835072f,
+-0.83505f, -0.835027f, -0.835004f, -0.834981f, -0.834959f, -0.834936f, -0.834913f, -0.83489f, -0.834867f, -0.834845f, -0.834822f, -0.834799f, -0.834776f, -0.834753f, -0.83473f, -0.834707f, -0.834684f, -0.834662f, -0.834639f, -0.834616f,
+-0.834593f, -0.83457f, -0.834547f, -0.834524f, -0.834501f, -0.834478f, -0.834455f, -0.834432f, -0.834409f, -0.834386f, -0.834363f, -0.83434f, -0.834316f, -0.834293f, -0.83427f, -0.834247f, -0.834224f, -0.834201f, -0.834178f, -0.834155f,
+-0.834131f, -0.834108f, -0.834085f, -0.834062f, -0.834039f, -0.834015f, -0.833992f, -0.833969f, -0.833946f, -0.833922f, -0.833899f, -0.833876f, -0.833852f, -0.833829f, -0.833806f, -0.833782f, -0.833759f, -0.833736f, -0.833712f, -0.833689f,
+-0.833665f, -0.833642f, -0.833619f, -0.833595f, -0.833572f, -0.833548f, -0.833525f, -0.833501f, -0.833478f, -0.833454f, -0.833431f, -0.833407f, -0.833384f, -0.83336f, -0.833337f, -0.833313f, -0.833289f, -0.833266f, -0.833242f, -0.833219f,
+-0.833195f, -0.833171f, -0.833148f, -0.833124f, -0.8331f, -0.833077f, -0.833053f, -0.833029f, -0.833006f, -0.832982f, -0.832958f, -0.832934f, -0.832911f, -0.832887f, -0.832863f, -0.832839f, -0.832815f, -0.832792f, -0.832768f, -0.832744f,
+-0.83272f, -0.832696f, -0.832672f, -0.832648f, -0.832625f, -0.832601f, -0.832577f, -0.832553f, -0.832529f, -0.832505f, -0.832481f, -0.832457f, -0.832433f, -0.832409f, -0.832385f, -0.832361f, -0.832337f, -0.832313f, -0.832289f, -0.832265f,
+-0.832241f, -0.832216f, -0.832192f, -0.832168f, -0.832144f, -0.83212f, -0.832096f, -0.832072f, -0.832048f, -0.832023f, -0.831999f, -0.831975f, -0.831951f, -0.831926f, -0.831902f, -0.831878f, -0.831854f, -0.831829f, -0.831805f, -0.831781f,
+-0.831757f, -0.831732f, -0.831708f, -0.831684f, -0.831659f, -0.831635f, -0.83161f, -0.831586f, -0.831562f, -0.831537f, -0.831513f, -0.831488f, -0.831464f, -0.83144f, -0.831415f, -0.831391f, -0.831366f, -0.831342f, -0.831317f, -0.831293f,
+-0.831268f, -0.831243f, -0.831219f, -0.831194f, -0.83117f, -0.831145f, -0.831121f, -0.831096f, -0.831071f, -0.831047f, -0.831022f, -0.830997f, -0.830973f, -0.830948f, -0.830923f, -0.830899f, -0.830874f, -0.830849f, -0.830824f, -0.8308f,
+-0.830775f, -0.83075f, -0.830725f, -0.830701f, -0.830676f, -0.830651f, -0.830626f, -0.830601f, -0.830576f, -0.830552f, -0.830527f, -0.830502f, -0.830477f, -0.830452f, -0.830427f, -0.830402f, -0.830377f, -0.830352f, -0.830327f, -0.830302f,
+-0.830277f, -0.830252f, -0.830227f, -0.830202f, -0.830177f, -0.830152f, -0.830127f, -0.830102f, -0.830077f, -0.830052f, -0.830027f, -0.830002f, -0.829977f, -0.829952f, -0.829926f, -0.829901f, -0.829876f, -0.829851f, -0.829826f, -0.829801f,
+-0.829775f, -0.82975f, -0.829725f, -0.8297f, -0.829674f, -0.829649f, -0.829624f, -0.829599f, -0.829573f, -0.829548f, -0.829523f, -0.829497f, -0.829472f, -0.829447f, -0.829421f, -0.829396f, -0.82937f, -0.829345f, -0.82932f, -0.829294f,
+-0.829269f, -0.829243f, -0.829218f, -0.829192f, -0.829167f, -0.829141f, -0.829116f, -0.82909f, -0.829065f, -0.829039f, -0.829014f, -0.828988f, -0.828963f, -0.828937f, -0.828911f, -0.828886f, -0.82886f, -0.828835f, -0.828809f, -0.828783f,
+-0.828758f, -0.828732f, -0.828706f, -0.828681f, -0.828655f, -0.828629f, -0.828603f, -0.828578f, -0.828552f, -0.828526f, -0.8285f, -0.828475f, -0.828449f, -0.828423f, -0.828397f, -0.828371f, -0.828345f, -0.82832f, -0.828294f, -0.828268f,
+-0.828242f, -0.828216f, -0.82819f, -0.828164f, -0.828138f, -0.828112f, -0.828086f, -0.82806f, -0.828035f, -0.828009f, -0.827983f, -0.827957f, -0.82793f, -0.827904f, -0.827878f, -0.827852f, -0.827826f, -0.8278f, -0.827774f, -0.827748f,
+-0.827722f, -0.827696f, -0.82767f, -0.827644f, -0.827617f, -0.827591f, -0.827565f, -0.827539f, -0.827513f, -0.827486f, -0.82746f, -0.827434f, -0.827408f, -0.827381f, -0.827355f, -0.827329f, -0.827303f, -0.827276f, -0.82725f, -0.827224f,
+-0.827197f, -0.827171f, -0.827145f, -0.827118f, -0.827092f, -0.827065f, -0.827039f, -0.827013f, -0.826986f, -0.82696f, -0.826933f, -0.826907f, -0.82688f, -0.826854f, -0.826827f, -0.826801f, -0.826774f, -0.826748f, -0.826721f, -0.826695f,
+-0.826668f, -0.826642f, -0.826615f, -0.826588f, -0.826562f, -0.826535f, -0.826509f, -0.826482f, -0.826455f, -0.826429f, -0.826402f, -0.826375f, -0.826349f, -0.826322f, -0.826295f, -0.826268f, -0.826242f, -0.826215f, -0.826188f, -0.826161f,
+-0.826135f, -0.826108f, -0.826081f, -0.826054f, -0.826027f, -0.826f, -0.825974f, -0.825947f, -0.82592f, -0.825893f, -0.825866f, -0.825839f, -0.825812f, -0.825785f, -0.825758f, -0.825731f, -0.825704f, -0.825677f, -0.82565f, -0.825623f,
+-0.825596f, -0.825569f, -0.825542f, -0.825515f, -0.825488f, -0.825461f, -0.825434f, -0.825407f, -0.82538f, -0.825353f, -0.825326f, -0.825299f, -0.825271f, -0.825244f, -0.825217f, -0.82519f, -0.825163f, -0.825136f, -0.825108f, -0.825081f,
+-0.825054f, -0.825027f, -0.824999f, -0.824972f, -0.824945f, -0.824918f, -0.82489f, -0.824863f, -0.824836f, -0.824808f, -0.824781f, -0.824754f, -0.824726f, -0.824699f, -0.824671f, -0.824644f, -0.824617f, -0.824589f, -0.824562f, -0.824534f,
+-0.824507f, -0.824479f, -0.824452f, -0.824424f, -0.824397f, -0.824369f, -0.824342f, -0.824314f, -0.824287f, -0.824259f, -0.824232f, -0.824204f, -0.824176f, -0.824149f, -0.824121f, -0.824094f, -0.824066f, -0.824038f, -0.824011f, -0.823983f,
+-0.823955f, -0.823928f, -0.8239f, -0.823872f, -0.823844f, -0.823817f, -0.823789f, -0.823761f, -0.823733f, -0.823706f, -0.823678f, -0.82365f, -0.823622f, -0.823594f, -0.823567f, -0.823539f, -0.823511f, -0.823483f, -0.823455f, -0.823427f,
+-0.823399f, -0.823371f, -0.823343f, -0.823315f, -0.823287f, -0.82326f, -0.823232f, -0.823204f, -0.823176f, -0.823148f, -0.82312f, -0.823091f, -0.823063f, -0.823035f, -0.823007f, -0.822979f, -0.822951f, -0.822923f, -0.822895f, -0.822867f,
+-0.822839f, -0.822811f, -0.822782f, -0.822754f, -0.822726f, -0.822698f, -0.82267f, -0.822641f, -0.822613f, -0.822585f, -0.822557f, -0.822529f, -0.8225f, -0.822472f, -0.822444f, -0.822415f, -0.822387f, -0.822359f, -0.82233f, -0.822302f,
+-0.822274f, -0.822245f, -0.822217f, -0.822189f, -0.82216f, -0.822132f, -0.822103f, -0.822075f, -0.822046f, -0.822018f, -0.82199f, -0.821961f, -0.821933f, -0.821904f, -0.821876f, -0.821847f, -0.821818f, -0.82179f, -0.821761f, -0.821733f,
+-0.821704f, -0.821676f, -0.821647f, -0.821618f, -0.82159f, -0.821561f, -0.821533f, -0.821504f, -0.821475f, -0.821447f, -0.821418f, -0.821389f, -0.82136f, -0.821332f, -0.821303f, -0.821274f, -0.821245f, -0.821217f, -0.821188f, -0.821159f,
+-0.82113f, -0.821101f, -0.821073f, -0.821044f, -0.821015f, -0.820986f, -0.820957f, -0.820928f, -0.820899f, -0.820871f, -0.820842f, -0.820813f, -0.820784f, -0.820755f, -0.820726f, -0.820697f, -0.820668f, -0.820639f, -0.82061f, -0.820581f,
+-0.820552f, -0.820523f, -0.820494f, -0.820465f, -0.820436f, -0.820407f, -0.820378f, -0.820348f, -0.820319f, -0.82029f, -0.820261f, -0.820232f, -0.820203f, -0.820174f, -0.820144f, -0.820115f, -0.820086f, -0.820057f, -0.820028f, -0.819998f,
+-0.819969f, -0.81994f, -0.81991f, -0.819881f, -0.819852f, -0.819823f, -0.819793f, -0.819764f, -0.819735f, -0.819705f, -0.819676f, -0.819647f, -0.819617f, -0.819588f, -0.819558f, -0.819529f, -0.8195f, -0.81947f, -0.819441f, -0.819411f,
+-0.819382f, -0.819352f, -0.819323f, -0.819293f, -0.819264f, -0.819234f, -0.819205f, -0.819175f, -0.819146f, -0.819116f, -0.819086f, -0.819057f, -0.819027f, -0.818998f, -0.818968f, -0.818938f, -0.818909f, -0.818879f, -0.818849f, -0.81882f,
+-0.81879f, -0.81876f, -0.81873f, -0.818701f, -0.818671f, -0.818641f, -0.818612f, -0.818582f, -0.818552f, -0.818522f, -0.818492f, -0.818463f, -0.818433f, -0.818403f, -0.818373f, -0.818343f, -0.818313f, -0.818283f, -0.818253f, -0.818224f,
+-0.818194f, -0.818164f, -0.818134f, -0.818104f, -0.818074f, -0.818044f, -0.818014f, -0.817984f, -0.817954f, -0.817924f, -0.817894f, -0.817864f, -0.817834f, -0.817804f, -0.817774f, -0.817744f, -0.817713f, -0.817683f, -0.817653f, -0.817623f,
+-0.817593f, -0.817563f, -0.817533f, -0.817502f, -0.817472f, -0.817442f, -0.817412f, -0.817382f, -0.817351f, -0.817321f, -0.817291f, -0.817261f, -0.81723f, -0.8172f, -0.81717f, -0.81714f, -0.817109f, -0.817079f, -0.817049f, -0.817018f,
+-0.816988f, -0.816957f, -0.816927f, -0.816897f, -0.816866f, -0.816836f, -0.816805f, -0.816775f, -0.816745f, -0.816714f, -0.816684f, -0.816653f, -0.816623f, -0.816592f, -0.816562f, -0.816531f, -0.816501f, -0.81647f, -0.816439f, -0.816409f,
+-0.816378f, -0.816348f, -0.816317f, -0.816286f, -0.816256f, -0.816225f, -0.816194f, -0.816164f, -0.816133f, -0.816102f, -0.816072f, -0.816041f, -0.81601f, -0.81598f, -0.815949f, -0.815918f, -0.815887f, -0.815857f, -0.815826f, -0.815795f,
+-0.815764f, -0.815733f, -0.815703f, -0.815672f, -0.815641f, -0.81561f, -0.815579f, -0.815548f, -0.815517f, -0.815486f, -0.815456f, -0.815425f, -0.815394f, -0.815363f, -0.815332f, -0.815301f, -0.81527f, -0.815239f, -0.815208f, -0.815177f,
+-0.815146f, -0.815115f, -0.815084f, -0.815053f, -0.815021f, -0.81499f, -0.814959f, -0.814928f, -0.814897f, -0.814866f, -0.814835f, -0.814804f, -0.814773f, -0.814741f, -0.81471f, -0.814679f, -0.814648f, -0.814617f, -0.814585f, -0.814554f,
+-0.814523f, -0.814492f, -0.81446f, -0.814429f, -0.814398f, -0.814366f, -0.814335f, -0.814304f, -0.814272f, -0.814241f, -0.81421f, -0.814178f, -0.814147f, -0.814116f, -0.814084f, -0.814053f, -0.814021f, -0.81399f, -0.813958f, -0.813927f,
+-0.813895f, -0.813864f, -0.813832f, -0.813801f, -0.813769f, -0.813738f, -0.813706f, -0.813675f, -0.813643f, -0.813612f, -0.81358f, -0.813549f, -0.813517f, -0.813485f, -0.813454f, -0.813422f, -0.81339f, -0.813359f, -0.813327f, -0.813295f,
+-0.813264f, -0.813232f, -0.8132f, -0.813169f, -0.813137f, -0.813105f, -0.813073f, -0.813042f, -0.81301f, -0.812978f, -0.812946f, -0.812914f, -0.812882f, -0.812851f, -0.812819f, -0.812787f, -0.812755f, -0.812723f, -0.812691f, -0.812659f,
+-0.812627f, -0.812596f, -0.812564f, -0.812532f, -0.8125f, -0.812468f, -0.812436f, -0.812404f, -0.812372f, -0.81234f, -0.812308f, -0.812276f, -0.812244f, -0.812212f, -0.81218f, -0.812147f, -0.812115f, -0.812083f, -0.812051f, -0.812019f,
+-0.811987f, -0.811955f, -0.811923f, -0.81189f, -0.811858f, -0.811826f, -0.811794f, -0.811762f, -0.811729f, -0.811697f, -0.811665f, -0.811633f, -0.8116f, -0.811568f, -0.811536f, -0.811503f, -0.811471f, -0.811439f, -0.811407f, -0.811374f,
+-0.811342f, -0.811309f, -0.811277f, -0.811245f, -0.811212f, -0.81118f, -0.811147f, -0.811115f, -0.811083f, -0.81105f, -0.811018f, -0.810985f, -0.810953f, -0.81092f, -0.810888f, -0.810855f, -0.810823f, -0.81079f, -0.810757f, -0.810725f,
+-0.810692f, -0.81066f, -0.810627f, -0.810595f, -0.810562f, -0.810529f, -0.810497f, -0.810464f, -0.810431f, -0.810399f, -0.810366f, -0.810333f, -0.810301f, -0.810268f, -0.810235f, -0.810202f, -0.81017f, -0.810137f, -0.810104f, -0.810071f,
+-0.810038f, -0.810006f, -0.809973f, -0.80994f, -0.809907f, -0.809874f, -0.809841f, -0.809809f, -0.809776f, -0.809743f, -0.80971f, -0.809677f, -0.809644f, -0.809611f, -0.809578f, -0.809545f, -0.809512f, -0.809479f, -0.809446f, -0.809413f,
+-0.80938f, -0.809347f, -0.809314f, -0.809281f, -0.809248f, -0.809215f, -0.809182f, -0.809149f, -0.809116f, -0.809083f, -0.809049f, -0.809016f, -0.808983f, -0.80895f, -0.808917f, -0.808884f, -0.80885f, -0.808817f, -0.808784f, -0.808751f,
+-0.808717f, -0.808684f, -0.808651f, -0.808618f, -0.808584f, -0.808551f, -0.808518f, -0.808485f, -0.808451f, -0.808418f, -0.808384f, -0.808351f, -0.808318f, -0.808284f, -0.808251f, -0.808218f, -0.808184f, -0.808151f, -0.808117f, -0.808084f,
+-0.80805f, -0.808017f, -0.807983f, -0.80795f, -0.807916f, -0.807883f, -0.807849f, -0.807816f, -0.807782f, -0.807749f, -0.807715f, -0.807682f, -0.807648f, -0.807614f, -0.807581f, -0.807547f, -0.807514f, -0.80748f, -0.807446f, -0.807413f,
+-0.807379f, -0.807345f, -0.807312f, -0.807278f, -0.807244f, -0.80721f, -0.807177f, -0.807143f, -0.807109f, -0.807075f, -0.807042f, -0.807008f, -0.806974f, -0.80694f, -0.806906f, -0.806872f, -0.806839f, -0.806805f, -0.806771f, -0.806737f,
+-0.806703f, -0.806669f, -0.806635f, -0.806601f, -0.806567f, -0.806533f, -0.806499f, -0.806465f, -0.806431f, -0.806397f, -0.806363f, -0.806329f, -0.806295f, -0.806261f, -0.806227f, -0.806193f, -0.806159f, -0.806125f, -0.806091f, -0.806057f,
+-0.806023f, -0.805989f, -0.805954f, -0.80592f, -0.805886f, -0.805852f, -0.805818f, -0.805784f, -0.805749f, -0.805715f, -0.805681f, -0.805647f, -0.805612f, -0.805578f, -0.805544f, -0.80551f, -0.805475f, -0.805441f, -0.805407f, -0.805372f,
+-0.805338f, -0.805304f, -0.805269f, -0.805235f, -0.805201f, -0.805166f, -0.805132f, -0.805097f, -0.805063f, -0.805029f, -0.804994f, -0.80496f, -0.804925f, -0.804891f, -0.804856f, -0.804822f, -0.804787f, -0.804753f, -0.804718f, -0.804684f,
+-0.804649f, -0.804614f, -0.80458f, -0.804545f, -0.804511f, -0.804476f, -0.804441f, -0.804407f, -0.804372f, -0.804337f, -0.804303f, -0.804268f, -0.804233f, -0.804199f, -0.804164f, -0.804129f, -0.804095f, -0.80406f, -0.804025f, -0.80399f,
+-0.803956f, -0.803921f, -0.803886f, -0.803851f, -0.803816f, -0.803781f, -0.803747f, -0.803712f, -0.803677f, -0.803642f, -0.803607f, -0.803572f, -0.803537f, -0.803502f, -0.803468f, -0.803433f, -0.803398f, -0.803363f, -0.803328f, -0.803293f,
+-0.803258f, -0.803223f, -0.803188f, -0.803153f, -0.803118f, -0.803083f, -0.803048f, -0.803012f, -0.802977f, -0.802942f, -0.802907f, -0.802872f, -0.802837f, -0.802802f, -0.802767f, -0.802731f, -0.802696f, -0.802661f, -0.802626f, -0.802591f,
+-0.802556f, -0.80252f, -0.802485f, -0.80245f, -0.802415f, -0.802379f, -0.802344f, -0.802309f, -0.802273f, -0.802238f, -0.802203f, -0.802167f, -0.802132f, -0.802097f, -0.802061f, -0.802026f, -0.801991f, -0.801955f, -0.80192f, -0.801884f,
+-0.801849f, -0.801813f, -0.801778f, -0.801743f, -0.801707f, -0.801672f, -0.801636f, -0.801601f, -0.801565f, -0.80153f, -0.801494f, -0.801458f, -0.801423f, -0.801387f, -0.801352f, -0.801316f, -0.801281f, -0.801245f, -0.801209f, -0.801174f,
+-0.801138f, -0.801102f, -0.801067f, -0.801031f, -0.800995f, -0.80096f, -0.800924f, -0.800888f, -0.800852f, -0.800817f, -0.800781f, -0.800745f, -0.800709f, -0.800674f, -0.800638f, -0.800602f, -0.800566f, -0.80053f, -0.800494f, -0.800459f,
+-0.800423f, -0.800387f, -0.800351f, -0.800315f, -0.800279f, -0.800243f, -0.800207f, -0.800171f, -0.800135f, -0.800099f, -0.800063f, -0.800027f, -0.799991f, -0.799955f, -0.799919f, -0.799883f, -0.799847f, -0.799811f, -0.799775f, -0.799739f,
+-0.799703f, -0.799667f, -0.799631f, -0.799595f, -0.799559f, -0.799522f, -0.799486f, -0.79945f, -0.799414f, -0.799378f, -0.799342f, -0.799305f, -0.799269f, -0.799233f, -0.799197f, -0.79916f, -0.799124f, -0.799088f, -0.799052f, -0.799015f,
+-0.798979f, -0.798943f, -0.798906f, -0.79887f, -0.798834f, -0.798797f, -0.798761f, -0.798725f, -0.798688f, -0.798652f, -0.798615f, -0.798579f, -0.798542f, -0.798506f, -0.79847f, -0.798433f, -0.798397f, -0.79836f, -0.798324f, -0.798287f,
+-0.798251f, -0.798214f, -0.798178f, -0.798141f, -0.798104f, -0.798068f, -0.798031f, -0.797995f, -0.797958f, -0.797921f, -0.797885f, -0.797848f, -0.797812f, -0.797775f, -0.797738f, -0.797701f, -0.797665f, -0.797628f, -0.797591f, -0.797555f,
+-0.797518f, -0.797481f, -0.797444f, -0.797408f, -0.797371f, -0.797334f, -0.797297f, -0.79726f, -0.797224f, -0.797187f, -0.79715f, -0.797113f, -0.797076f, -0.797039f, -0.797002f, -0.796966f, -0.796929f, -0.796892f, -0.796855f, -0.796818f,
+-0.796781f, -0.796744f, -0.796707f, -0.79667f, -0.796633f, -0.796596f, -0.796559f, -0.796522f, -0.796485f, -0.796448f, -0.796411f, -0.796374f, -0.796337f, -0.796299f, -0.796262f, -0.796225f, -0.796188f, -0.796151f, -0.796114f, -0.796077f,
+-0.796039f, -0.796002f, -0.795965f, -0.795928f, -0.795891f, -0.795853f, -0.795816f, -0.795779f, -0.795742f, -0.795704f, -0.795667f, -0.79563f, -0.795592f, -0.795555f, -0.795518f, -0.795481f, -0.795443f, -0.795406f, -0.795368f, -0.795331f,
+-0.795294f, -0.795256f, -0.795219f, -0.795181f, -0.795144f, -0.795107f, -0.795069f, -0.795032f, -0.794994f, -0.794957f, -0.794919f, -0.794882f, -0.794844f, -0.794807f, -0.794769f, -0.794732f, -0.794694f, -0.794656f, -0.794619f, -0.794581f,
+-0.794544f, -0.794506f, -0.794468f, -0.794431f, -0.794393f, -0.794355f, -0.794318f, -0.79428f, -0.794242f, -0.794205f, -0.794167f, -0.794129f, -0.794091f, -0.794054f, -0.794016f, -0.793978f, -0.79394f, -0.793903f, -0.793865f, -0.793827f,
+-0.793789f, -0.793751f, -0.793713f, -0.793676f, -0.793638f, -0.7936f, -0.793562f, -0.793524f, -0.793486f, -0.793448f, -0.79341f, -0.793372f, -0.793334f, -0.793296f, -0.793259f, -0.793221f, -0.793183f, -0.793145f, -0.793106f, -0.793068f,
+-0.79303f, -0.792992f, -0.792954f, -0.792916f, -0.792878f, -0.79284f, -0.792802f, -0.792764f, -0.792726f, -0.792688f, -0.792649f, -0.792611f, -0.792573f, -0.792535f, -0.792497f, -0.792459f, -0.79242f, -0.792382f, -0.792344f, -0.792306f,
+-0.792267f, -0.792229f, -0.792191f, -0.792153f, -0.792114f, -0.792076f, -0.792038f, -0.791999f, -0.791961f, -0.791923f, -0.791884f, -0.791846f, -0.791807f, -0.791769f, -0.791731f, -0.791692f, -0.791654f, -0.791615f, -0.791577f, -0.791538f,
+-0.7915f, -0.791462f, -0.791423f, -0.791385f, -0.791346f, -0.791307f, -0.791269f, -0.79123f, -0.791192f, -0.791153f, -0.791115f, -0.791076f, -0.791037f, -0.790999f, -0.79096f, -0.790922f, -0.790883f, -0.790844f, -0.790806f, -0.790767f,
+-0.790728f, -0.79069f, -0.790651f, -0.790612f, -0.790573f, -0.790535f, -0.790496f, -0.790457f, -0.790418f, -0.79038f, -0.790341f, -0.790302f, -0.790263f, -0.790224f, -0.790186f, -0.790147f, -0.790108f, -0.790069f, -0.79003f, -0.789991f,
+-0.789952f, -0.789913f, -0.789874f, -0.789836f, -0.789797f, -0.789758f, -0.789719f, -0.78968f, -0.789641f, -0.789602f, -0.789563f, -0.789524f, -0.789485f, -0.789446f, -0.789407f, -0.789367f, -0.789328f, -0.789289f, -0.78925f, -0.789211f,
+-0.789172f, -0.789133f, -0.789094f, -0.789055f, -0.789015f, -0.788976f, -0.788937f, -0.788898f, -0.788859f, -0.788819f, -0.78878f, -0.788741f, -0.788702f, -0.788662f, -0.788623f, -0.788584f, -0.788545f, -0.788505f, -0.788466f, -0.788427f,
+-0.788387f, -0.788348f, -0.788309f, -0.788269f, -0.78823f, -0.788191f, -0.788151f, -0.788112f, -0.788072f, -0.788033f, -0.787993f, -0.787954f, -0.787915f, -0.787875f, -0.787836f, -0.787796f, -0.787757f, -0.787717f, -0.787678f, -0.787638f,
+-0.787598f, -0.787559f, -0.787519f, -0.78748f, -0.78744f, -0.787401f, -0.787361f, -0.787321f, -0.787282f, -0.787242f, -0.787202f, -0.787163f, -0.787123f, -0.787083f, -0.787044f, -0.787004f, -0.786964f, -0.786924f, -0.786885f, -0.786845f,
+-0.786805f, -0.786765f, -0.786726f, -0.786686f, -0.786646f, -0.786606f, -0.786566f, -0.786527f, -0.786487f, -0.786447f, -0.786407f, -0.786367f, -0.786327f, -0.786287f, -0.786247f, -0.786208f, -0.786168f, -0.786128f, -0.786088f, -0.786048f,
+-0.786008f, -0.785968f, -0.785928f, -0.785888f, -0.785848f, -0.785808f, -0.785768f, -0.785728f, -0.785688f, -0.785647f, -0.785607f, -0.785567f, -0.785527f, -0.785487f, -0.785447f, -0.785407f, -0.785367f, -0.785326f, -0.785286f, -0.785246f,
+-0.785206f, -0.785166f, -0.785126f, -0.785085f, -0.785045f, -0.785005f, -0.784965f, -0.784924f, -0.784884f, -0.784844f, -0.784803f, -0.784763f, -0.784723f, -0.784682f, -0.784642f, -0.784602f, -0.784561f, -0.784521f, -0.784481f, -0.78444f,
+-0.7844f, -0.784359f, -0.784319f, -0.784279f, -0.784238f, -0.784198f, -0.784157f, -0.784117f, -0.784076f, -0.784036f, -0.783995f, -0.783955f, -0.783914f, -0.783874f, -0.783833f, -0.783793f, -0.783752f, -0.783711f, -0.783671f, -0.78363f,
+-0.78359f, -0.783549f, -0.783508f, -0.783468f, -0.783427f, -0.783386f, -0.783346f, -0.783305f, -0.783264f, -0.783223f, -0.783183f, -0.783142f, -0.783101f, -0.783061f, -0.78302f, -0.782979f, -0.782938f, -0.782897f, -0.782857f, -0.782816f,
+-0.782775f, -0.782734f, -0.782693f, -0.782652f, -0.782611f, -0.782571f, -0.78253f, -0.782489f, -0.782448f, -0.782407f, -0.782366f, -0.782325f, -0.782284f, -0.782243f, -0.782202f, -0.782161f, -0.78212f, -0.782079f, -0.782038f, -0.781997f,
+-0.781956f, -0.781915f, -0.781874f, -0.781833f, -0.781792f, -0.781751f, -0.78171f, -0.781668f, -0.781627f, -0.781586f, -0.781545f, -0.781504f, -0.781463f, -0.781421f, -0.78138f, -0.781339f, -0.781298f, -0.781257f, -0.781215f, -0.781174f,
+-0.781133f, -0.781092f, -0.78105f, -0.781009f, -0.780968f, -0.780926f, -0.780885f, -0.780844f, -0.780802f, -0.780761f, -0.78072f, -0.780678f, -0.780637f, -0.780596f, -0.780554f, -0.780513f, -0.780471f, -0.78043f, -0.780388f, -0.780347f,
+-0.780305f, -0.780264f, -0.780223f, -0.780181f, -0.780139f, -0.780098f, -0.780056f, -0.780015f, -0.779973f, -0.779932f, -0.77989f, -0.779849f, -0.779807f, -0.779765f, -0.779724f, -0.779682f, -0.77964f, -0.779599f, -0.779557f, -0.779516f,
+-0.779474f, -0.779432f, -0.77939f, -0.779349f, -0.779307f, -0.779265f, -0.779223f, -0.779182f, -0.77914f, -0.779098f, -0.779056f, -0.779015f, -0.778973f, -0.778931f, -0.778889f, -0.778847f, -0.778805f, -0.778764f, -0.778722f, -0.77868f,
+-0.778638f, -0.778596f, -0.778554f, -0.778512f, -0.77847f, -0.778428f, -0.778386f, -0.778344f, -0.778302f, -0.77826f, -0.778218f, -0.778176f, -0.778134f, -0.778092f, -0.77805f, -0.778008f, -0.777966f, -0.777924f, -0.777882f, -0.77784f,
+-0.777798f, -0.777756f, -0.777713f, -0.777671f, -0.777629f, -0.777587f, -0.777545f, -0.777503f, -0.77746f, -0.777418f, -0.777376f, -0.777334f, -0.777292f, -0.777249f, -0.777207f, -0.777165f, -0.777123f, -0.77708f, -0.777038f, -0.776996f,
+-0.776953f, -0.776911f, -0.776869f, -0.776826f, -0.776784f, -0.776742f, -0.776699f, -0.776657f, -0.776614f, -0.776572f, -0.77653f, -0.776487f, -0.776445f, -0.776402f, -0.77636f, -0.776317f, -0.776275f, -0.776232f, -0.77619f, -0.776147f,
+-0.776105f, -0.776062f, -0.77602f, -0.775977f, -0.775934f, -0.775892f, -0.775849f, -0.775807f, -0.775764f, -0.775721f, -0.775679f, -0.775636f, -0.775593f, -0.775551f, -0.775508f, -0.775465f, -0.775423f, -0.77538f, -0.775337f, -0.775295f,
+-0.775252f, -0.775209f, -0.775166f, -0.775124f, -0.775081f, -0.775038f, -0.774995f, -0.774952f, -0.774909f, -0.774867f, -0.774824f, -0.774781f, -0.774738f, -0.774695f, -0.774652f, -0.774609f, -0.774566f, -0.774524f, -0.774481f, -0.774438f,
+-0.774395f, -0.774352f, -0.774309f, -0.774266f, -0.774223f, -0.77418f, -0.774137f, -0.774094f, -0.774051f, -0.774008f, -0.773965f, -0.773921f, -0.773878f, -0.773835f, -0.773792f, -0.773749f, -0.773706f, -0.773663f, -0.77362f, -0.773577f,
+-0.773533f, -0.77349f, -0.773447f, -0.773404f, -0.773361f, -0.773317f, -0.773274f, -0.773231f, -0.773188f, -0.773144f, -0.773101f, -0.773058f, -0.773015f, -0.772971f, -0.772928f, -0.772885f, -0.772841f, -0.772798f, -0.772755f, -0.772711f,
+-0.772668f, -0.772624f, -0.772581f, -0.772538f, -0.772494f, -0.772451f, -0.772407f, -0.772364f, -0.77232f, -0.772277f, -0.772233f, -0.77219f, -0.772146f, -0.772103f, -0.772059f, -0.772016f, -0.771972f, -0.771929f, -0.771885f, -0.771842f,
+-0.771798f, -0.771754f, -0.771711f, -0.771667f, -0.771624f, -0.77158f, -0.771536f, -0.771493f, -0.771449f, -0.771405f, -0.771362f, -0.771318f, -0.771274f, -0.77123f, -0.771187f, -0.771143f, -0.771099f, -0.771055f, -0.771012f, -0.770968f,
+-0.770924f, -0.77088f, -0.770836f, -0.770793f, -0.770749f, -0.770705f, -0.770661f, -0.770617f, -0.770573f, -0.770529f, -0.770485f, -0.770442f, -0.770398f, -0.770354f, -0.77031f, -0.770266f, -0.770222f, -0.770178f, -0.770134f, -0.77009f,
+-0.770046f, -0.770002f, -0.769958f, -0.769914f, -0.76987f, -0.769826f, -0.769782f, -0.769738f, -0.769693f, -0.769649f, -0.769605f, -0.769561f, -0.769517f, -0.769473f, -0.769429f, -0.769384f, -0.76934f, -0.769296f, -0.769252f, -0.769208f,
+-0.769163f, -0.769119f, -0.769075f, -0.769031f, -0.768986f, -0.768942f, -0.768898f, -0.768854f, -0.768809f, -0.768765f, -0.768721f, -0.768676f, -0.768632f, -0.768588f, -0.768543f, -0.768499f, -0.768455f, -0.76841f, -0.768366f, -0.768321f,
+-0.768277f, -0.768232f, -0.768188f, -0.768144f, -0.768099f, -0.768055f, -0.76801f, -0.767966f, -0.767921f, -0.767877f, -0.767832f, -0.767787f, -0.767743f, -0.767698f, -0.767654f, -0.767609f, -0.767565f, -0.76752f, -0.767475f, -0.767431f,
+-0.767386f, -0.767341f, -0.767297f, -0.767252f, -0.767207f, -0.767163f, -0.767118f, -0.767073f, -0.767029f, -0.766984f, -0.766939f, -0.766894f, -0.76685f, -0.766805f, -0.76676f, -0.766715f, -0.76667f, -0.766626f, -0.766581f, -0.766536f,
+-0.766491f, -0.766446f, -0.766401f, -0.766357f, -0.766312f, -0.766267f, -0.766222f, -0.766177f, -0.766132f, -0.766087f, -0.766042f, -0.765997f, -0.765952f, -0.765907f, -0.765862f, -0.765817f, -0.765772f, -0.765727f, -0.765682f, -0.765637f,
+-0.765592f, -0.765547f, -0.765502f, -0.765457f, -0.765412f, -0.765367f, -0.765321f, -0.765276f, -0.765231f, -0.765186f, -0.765141f, -0.765096f, -0.76505f, -0.765005f, -0.76496f, -0.764915f, -0.76487f, -0.764824f, -0.764779f, -0.764734f,
+-0.764689f, -0.764643f, -0.764598f, -0.764553f, -0.764507f, -0.764462f, -0.764417f, -0.764371f, -0.764326f, -0.764281f, -0.764235f, -0.76419f, -0.764145f, -0.764099f, -0.764054f, -0.764008f, -0.763963f, -0.763918f, -0.763872f, -0.763827f,
+-0.763781f, -0.763736f, -0.76369f, -0.763645f, -0.763599f, -0.763554f, -0.763508f, -0.763463f, -0.763417f, -0.763371f, -0.763326f, -0.76328f, -0.763235f, -0.763189f, -0.763143f, -0.763098f, -0.763052f, -0.763006f, -0.762961f, -0.762915f,
+-0.762869f, -0.762824f, -0.762778f, -0.762732f, -0.762687f, -0.762641f, -0.762595f, -0.762549f, -0.762504f, -0.762458f, -0.762412f, -0.762366f, -0.76232f, -0.762275f, -0.762229f, -0.762183f, -0.762137f, -0.762091f, -0.762045f, -0.761999f,
+-0.761954f, -0.761908f, -0.761862f, -0.761816f, -0.76177f, -0.761724f, -0.761678f, -0.761632f, -0.761586f, -0.76154f, -0.761494f, -0.761448f, -0.761402f, -0.761356f, -0.76131f, -0.761264f, -0.761218f, -0.761172f, -0.761126f, -0.76108f,
+-0.761034f, -0.760987f, -0.760941f, -0.760895f, -0.760849f, -0.760803f, -0.760757f, -0.760711f, -0.760664f, -0.760618f, -0.760572f, -0.760526f, -0.76048f, -0.760433f, -0.760387f, -0.760341f, -0.760295f, -0.760248f, -0.760202f, -0.760156f,
+-0.760109f, -0.760063f, -0.760017f, -0.75997f, -0.759924f, -0.759878f, -0.759831f, -0.759785f, -0.759739f, -0.759692f, -0.759646f, -0.759599f, -0.759553f, -0.759507f, -0.75946f, -0.759414f, -0.759367f, -0.759321f, -0.759274f, -0.759228f,
+-0.759181f, -0.759135f, -0.759088f, -0.759042f, -0.758995f, -0.758948f, -0.758902f, -0.758855f, -0.758809f, -0.758762f, -0.758715f, -0.758669f, -0.758622f, -0.758576f, -0.758529f, -0.758482f, -0.758435f, -0.758389f, -0.758342f, -0.758295f,
+-0.758249f, -0.758202f, -0.758155f, -0.758108f, -0.758062f, -0.758015f, -0.757968f, -0.757921f, -0.757875f, -0.757828f, -0.757781f, -0.757734f, -0.757687f, -0.75764f, -0.757593f, -0.757547f, -0.7575f, -0.757453f, -0.757406f, -0.757359f,
+-0.757312f, -0.757265f, -0.757218f, -0.757171f, -0.757124f, -0.757077f, -0.75703f, -0.756983f, -0.756936f, -0.756889f, -0.756842f, -0.756795f, -0.756748f, -0.756701f, -0.756654f, -0.756607f, -0.75656f, -0.756513f, -0.756466f, -0.756418f,
+-0.756371f, -0.756324f, -0.756277f, -0.75623f, -0.756183f, -0.756136f, -0.756088f, -0.756041f, -0.755994f, -0.755947f, -0.755899f, -0.755852f, -0.755805f, -0.755758f, -0.75571f, -0.755663f, -0.755616f, -0.755568f, -0.755521f, -0.755474f,
+-0.755426f, -0.755379f, -0.755332f, -0.755284f, -0.755237f, -0.75519f, -0.755142f, -0.755095f, -0.755047f, -0.755f, -0.754953f, -0.754905f, -0.754858f, -0.75481f, -0.754763f, -0.754715f, -0.754668f, -0.75462f, -0.754573f, -0.754525f,
+-0.754477f, -0.75443f, -0.754382f, -0.754335f, -0.754287f, -0.75424f, -0.754192f, -0.754144f, -0.754097f, -0.754049f, -0.754001f, -0.753954f, -0.753906f, -0.753858f, -0.753811f, -0.753763f, -0.753715f, -0.753668f, -0.75362f, -0.753572f,
+-0.753524f, -0.753477f, -0.753429f, -0.753381f, -0.753333f, -0.753285f, -0.753238f, -0.75319f, -0.753142f, -0.753094f, -0.753046f, -0.752998f, -0.752951f, -0.752903f, -0.752855f, -0.752807f, -0.752759f, -0.752711f, -0.752663f, -0.752615f,
+-0.752567f, -0.752519f, -0.752471f, -0.752423f, -0.752375f, -0.752327f, -0.752279f, -0.752231f, -0.752183f, -0.752135f, -0.752087f, -0.752039f, -0.751991f, -0.751943f, -0.751895f, -0.751847f, -0.751798f, -0.75175f, -0.751702f, -0.751654f,
+-0.751606f, -0.751558f, -0.751509f, -0.751461f, -0.751413f, -0.751365f, -0.751317f, -0.751268f, -0.75122f, -0.751172f, -0.751124f, -0.751075f, -0.751027f, -0.750979f, -0.75093f, -0.750882f, -0.750834f, -0.750785f, -0.750737f, -0.750689f,
+-0.75064f, -0.750592f, -0.750544f, -0.750495f, -0.750447f, -0.750398f, -0.75035f, -0.750302f, -0.750253f, -0.750205f, -0.750156f, -0.750108f, -0.750059f, -0.750011f, -0.749962f, -0.749914f, -0.749865f, -0.749817f, -0.749768f, -0.749719f,
+-0.749671f, -0.749622f, -0.749574f, -0.749525f, -0.749476f, -0.749428f, -0.749379f, -0.749331f, -0.749282f, -0.749233f, -0.749185f, -0.749136f, -0.749087f, -0.749038f, -0.74899f, -0.748941f, -0.748892f, -0.748844f, -0.748795f, -0.748746f,
+-0.748697f, -0.748648f, -0.7486f, -0.748551f, -0.748502f, -0.748453f, -0.748404f, -0.748355f, -0.748307f, -0.748258f, -0.748209f, -0.74816f, -0.748111f, -0.748062f, -0.748013f, -0.747964f, -0.747915f, -0.747866f, -0.747817f, -0.747768f,
+-0.747719f, -0.74767f, -0.747621f, -0.747572f, -0.747523f, -0.747474f, -0.747425f, -0.747376f, -0.747327f, -0.747278f, -0.747229f, -0.74718f, -0.747131f, -0.747082f, -0.747033f, -0.746984f, -0.746934f, -0.746885f, -0.746836f, -0.746787f,
+-0.746738f, -0.746688f, -0.746639f, -0.74659f, -0.746541f, -0.746492f, -0.746442f, -0.746393f, -0.746344f, -0.746295f, -0.746245f, -0.746196f, -0.746147f, -0.746097f, -0.746048f, -0.745999f, -0.745949f, -0.7459f, -0.745851f, -0.745801f,
+-0.745752f, -0.745702f, -0.745653f, -0.745604f, -0.745554f, -0.745505f, -0.745455f, -0.745406f, -0.745356f, -0.745307f, -0.745257f, -0.745208f, -0.745158f, -0.745109f, -0.745059f, -0.74501f, -0.74496f, -0.744911f, -0.744861f, -0.744811f,
+-0.744762f, -0.744712f, -0.744663f, -0.744613f, -0.744563f, -0.744514f, -0.744464f, -0.744414f, -0.744365f, -0.744315f, -0.744265f, -0.744216f, -0.744166f, -0.744116f, -0.744066f, -0.744017f, -0.743967f, -0.743917f, -0.743867f, -0.743818f,
+-0.743768f, -0.743718f, -0.743668f, -0.743618f, -0.743568f, -0.743519f, -0.743469f, -0.743419f, -0.743369f, -0.743319f, -0.743269f, -0.743219f, -0.743169f, -0.743119f, -0.74307f, -0.74302f, -0.74297f, -0.74292f, -0.74287f, -0.74282f,
+-0.74277f, -0.74272f, -0.74267f, -0.74262f, -0.74257f, -0.74252f, -0.742469f, -0.742419f, -0.742369f, -0.742319f, -0.742269f, -0.742219f, -0.742169f, -0.742119f, -0.742069f, -0.742018f, -0.741968f, -0.741918f, -0.741868f, -0.741818f,
+-0.741767f, -0.741717f, -0.741667f, -0.741617f, -0.741567f, -0.741516f, -0.741466f, -0.741416f, -0.741365f, -0.741315f, -0.741265f, -0.741215f, -0.741164f, -0.741114f, -0.741064f, -0.741013f, -0.740963f, -0.740912f, -0.740862f, -0.740812f,
+-0.740761f, -0.740711f, -0.74066f, -0.74061f, -0.74056f, -0.740509f, -0.740459f, -0.740408f, -0.740358f, -0.740307f, -0.740257f, -0.740206f, -0.740156f, -0.740105f, -0.740055f, -0.740004f, -0.739953f, -0.739903f, -0.739852f, -0.739802f,
+-0.739751f, -0.7397f, -0.73965f, -0.739599f, -0.739548f, -0.739498f, -0.739447f, -0.739396f, -0.739346f, -0.739295f, -0.739244f, -0.739194f, -0.739143f, -0.739092f, -0.739041f, -0.738991f, -0.73894f, -0.738889f, -0.738838f, -0.738788f,
+-0.738737f, -0.738686f, -0.738635f, -0.738584f, -0.738533f, -0.738482f, -0.738432f, -0.738381f, -0.73833f, -0.738279f, -0.738228f, -0.738177f, -0.738126f, -0.738075f, -0.738024f, -0.737973f, -0.737922f, -0.737871f, -0.73782f, -0.737769f,
+-0.737718f, -0.737667f, -0.737616f, -0.737565f, -0.737514f, -0.737463f, -0.737412f, -0.737361f, -0.73731f, -0.737259f, -0.737208f, -0.737157f, -0.737105f, -0.737054f, -0.737003f, -0.736952f, -0.736901f, -0.73685f, -0.736798f, -0.736747f,
+-0.736696f, -0.736645f, -0.736594f, -0.736542f, -0.736491f, -0.73644f, -0.736388f, -0.736337f, -0.736286f, -0.736235f, -0.736183f, -0.736132f, -0.736081f, -0.736029f, -0.735978f, -0.735927f, -0.735875f, -0.735824f, -0.735772f, -0.735721f,
+-0.73567f, -0.735618f, -0.735567f, -0.735515f, -0.735464f, -0.735412f, -0.735361f, -0.735309f, -0.735258f, -0.735206f, -0.735155f, -0.735103f, -0.735052f, -0.735f, -0.734949f, -0.734897f, -0.734846f, -0.734794f, -0.734742f, -0.734691f,
+-0.734639f, -0.734588f, -0.734536f, -0.734484f, -0.734433f, -0.734381f, -0.734329f, -0.734278f, -0.734226f, -0.734174f, -0.734122f, -0.734071f, -0.734019f, -0.733967f, -0.733915f, -0.733864f, -0.733812f, -0.73376f, -0.733708f, -0.733657f,
+-0.733605f, -0.733553f, -0.733501f, -0.733449f, -0.733397f, -0.733345f, -0.733294f, -0.733242f, -0.73319f, -0.733138f, -0.733086f, -0.733034f, -0.732982f, -0.73293f, -0.732878f, -0.732826f, -0.732774f, -0.732722f, -0.73267f, -0.732618f,
+-0.732566f, -0.732514f, -0.732462f, -0.73241f, -0.732358f, -0.732306f, -0.732254f, -0.732202f, -0.73215f, -0.732098f, -0.732046f, -0.731993f, -0.731941f, -0.731889f, -0.731837f, -0.731785f, -0.731733f, -0.73168f, -0.731628f, -0.731576f,
+-0.731524f, -0.731472f, -0.731419f, -0.731367f, -0.731315f, -0.731263f, -0.73121f, -0.731158f, -0.731106f, -0.731053f, -0.731001f, -0.730949f, -0.730896f, -0.730844f, -0.730792f, -0.730739f, -0.730687f, -0.730635f, -0.730582f, -0.73053f,
+-0.730477f, -0.730425f, -0.730372f, -0.73032f, -0.730268f, -0.730215f, -0.730163f, -0.73011f, -0.730058f, -0.730005f, -0.729953f, -0.7299f, -0.729848f, -0.729795f, -0.729742f, -0.72969f, -0.729637f, -0.729585f, -0.729532f, -0.729479f,
+-0.729427f, -0.729374f, -0.729322f, -0.729269f, -0.729216f, -0.729164f, -0.729111f, -0.729058f, -0.729006f, -0.728953f, -0.7289f, -0.728847f, -0.728795f, -0.728742f, -0.728689f, -0.728636f, -0.728584f, -0.728531f, -0.728478f, -0.728425f,
+-0.728372f, -0.72832f, -0.728267f, -0.728214f, -0.728161f, -0.728108f, -0.728055f, -0.728002f, -0.72795f, -0.727897f, -0.727844f, -0.727791f, -0.727738f, -0.727685f, -0.727632f, -0.727579f, -0.727526f, -0.727473f, -0.72742f, -0.727367f,
+-0.727314f, -0.727261f, -0.727208f, -0.727155f, -0.727102f, -0.727049f, -0.726996f, -0.726943f, -0.726889f, -0.726836f, -0.726783f, -0.72673f, -0.726677f, -0.726624f, -0.726571f, -0.726518f, -0.726464f, -0.726411f, -0.726358f, -0.726305f,
+-0.726252f, -0.726198f, -0.726145f, -0.726092f, -0.726039f, -0.725985f, -0.725932f, -0.725879f, -0.725825f, -0.725772f, -0.725719f, -0.725666f, -0.725612f, -0.725559f, -0.725506f, -0.725452f, -0.725399f, -0.725345f, -0.725292f, -0.725239f,
+-0.725185f, -0.725132f, -0.725078f, -0.725025f, -0.724971f, -0.724918f, -0.724865f, -0.724811f, -0.724758f, -0.724704f, -0.724651f, -0.724597f, -0.724543f, -0.72449f, -0.724436f, -0.724383f, -0.724329f, -0.724276f, -0.724222f, -0.724168f,
+-0.724115f, -0.724061f, -0.724008f, -0.723954f, -0.7239f, -0.723847f, -0.723793f, -0.723739f, -0.723686f, -0.723632f, -0.723578f, -0.723524f, -0.723471f, -0.723417f, -0.723363f, -0.723309f, -0.723256f, -0.723202f, -0.723148f, -0.723094f,
+-0.723041f, -0.722987f, -0.722933f, -0.722879f, -0.722825f, -0.722771f, -0.722717f, -0.722664f, -0.72261f, -0.722556f, -0.722502f, -0.722448f, -0.722394f, -0.72234f, -0.722286f, -0.722232f, -0.722178f, -0.722124f, -0.72207f, -0.722016f,
+-0.721962f, -0.721908f, -0.721854f, -0.7218f, -0.721746f, -0.721692f, -0.721638f, -0.721584f, -0.72153f, -0.721476f, -0.721422f, -0.721368f, -0.721313f, -0.721259f, -0.721205f, -0.721151f, -0.721097f, -0.721043f, -0.720988f, -0.720934f,
+-0.72088f, -0.720826f, -0.720772f, -0.720717f, -0.720663f, -0.720609f, -0.720555f, -0.7205f, -0.720446f, -0.720392f, -0.720337f, -0.720283f, -0.720229f, -0.720174f, -0.72012f, -0.720066f, -0.720011f, -0.719957f, -0.719903f, -0.719848f,
+-0.719794f, -0.719739f, -0.719685f, -0.719631f, -0.719576f, -0.719522f, -0.719467f, -0.719413f, -0.719358f, -0.719304f, -0.719249f, -0.719195f, -0.71914f, -0.719086f, -0.719031f, -0.718977f, -0.718922f, -0.718868f, -0.718813f, -0.718758f,
+-0.718704f, -0.718649f, -0.718595f, -0.71854f, -0.718485f, -0.718431f, -0.718376f, -0.718321f, -0.718267f, -0.718212f, -0.718157f, -0.718103f, -0.718048f, -0.717993f, -0.717938f, -0.717884f, -0.717829f, -0.717774f, -0.717719f, -0.717665f,
+-0.71761f, -0.717555f, -0.7175f, -0.717445f, -0.71739f, -0.717336f, -0.717281f, -0.717226f, -0.717171f, -0.717116f, -0.717061f, -0.717006f, -0.716951f, -0.716897f, -0.716842f, -0.716787f, -0.716732f, -0.716677f, -0.716622f, -0.716567f,
+-0.716512f, -0.716457f, -0.716402f, -0.716347f, -0.716292f, -0.716237f, -0.716182f, -0.716127f, -0.716072f, -0.716016f, -0.715961f, -0.715906f, -0.715851f, -0.715796f, -0.715741f, -0.715686f, -0.715631f, -0.715575f, -0.71552f, -0.715465f,
+-0.71541f, -0.715355f, -0.7153f, -0.715244f, -0.715189f, -0.715134f, -0.715079f, -0.715023f, -0.714968f, -0.714913f, -0.714858f, -0.714802f, -0.714747f, -0.714692f, -0.714636f, -0.714581f, -0.714526f, -0.71447f, -0.714415f, -0.71436f,
+-0.714304f, -0.714249f, -0.714193f, -0.714138f, -0.714083f, -0.714027f, -0.713972f, -0.713916f, -0.713861f, -0.713805f, -0.71375f, -0.713694f, -0.713639f, -0.713583f, -0.713528f, -0.713472f, -0.713417f, -0.713361f, -0.713306f, -0.71325f,
+-0.713194f, -0.713139f, -0.713083f, -0.713028f, -0.712972f, -0.712916f, -0.712861f, -0.712805f, -0.712749f, -0.712694f, -0.712638f, -0.712582f, -0.712527f, -0.712471f, -0.712415f, -0.71236f, -0.712304f, -0.712248f, -0.712192f, -0.712137f,
+-0.712081f, -0.712025f, -0.711969f, -0.711913f, -0.711858f, -0.711802f, -0.711746f, -0.71169f, -0.711634f, -0.711578f, -0.711523f, -0.711467f, -0.711411f, -0.711355f, -0.711299f, -0.711243f, -0.711187f, -0.711131f, -0.711075f, -0.711019f,
+-0.710963f, -0.710907f, -0.710851f, -0.710795f, -0.710739f, -0.710683f, -0.710627f, -0.710571f, -0.710515f, -0.710459f, -0.710403f, -0.710347f, -0.710291f, -0.710235f, -0.710179f, -0.710123f, -0.710067f, -0.71001f, -0.709954f, -0.709898f,
+-0.709842f, -0.709786f, -0.70973f, -0.709673f, -0.709617f, -0.709561f, -0.709505f, -0.709449f, -0.709392f, -0.709336f, -0.70928f, -0.709223f, -0.709167f, -0.709111f, -0.709055f, -0.708998f, -0.708942f, -0.708886f, -0.708829f, -0.708773f,
+-0.708717f, -0.70866f, -0.708604f, -0.708548f, -0.708491f, -0.708435f, -0.708378f, -0.708322f, -0.708265f, -0.708209f, -0.708153f, -0.708096f, -0.70804f, -0.707983f, -0.707927f, -0.70787f, -0.707814f, -0.707757f, -0.707701f, -0.707644f,
+-0.707587f, -0.707531f, -0.707474f, -0.707418f, -0.707361f, -0.707305f, -0.707248f, -0.707191f, -0.707135f, -0.707078f, -0.707021f, -0.706965f, -0.706908f, -0.706851f, -0.706795f, -0.706738f, -0.706681f, -0.706625f, -0.706568f, -0.706511f,
+-0.706454f, -0.706398f, -0.706341f, -0.706284f, -0.706227f, -0.706171f, -0.706114f, -0.706057f, -0.706f, -0.705943f, -0.705886f, -0.70583f, -0.705773f, -0.705716f, -0.705659f, -0.705602f, -0.705545f, -0.705488f, -0.705431f, -0.705374f,
+-0.705318f, -0.705261f, -0.705204f, -0.705147f, -0.70509f, -0.705033f, -0.704976f, -0.704919f, -0.704862f, -0.704805f, -0.704748f, -0.704691f, -0.704634f, -0.704576f, -0.704519f, -0.704462f, -0.704405f, -0.704348f, -0.704291f, -0.704234f,
+-0.704177f, -0.70412f, -0.704062f, -0.704005f, -0.703948f, -0.703891f, -0.703834f, -0.703777f, -0.703719f, -0.703662f, -0.703605f, -0.703548f, -0.70349f, -0.703433f, -0.703376f, -0.703319f, -0.703261f, -0.703204f, -0.703147f, -0.703089f,
+-0.703032f, -0.702975f, -0.702917f, -0.70286f, -0.702803f, -0.702745f, -0.702688f, -0.702631f, -0.702573f, -0.702516f, -0.702458f, -0.702401f, -0.702344f, -0.702286f, -0.702229f, -0.702171f, -0.702114f, -0.702056f, -0.701999f, -0.701941f,
+-0.701884f, -0.701826f, -0.701769f, -0.701711f, -0.701653f, -0.701596f, -0.701538f, -0.701481f, -0.701423f, -0.701366f, -0.701308f, -0.70125f, -0.701193f, -0.701135f, -0.701077f, -0.70102f, -0.700962f, -0.700904f, -0.700847f, -0.700789f,
+-0.700731f, -0.700674f, -0.700616f, -0.700558f, -0.7005f, -0.700443f, -0.700385f, -0.700327f, -0.700269f, -0.700212f, -0.700154f, -0.700096f, -0.700038f, -0.69998f, -0.699922f, -0.699865f, -0.699807f, -0.699749f, -0.699691f, -0.699633f,
+-0.699575f, -0.699517f, -0.699459f, -0.699401f, -0.699343f, -0.699286f, -0.699228f, -0.69917f, -0.699112f, -0.699054f, -0.698996f, -0.698938f, -0.69888f, -0.698822f, -0.698764f, -0.698706f, -0.698647f, -0.698589f, -0.698531f, -0.698473f,
+-0.698415f, -0.698357f, -0.698299f, -0.698241f, -0.698183f, -0.698125f, -0.698066f, -0.698008f, -0.69795f, -0.697892f, -0.697834f, -0.697776f, -0.697717f, -0.697659f, -0.697601f, -0.697543f, -0.697484f, -0.697426f, -0.697368f, -0.69731f,
+-0.697251f, -0.697193f, -0.697135f, -0.697076f, -0.697018f, -0.69696f, -0.696901f, -0.696843f, -0.696785f, -0.696726f, -0.696668f, -0.69661f, -0.696551f, -0.696493f, -0.696434f, -0.696376f, -0.696318f, -0.696259f, -0.696201f, -0.696142f,
+-0.696084f, -0.696025f, -0.695967f, -0.695908f, -0.69585f, -0.695791f, -0.695733f, -0.695674f, -0.695616f, -0.695557f, -0.695498f, -0.69544f, -0.695381f, -0.695323f, -0.695264f, -0.695206f, -0.695147f, -0.695088f, -0.69503f, -0.694971f,
+-0.694912f, -0.694854f, -0.694795f, -0.694736f, -0.694678f, -0.694619f, -0.69456f, -0.694501f, -0.694443f, -0.694384f, -0.694325f, -0.694266f, -0.694208f, -0.694149f, -0.69409f, -0.694031f, -0.693972f, -0.693914f, -0.693855f, -0.693796f,
+-0.693737f, -0.693678f, -0.693619f, -0.69356f, -0.693502f, -0.693443f, -0.693384f, -0.693325f, -0.693266f, -0.693207f, -0.693148f, -0.693089f, -0.69303f, -0.692971f, -0.692912f, -0.692853f, -0.692794f, -0.692735f, -0.692676f, -0.692617f,
+-0.692558f, -0.692499f, -0.69244f, -0.692381f, -0.692322f, -0.692263f, -0.692204f, -0.692144f, -0.692085f, -0.692026f, -0.691967f, -0.691908f, -0.691849f, -0.69179f, -0.69173f, -0.691671f, -0.691612f, -0.691553f, -0.691494f, -0.691434f,
+-0.691375f, -0.691316f, -0.691257f, -0.691197f, -0.691138f, -0.691079f, -0.69102f, -0.69096f, -0.690901f, -0.690842f, -0.690782f, -0.690723f, -0.690664f, -0.690604f, -0.690545f, -0.690485f, -0.690426f, -0.690367f, -0.690307f, -0.690248f,
+-0.690188f, -0.690129f, -0.69007f, -0.69001f, -0.689951f, -0.689891f, -0.689832f, -0.689772f, -0.689713f, -0.689653f, -0.689594f, -0.689534f, -0.689475f, -0.689415f, -0.689356f, -0.689296f, -0.689236f, -0.689177f, -0.689117f, -0.689058f,
+-0.688998f, -0.688938f, -0.688879f, -0.688819f, -0.68876f, -0.6887f, -0.68864f, -0.688581f, -0.688521f, -0.688461f, -0.688401f, -0.688342f, -0.688282f, -0.688222f, -0.688162f, -0.688103f, -0.688043f, -0.687983f, -0.687923f, -0.687864f,
+-0.687804f, -0.687744f, -0.687684f, -0.687624f, -0.687565f, -0.687505f, -0.687445f, -0.687385f, -0.687325f, -0.687265f, -0.687205f, -0.687145f, -0.687086f, -0.687026f, -0.686966f, -0.686906f, -0.686846f, -0.686786f, -0.686726f, -0.686666f,
+-0.686606f, -0.686546f, -0.686486f, -0.686426f, -0.686366f, -0.686306f, -0.686246f, -0.686186f, -0.686126f, -0.686066f, -0.686005f, -0.685945f, -0.685885f, -0.685825f, -0.685765f, -0.685705f, -0.685645f, -0.685585f, -0.685524f, -0.685464f,
+-0.685404f, -0.685344f, -0.685284f, -0.685224f, -0.685163f, -0.685103f, -0.685043f, -0.684983f, -0.684922f, -0.684862f, -0.684802f, -0.684742f, -0.684681f, -0.684621f, -0.684561f, -0.6845f, -0.68444f, -0.68438f, -0.684319f, -0.684259f,
+-0.684199f, -0.684138f, -0.684078f, -0.684017f, -0.683957f, -0.683897f, -0.683836f, -0.683776f, -0.683715f, -0.683655f, -0.683594f, -0.683534f, -0.683474f, -0.683413f, -0.683353f, -0.683292f, -0.683232f, -0.683171f, -0.68311f, -0.68305f,
+-0.682989f, -0.682929f, -0.682868f, -0.682808f, -0.682747f, -0.682687f, -0.682626f, -0.682565f, -0.682505f, -0.682444f, -0.682383f, -0.682323f, -0.682262f, -0.682201f, -0.682141f, -0.68208f, -0.682019f, -0.681959f, -0.681898f, -0.681837f,
+-0.681776f, -0.681716f, -0.681655f, -0.681594f, -0.681533f, -0.681473f, -0.681412f, -0.681351f, -0.68129f, -0.681229f, -0.681169f, -0.681108f, -0.681047f, -0.680986f, -0.680925f, -0.680864f, -0.680803f, -0.680742f, -0.680682f, -0.680621f,
+-0.68056f, -0.680499f, -0.680438f, -0.680377f, -0.680316f, -0.680255f, -0.680194f, -0.680133f, -0.680072f, -0.680011f, -0.67995f, -0.679889f, -0.679828f, -0.679767f, -0.679706f, -0.679645f, -0.679584f, -0.679523f, -0.679461f, -0.6794f,
+-0.679339f, -0.679278f, -0.679217f, -0.679156f, -0.679095f, -0.679034f, -0.678972f, -0.678911f, -0.67885f, -0.678789f, -0.678728f, -0.678666f, -0.678605f, -0.678544f, -0.678483f, -0.678421f, -0.67836f, -0.678299f, -0.678238f, -0.678176f,
+-0.678115f, -0.678054f, -0.677992f, -0.677931f, -0.67787f, -0.677808f, -0.677747f, -0.677686f, -0.677624f, -0.677563f, -0.677502f, -0.67744f, -0.677379f, -0.677317f, -0.677256f, -0.677194f, -0.677133f, -0.677072f, -0.67701f, -0.676949f,
+-0.676887f, -0.676826f, -0.676764f, -0.676703f, -0.676641f, -0.67658f, -0.676518f, -0.676456f, -0.676395f, -0.676333f, -0.676272f, -0.67621f, -0.676149f, -0.676087f, -0.676025f, -0.675964f, -0.675902f, -0.67584f, -0.675779f, -0.675717f,
+-0.675656f, -0.675594f, -0.675532f, -0.67547f, -0.675409f, -0.675347f, -0.675285f, -0.675224f, -0.675162f, -0.6751f, -0.675038f, -0.674977f, -0.674915f, -0.674853f, -0.674791f, -0.674729f, -0.674668f, -0.674606f, -0.674544f, -0.674482f,
+-0.67442f, -0.674358f, -0.674296f, -0.674235f, -0.674173f, -0.674111f, -0.674049f, -0.673987f, -0.673925f, -0.673863f, -0.673801f, -0.673739f, -0.673677f, -0.673615f, -0.673553f, -0.673491f, -0.673429f, -0.673367f, -0.673305f, -0.673243f,
+-0.673181f, -0.673119f, -0.673057f, -0.672995f, -0.672933f, -0.672871f, -0.672809f, -0.672747f, -0.672685f, -0.672622f, -0.67256f, -0.672498f, -0.672436f, -0.672374f, -0.672312f, -0.672249f, -0.672187f, -0.672125f, -0.672063f, -0.672001f,
+-0.671938f, -0.671876f, -0.671814f, -0.671752f, -0.671689f, -0.671627f, -0.671565f, -0.671503f, -0.67144f, -0.671378f, -0.671316f, -0.671253f, -0.671191f, -0.671129f, -0.671066f, -0.671004f, -0.670942f, -0.670879f, -0.670817f, -0.670754f,
+-0.670692f, -0.67063f, -0.670567f, -0.670505f, -0.670442f, -0.67038f, -0.670317f, -0.670255f, -0.670192f, -0.67013f, -0.670067f, -0.670005f, -0.669942f, -0.66988f, -0.669817f, -0.669755f, -0.669692f, -0.66963f, -0.669567f, -0.669505f,
+-0.669442f, -0.669379f, -0.669317f, -0.669254f, -0.669192f, -0.669129f, -0.669066f, -0.669004f, -0.668941f, -0.668878f, -0.668816f, -0.668753f, -0.66869f, -0.668627f, -0.668565f, -0.668502f, -0.668439f, -0.668377f, -0.668314f, -0.668251f,
+-0.668188f, -0.668125f, -0.668063f, -0.668f, -0.667937f, -0.667874f, -0.667811f, -0.667749f, -0.667686f, -0.667623f, -0.66756f, -0.667497f, -0.667434f, -0.667371f, -0.667308f, -0.667246f, -0.667183f, -0.66712f, -0.667057f, -0.666994f,
+-0.666931f, -0.666868f, -0.666805f, -0.666742f, -0.666679f, -0.666616f, -0.666553f, -0.66649f, -0.666427f, -0.666364f, -0.666301f, -0.666238f, -0.666175f, -0.666112f, -0.666048f, -0.665985f, -0.665922f, -0.665859f, -0.665796f, -0.665733f,
+-0.66567f, -0.665607f, -0.665543f, -0.66548f, -0.665417f, -0.665354f, -0.665291f, -0.665227f, -0.665164f, -0.665101f, -0.665038f, -0.664975f, -0.664911f, -0.664848f, -0.664785f, -0.664722f, -0.664658f, -0.664595f, -0.664532f, -0.664468f,
+-0.664405f, -0.664342f, -0.664278f, -0.664215f, -0.664152f, -0.664088f, -0.664025f, -0.663961f, -0.663898f, -0.663835f, -0.663771f, -0.663708f, -0.663644f, -0.663581f, -0.663518f, -0.663454f, -0.663391f, -0.663327f, -0.663264f, -0.6632f,
+-0.663137f, -0.663073f, -0.66301f, -0.662946f, -0.662882f, -0.662819f, -0.662755f, -0.662692f, -0.662628f, -0.662565f, -0.662501f, -0.662437f, -0.662374f, -0.66231f, -0.662247f, -0.662183f, -0.662119f, -0.662056f, -0.661992f, -0.661928f,
+-0.661865f, -0.661801f, -0.661737f, -0.661673f, -0.66161f, -0.661546f, -0.661482f, -0.661419f, -0.661355f, -0.661291f, -0.661227f, -0.661163f, -0.6611f, -0.661036f, -0.660972f, -0.660908f, -0.660844f, -0.660781f, -0.660717f, -0.660653f,
+-0.660589f, -0.660525f, -0.660461f, -0.660397f, -0.660333f, -0.660269f, -0.660206f, -0.660142f, -0.660078f, -0.660014f, -0.65995f, -0.659886f, -0.659822f, -0.659758f, -0.659694f, -0.65963f, -0.659566f, -0.659502f, -0.659438f, -0.659374f,
+-0.65931f, -0.659246f, -0.659182f, -0.659117f, -0.659053f, -0.658989f, -0.658925f, -0.658861f, -0.658797f, -0.658733f, -0.658669f, -0.658605f, -0.65854f, -0.658476f, -0.658412f, -0.658348f, -0.658284f, -0.658219f, -0.658155f, -0.658091f,
+-0.658027f, -0.657963f, -0.657898f, -0.657834f, -0.65777f, -0.657705f, -0.657641f, -0.657577f, -0.657513f, -0.657448f, -0.657384f, -0.65732f, -0.657255f, -0.657191f, -0.657127f, -0.657062f, -0.656998f, -0.656933f, -0.656869f, -0.656805f,
+-0.65674f, -0.656676f, -0.656611f, -0.656547f, -0.656482f, -0.656418f, -0.656354f, -0.656289f, -0.656225f, -0.65616f, -0.656096f, -0.656031f, -0.655967f, -0.655902f, -0.655838f, -0.655773f, -0.655708f, -0.655644f, -0.655579f, -0.655515f,
+-0.65545f, -0.655386f, -0.655321f, -0.655256f, -0.655192f, -0.655127f, -0.655062f, -0.654998f, -0.654933f, -0.654868f, -0.654804f, -0.654739f, -0.654674f, -0.65461f, -0.654545f, -0.65448f, -0.654415f, -0.654351f, -0.654286f, -0.654221f,
+-0.654156f, -0.654092f, -0.654027f, -0.653962f, -0.653897f, -0.653832f, -0.653768f, -0.653703f, -0.653638f, -0.653573f, -0.653508f, -0.653443f, -0.653378f, -0.653314f, -0.653249f, -0.653184f, -0.653119f, -0.653054f, -0.652989f, -0.652924f,
+-0.652859f, -0.652794f, -0.652729f, -0.652664f, -0.652599f, -0.652534f, -0.652469f, -0.652404f, -0.652339f, -0.652274f, -0.652209f, -0.652144f, -0.652079f, -0.652014f, -0.651949f, -0.651884f, -0.651819f, -0.651754f, -0.651688f, -0.651623f,
+-0.651558f, -0.651493f, -0.651428f, -0.651363f, -0.651298f, -0.651232f, -0.651167f, -0.651102f, -0.651037f, -0.650972f, -0.650906f, -0.650841f, -0.650776f, -0.650711f, -0.650645f, -0.65058f, -0.650515f, -0.65045f, -0.650384f, -0.650319f,
+-0.650254f, -0.650188f, -0.650123f, -0.650058f, -0.649992f, -0.649927f, -0.649862f, -0.649796f, -0.649731f, -0.649666f, -0.6496f, -0.649535f, -0.649469f, -0.649404f, -0.649338f, -0.649273f, -0.649208f, -0.649142f, -0.649077f, -0.649011f,
+-0.648946f, -0.64888f, -0.648815f, -0.648749f, -0.648684f, -0.648618f, -0.648553f, -0.648487f, -0.648421f, -0.648356f, -0.64829f, -0.648225f, -0.648159f, -0.648094f, -0.648028f, -0.647962f, -0.647897f, -0.647831f, -0.647765f, -0.6477f,
+-0.647634f, -0.647568f, -0.647503f, -0.647437f, -0.647371f, -0.647306f, -0.64724f, -0.647174f, -0.647108f, -0.647043f, -0.646977f, -0.646911f, -0.646845f, -0.64678f, -0.646714f, -0.646648f, -0.646582f, -0.646516f, -0.646451f, -0.646385f,
+-0.646319f, -0.646253f, -0.646187f, -0.646121f, -0.646055f, -0.64599f, -0.645924f, -0.645858f, -0.645792f, -0.645726f, -0.64566f, -0.645594f, -0.645528f, -0.645462f, -0.645396f, -0.64533f, -0.645264f, -0.645198f, -0.645132f, -0.645066f,
+-0.645f, -0.644934f, -0.644868f, -0.644802f, -0.644736f, -0.64467f, -0.644604f, -0.644538f, -0.644472f, -0.644406f, -0.644339f, -0.644273f, -0.644207f, -0.644141f, -0.644075f, -0.644009f, -0.643943f, -0.643876f, -0.64381f, -0.643744f,
+-0.643678f, -0.643612f, -0.643545f, -0.643479f, -0.643413f, -0.643347f, -0.64328f, -0.643214f, -0.643148f, -0.643082f, -0.643015f, -0.642949f, -0.642883f, -0.642816f, -0.64275f, -0.642684f, -0.642617f, -0.642551f, -0.642485f, -0.642418f,
+-0.642352f, -0.642286f, -0.642219f, -0.642153f, -0.642086f, -0.64202f, -0.641954f, -0.641887f, -0.641821f, -0.641754f, -0.641688f, -0.641621f, -0.641555f, -0.641488f, -0.641422f, -0.641355f, -0.641289f, -0.641222f, -0.641156f, -0.641089f,
+-0.641023f, -0.640956f, -0.64089f, -0.640823f, -0.640756f, -0.64069f, -0.640623f, -0.640557f, -0.64049f, -0.640423f, -0.640357f, -0.64029f, -0.640223f, -0.640157f, -0.64009f, -0.640023f, -0.639957f, -0.63989f, -0.639823f, -0.639757f,
+-0.63969f, -0.639623f, -0.639556f, -0.63949f, -0.639423f, -0.639356f, -0.639289f, -0.639223f, -0.639156f, -0.639089f, -0.639022f, -0.638955f, -0.638888f, -0.638822f, -0.638755f, -0.638688f, -0.638621f, -0.638554f, -0.638487f, -0.63842f,
+-0.638353f, -0.638287f, -0.63822f, -0.638153f, -0.638086f, -0.638019f, -0.637952f, -0.637885f, -0.637818f, -0.637751f, -0.637684f, -0.637617f, -0.63755f, -0.637483f, -0.637416f, -0.637349f, -0.637282f, -0.637215f, -0.637148f, -0.637081f,
+-0.637014f, -0.636946f, -0.636879f, -0.636812f, -0.636745f, -0.636678f, -0.636611f, -0.636544f, -0.636477f, -0.636409f, -0.636342f, -0.636275f, -0.636208f, -0.636141f, -0.636074f, -0.636006f, -0.635939f, -0.635872f, -0.635805f, -0.635737f,
+-0.63567f, -0.635603f, -0.635536f, -0.635468f, -0.635401f, -0.635334f, -0.635266f, -0.635199f, -0.635132f, -0.635065f, -0.634997f, -0.63493f, -0.634862f, -0.634795f, -0.634728f, -0.63466f, -0.634593f, -0.634526f, -0.634458f, -0.634391f,
+-0.634323f, -0.634256f, -0.634188f, -0.634121f, -0.634054f, -0.633986f, -0.633919f, -0.633851f, -0.633784f, -0.633716f, -0.633649f, -0.633581f, -0.633514f, -0.633446f, -0.633378f, -0.633311f, -0.633243f, -0.633176f, -0.633108f, -0.633041f,
+-0.632973f, -0.632905f, -0.632838f, -0.63277f, -0.632702f, -0.632635f, -0.632567f, -0.632499f, -0.632432f, -0.632364f, -0.632296f, -0.632229f, -0.632161f, -0.632093f, -0.632026f, -0.631958f, -0.63189f, -0.631822f, -0.631755f, -0.631687f,
+-0.631619f, -0.631551f, -0.631484f, -0.631416f, -0.631348f, -0.63128f, -0.631212f, -0.631144f, -0.631077f, -0.631009f, -0.630941f, -0.630873f, -0.630805f, -0.630737f, -0.630669f, -0.630601f, -0.630533f, -0.630466f, -0.630398f, -0.63033f,
+-0.630262f, -0.630194f, -0.630126f, -0.630058f, -0.62999f, -0.629922f, -0.629854f, -0.629786f, -0.629718f, -0.62965f, -0.629582f, -0.629514f, -0.629446f, -0.629378f, -0.62931f, -0.629241f, -0.629173f, -0.629105f, -0.629037f, -0.628969f,
+-0.628901f, -0.628833f, -0.628765f, -0.628697f, -0.628628f, -0.62856f, -0.628492f, -0.628424f, -0.628356f, -0.628287f, -0.628219f, -0.628151f, -0.628083f, -0.628015f, -0.627946f, -0.627878f, -0.62781f, -0.627742f, -0.627673f, -0.627605f,
+-0.627537f, -0.627468f, -0.6274f, -0.627332f, -0.627263f, -0.627195f, -0.627127f, -0.627058f, -0.62699f, -0.626922f, -0.626853f, -0.626785f, -0.626716f, -0.626648f, -0.62658f, -0.626511f, -0.626443f, -0.626374f, -0.626306f, -0.626237f,
+-0.626169f, -0.626101f, -0.626032f, -0.625964f, -0.625895f, -0.625827f, -0.625758f, -0.625689f, -0.625621f, -0.625552f, -0.625484f, -0.625415f, -0.625347f, -0.625278f, -0.62521f, -0.625141f, -0.625072f, -0.625004f, -0.624935f, -0.624866f,
+-0.624798f, -0.624729f, -0.624661f, -0.624592f, -0.624523f, -0.624455f, -0.624386f, -0.624317f, -0.624248f, -0.62418f, -0.624111f, -0.624042f, -0.623973f, -0.623905f, -0.623836f, -0.623767f, -0.623698f, -0.62363f, -0.623561f, -0.623492f,
+-0.623423f, -0.623354f, -0.623286f, -0.623217f, -0.623148f, -0.623079f, -0.62301f, -0.622941f, -0.622872f, -0.622804f, -0.622735f, -0.622666f, -0.622597f, -0.622528f, -0.622459f, -0.62239f, -0.622321f, -0.622252f, -0.622183f, -0.622114f,
+-0.622045f, -0.621976f, -0.621907f, -0.621838f, -0.621769f, -0.6217f, -0.621631f, -0.621562f, -0.621493f, -0.621424f, -0.621355f, -0.621286f, -0.621217f, -0.621148f, -0.621079f, -0.621009f, -0.62094f, -0.620871f, -0.620802f, -0.620733f,
+-0.620664f, -0.620595f, -0.620525f, -0.620456f, -0.620387f, -0.620318f, -0.620249f, -0.620179f, -0.62011f, -0.620041f, -0.619972f, -0.619903f, -0.619833f, -0.619764f, -0.619695f, -0.619625f, -0.619556f, -0.619487f, -0.619418f, -0.619348f,
+-0.619279f, -0.61921f, -0.61914f, -0.619071f, -0.619002f, -0.618932f, -0.618863f, -0.618793f, -0.618724f, -0.618655f, -0.618585f, -0.618516f, -0.618446f, -0.618377f, -0.618307f, -0.618238f, -0.618169f, -0.618099f, -0.61803f, -0.61796f,
+-0.617891f, -0.617821f, -0.617752f, -0.617682f, -0.617613f, -0.617543f, -0.617473f, -0.617404f, -0.617334f, -0.617265f, -0.617195f, -0.617126f, -0.617056f, -0.616986f, -0.616917f, -0.616847f, -0.616778f, -0.616708f, -0.616638f, -0.616569f,
+-0.616499f, -0.616429f, -0.61636f, -0.61629f, -0.61622f, -0.616151f, -0.616081f, -0.616011f, -0.615941f, -0.615872f, -0.615802f, -0.615732f, -0.615662f, -0.615593f, -0.615523f, -0.615453f, -0.615383f, -0.615313f, -0.615244f, -0.615174f,
+-0.615104f, -0.615034f, -0.614964f, -0.614894f, -0.614824f, -0.614755f, -0.614685f, -0.614615f, -0.614545f, -0.614475f, -0.614405f, -0.614335f, -0.614265f, -0.614195f, -0.614125f, -0.614055f, -0.613985f, -0.613915f, -0.613845f, -0.613775f,
+-0.613705f, -0.613635f, -0.613565f, -0.613495f, -0.613425f, -0.613355f, -0.613285f, -0.613215f, -0.613145f, -0.613075f, -0.613005f, -0.612935f, -0.612865f, -0.612795f, -0.612725f, -0.612654f, -0.612584f, -0.612514f, -0.612444f, -0.612374f,
+-0.612304f, -0.612233f, -0.612163f, -0.612093f, -0.612023f, -0.611953f, -0.611882f, -0.611812f, -0.611742f, -0.611672f, -0.611601f, -0.611531f, -0.611461f, -0.611391f, -0.61132f, -0.61125f, -0.61118f, -0.611109f, -0.611039f, -0.610969f,
+-0.610898f, -0.610828f, -0.610758f, -0.610687f, -0.610617f, -0.610547f, -0.610476f, -0.610406f, -0.610335f, -0.610265f, -0.610195f, -0.610124f, -0.610054f, -0.609983f, -0.609913f, -0.609842f, -0.609772f, -0.609701f, -0.609631f, -0.60956f,
+-0.60949f, -0.609419f, -0.609349f, -0.609278f, -0.609208f, -0.609137f, -0.609067f, -0.608996f, -0.608925f, -0.608855f, -0.608784f, -0.608714f, -0.608643f, -0.608572f, -0.608502f, -0.608431f, -0.608361f, -0.60829f, -0.608219f, -0.608149f,
+-0.608078f, -0.608007f, -0.607937f, -0.607866f, -0.607795f, -0.607724f, -0.607654f, -0.607583f, -0.607512f, -0.607441f, -0.607371f, -0.6073f, -0.607229f, -0.607158f, -0.607088f, -0.607017f, -0.606946f, -0.606875f, -0.606804f, -0.606733f,
+-0.606663f, -0.606592f, -0.606521f, -0.60645f, -0.606379f, -0.606308f, -0.606237f, -0.606166f, -0.606096f, -0.606025f, -0.605954f, -0.605883f, -0.605812f, -0.605741f, -0.60567f, -0.605599f, -0.605528f, -0.605457f, -0.605386f, -0.605315f,
+-0.605244f, -0.605173f, -0.605102f, -0.605031f, -0.60496f, -0.604889f, -0.604818f, -0.604747f, -0.604676f, -0.604605f, -0.604533f, -0.604462f, -0.604391f, -0.60432f, -0.604249f, -0.604178f, -0.604107f, -0.604036f, -0.603964f, -0.603893f,
+-0.603822f, -0.603751f, -0.60368f, -0.603608f, -0.603537f, -0.603466f, -0.603395f, -0.603324f, -0.603252f, -0.603181f, -0.60311f, -0.603039f, -0.602967f, -0.602896f, -0.602825f, -0.602753f, -0.602682f, -0.602611f, -0.602539f, -0.602468f,
+-0.602397f, -0.602325f, -0.602254f, -0.602183f, -0.602111f, -0.60204f, -0.601969f, -0.601897f, -0.601826f, -0.601754f, -0.601683f, -0.601611f, -0.60154f, -0.601469f, -0.601397f, -0.601326f, -0.601254f, -0.601183f, -0.601111f, -0.60104f,
+-0.600968f, -0.600897f, -0.600825f, -0.600754f, -0.600682f, -0.60061f, -0.600539f, -0.600467f, -0.600396f, -0.600324f, -0.600253f, -0.600181f, -0.600109f, -0.600038f, -0.599966f, -0.599895f, -0.599823f, -0.599751f, -0.59968f, -0.599608f,
+-0.599536f, -0.599465f, -0.599393f, -0.599321f, -0.599249f, -0.599178f, -0.599106f, -0.599034f, -0.598963f, -0.598891f, -0.598819f, -0.598747f, -0.598676f, -0.598604f, -0.598532f, -0.59846f, -0.598388f, -0.598317f, -0.598245f, -0.598173f,
+-0.598101f, -0.598029f, -0.597957f, -0.597885f, -0.597814f, -0.597742f, -0.59767f, -0.597598f, -0.597526f, -0.597454f, -0.597382f, -0.59731f, -0.597238f, -0.597166f, -0.597094f, -0.597022f, -0.59695f, -0.596878f, -0.596806f, -0.596735f,
+-0.596662f, -0.59659f, -0.596518f, -0.596446f, -0.596374f, -0.596302f, -0.59623f, -0.596158f, -0.596086f, -0.596014f, -0.595942f, -0.59587f, -0.595798f, -0.595726f, -0.595654f, -0.595581f, -0.595509f, -0.595437f, -0.595365f, -0.595293f,
+-0.595221f, -0.595149f, -0.595076f, -0.595004f, -0.594932f, -0.59486f, -0.594788f, -0.594715f, -0.594643f, -0.594571f, -0.594499f, -0.594426f, -0.594354f, -0.594282f, -0.594209f, -0.594137f, -0.594065f, -0.593993f, -0.59392f, -0.593848f,
+-0.593776f, -0.593703f, -0.593631f, -0.593559f, -0.593486f, -0.593414f, -0.593341f, -0.593269f, -0.593197f, -0.593124f, -0.593052f, -0.592979f, -0.592907f, -0.592835f, -0.592762f, -0.59269f, -0.592617f, -0.592545f, -0.592472f, -0.5924f,
+-0.592327f, -0.592255f, -0.592182f, -0.59211f, -0.592037f, -0.591965f, -0.591892f, -0.59182f, -0.591747f, -0.591674f, -0.591602f, -0.591529f, -0.591457f, -0.591384f, -0.591311f, -0.591239f, -0.591166f, -0.591094f, -0.591021f, -0.590948f,
+-0.590876f, -0.590803f, -0.59073f, -0.590658f, -0.590585f, -0.590512f, -0.590439f, -0.590367f, -0.590294f, -0.590221f, -0.590149f, -0.590076f, -0.590003f, -0.58993f, -0.589858f, -0.589785f, -0.589712f, -0.589639f, -0.589566f, -0.589494f,
+-0.589421f, -0.589348f, -0.589275f, -0.589202f, -0.589129f, -0.589056f, -0.588984f, -0.588911f, -0.588838f, -0.588765f, -0.588692f, -0.588619f, -0.588546f, -0.588473f, -0.5884f, -0.588327f, -0.588254f, -0.588181f, -0.588109f, -0.588036f,
+-0.587963f, -0.58789f, -0.587817f, -0.587744f, -0.587671f, -0.587598f, -0.587524f, -0.587451f, -0.587378f, -0.587305f, -0.587232f, -0.587159f, -0.587086f, -0.587013f, -0.58694f, -0.586867f, -0.586794f, -0.586721f, -0.586647f, -0.586574f,
+-0.586501f, -0.586428f, -0.586355f, -0.586282f, -0.586209f, -0.586135f, -0.586062f, -0.585989f, -0.585916f, -0.585842f, -0.585769f, -0.585696f, -0.585623f, -0.58555f, -0.585476f, -0.585403f, -0.58533f, -0.585256f, -0.585183f, -0.58511f,
+-0.585037f, -0.584963f, -0.58489f, -0.584817f, -0.584743f, -0.58467f, -0.584597f, -0.584523f, -0.58445f, -0.584376f, -0.584303f, -0.58423f, -0.584156f, -0.584083f, -0.584009f, -0.583936f, -0.583863f, -0.583789f, -0.583716f, -0.583642f,
+-0.583569f, -0.583495f, -0.583422f, -0.583348f, -0.583275f, -0.583201f, -0.583128f, -0.583054f, -0.582981f, -0.582907f, -0.582834f, -0.58276f, -0.582686f, -0.582613f, -0.582539f, -0.582466f, -0.582392f, -0.582318f, -0.582245f, -0.582171f,
+-0.582098f, -0.582024f, -0.58195f, -0.581877f, -0.581803f, -0.581729f, -0.581656f, -0.581582f, -0.581508f, -0.581435f, -0.581361f, -0.581287f, -0.581213f, -0.58114f, -0.581066f, -0.580992f, -0.580918f, -0.580845f, -0.580771f, -0.580697f,
+-0.580623f, -0.58055f, -0.580476f, -0.580402f, -0.580328f, -0.580254f, -0.58018f, -0.580107f, -0.580033f, -0.579959f, -0.579885f, -0.579811f, -0.579737f, -0.579663f, -0.579589f, -0.579516f, -0.579442f, -0.579368f, -0.579294f, -0.57922f,
+-0.579146f, -0.579072f, -0.578998f, -0.578924f, -0.57885f, -0.578776f, -0.578702f, -0.578628f, -0.578554f, -0.57848f, -0.578406f, -0.578332f, -0.578258f, -0.578184f, -0.57811f, -0.578036f, -0.577962f, -0.577887f, -0.577813f, -0.577739f,
+-0.577665f, -0.577591f, -0.577517f, -0.577443f, -0.577369f, -0.577294f, -0.57722f, -0.577146f, -0.577072f, -0.576998f, -0.576924f, -0.576849f, -0.576775f, -0.576701f, -0.576627f, -0.576553f, -0.576478f, -0.576404f, -0.57633f, -0.576256f,
+-0.576181f, -0.576107f, -0.576033f, -0.575958f, -0.575884f, -0.57581f, -0.575735f, -0.575661f, -0.575587f, -0.575512f, -0.575438f, -0.575364f, -0.575289f, -0.575215f, -0.575141f, -0.575066f, -0.574992f, -0.574917f, -0.574843f, -0.574769f,
+-0.574694f, -0.57462f, -0.574545f, -0.574471f, -0.574396f, -0.574322f, -0.574247f, -0.574173f, -0.574098f, -0.574024f, -0.573949f, -0.573875f, -0.5738f, -0.573726f, -0.573651f, -0.573577f, -0.573502f, -0.573428f, -0.573353f, -0.573279f,
+-0.573204f, -0.573129f, -0.573055f, -0.57298f, -0.572906f, -0.572831f, -0.572756f, -0.572682f, -0.572607f, -0.572532f, -0.572458f, -0.572383f, -0.572308f, -0.572234f, -0.572159f, -0.572084f, -0.572009f, -0.571935f, -0.57186f, -0.571785f,
+-0.571711f, -0.571636f, -0.571561f, -0.571486f, -0.571412f, -0.571337f, -0.571262f, -0.571187f, -0.571112f, -0.571038f, -0.570963f, -0.570888f, -0.570813f, -0.570738f, -0.570663f, -0.570588f, -0.570514f, -0.570439f, -0.570364f, -0.570289f,
+-0.570214f, -0.570139f, -0.570064f, -0.569989f, -0.569914f, -0.569839f, -0.569764f, -0.569689f, -0.569614f, -0.56954f, -0.569465f, -0.56939f, -0.569315f, -0.56924f, -0.569165f, -0.56909f, -0.569014f, -0.568939f, -0.568864f, -0.568789f,
+-0.568714f, -0.568639f, -0.568564f, -0.568489f, -0.568414f, -0.568339f, -0.568264f, -0.568189f, -0.568114f, -0.568038f, -0.567963f, -0.567888f, -0.567813f, -0.567738f, -0.567663f, -0.567587f, -0.567512f, -0.567437f, -0.567362f, -0.567287f,
+-0.567211f, -0.567136f, -0.567061f, -0.566986f, -0.56691f, -0.566835f, -0.56676f, -0.566685f, -0.566609f, -0.566534f, -0.566459f, -0.566384f, -0.566308f, -0.566233f, -0.566158f, -0.566082f, -0.566007f, -0.565932f, -0.565856f, -0.565781f,
+-0.565705f, -0.56563f, -0.565555f, -0.565479f, -0.565404f, -0.565328f, -0.565253f, -0.565178f, -0.565102f, -0.565027f, -0.564951f, -0.564876f, -0.5648f, -0.564725f, -0.564649f, -0.564574f, -0.564498f, -0.564423f, -0.564347f, -0.564272f,
+-0.564196f, -0.564121f, -0.564045f, -0.56397f, -0.563894f, -0.563819f, -0.563743f, -0.563667f, -0.563592f, -0.563516f, -0.563441f, -0.563365f, -0.563289f, -0.563214f, -0.563138f, -0.563062f, -0.562987f, -0.562911f, -0.562835f, -0.56276f,
+-0.562684f, -0.562608f, -0.562533f, -0.562457f, -0.562381f, -0.562306f, -0.56223f, -0.562154f, -0.562078f, -0.562003f, -0.561927f, -0.561851f, -0.561775f, -0.561699f, -0.561624f, -0.561548f, -0.561472f, -0.561396f, -0.56132f, -0.561245f,
+-0.561169f, -0.561093f, -0.561017f, -0.560941f, -0.560865f, -0.560789f, -0.560714f, -0.560638f, -0.560562f, -0.560486f, -0.56041f, -0.560334f, -0.560258f, -0.560182f, -0.560106f, -0.56003f, -0.559954f, -0.559878f, -0.559802f, -0.559726f,
+-0.55965f, -0.559574f, -0.559498f, -0.559422f, -0.559346f, -0.55927f, -0.559194f, -0.559118f, -0.559042f, -0.558966f, -0.55889f, -0.558814f, -0.558738f, -0.558662f, -0.558586f, -0.558509f, -0.558433f, -0.558357f, -0.558281f, -0.558205f,
+-0.558129f, -0.558053f, -0.557976f, -0.5579f, -0.557824f, -0.557748f, -0.557672f, -0.557595f, -0.557519f, -0.557443f, -0.557367f, -0.557291f, -0.557214f, -0.557138f, -0.557062f, -0.556986f, -0.556909f, -0.556833f, -0.556757f, -0.55668f,
+-0.556604f, -0.556528f, -0.556451f, -0.556375f, -0.556299f, -0.556222f, -0.556146f, -0.55607f, -0.555993f, -0.555917f, -0.555841f, -0.555764f, -0.555688f, -0.555611f, -0.555535f, -0.555459f, -0.555382f, -0.555306f, -0.555229f, -0.555153f,
+-0.555076f, -0.555f, -0.554923f, -0.554847f, -0.554771f, -0.554694f, -0.554617f, -0.554541f, -0.554464f, -0.554388f, -0.554311f, -0.554235f, -0.554158f, -0.554082f, -0.554005f, -0.553929f, -0.553852f, -0.553775f, -0.553699f, -0.553622f,
+-0.553546f, -0.553469f, -0.553392f, -0.553316f, -0.553239f, -0.553162f, -0.553086f, -0.553009f, -0.552932f, -0.552856f, -0.552779f, -0.552702f, -0.552626f, -0.552549f, -0.552472f, -0.552396f, -0.552319f, -0.552242f, -0.552165f, -0.552089f,
+-0.552012f, -0.551935f, -0.551858f, -0.551781f, -0.551705f, -0.551628f, -0.551551f, -0.551474f, -0.551397f, -0.551321f, -0.551244f, -0.551167f, -0.55109f, -0.551013f, -0.550936f, -0.550859f, -0.550783f, -0.550706f, -0.550629f, -0.550552f,
+-0.550475f, -0.550398f, -0.550321f, -0.550244f, -0.550167f, -0.55009f, -0.550013f, -0.549936f, -0.549859f, -0.549782f, -0.549705f, -0.549628f, -0.549551f, -0.549474f, -0.549397f, -0.54932f, -0.549243f, -0.549166f, -0.549089f, -0.549012f,
+-0.548935f, -0.548858f, -0.548781f, -0.548704f, -0.548627f, -0.548549f, -0.548472f, -0.548395f, -0.548318f, -0.548241f, -0.548164f, -0.548087f, -0.54801f, -0.547932f, -0.547855f, -0.547778f, -0.547701f, -0.547624f, -0.547546f, -0.547469f,
+-0.547392f, -0.547315f, -0.547237f, -0.54716f, -0.547083f, -0.547006f, -0.546928f, -0.546851f, -0.546774f, -0.546697f, -0.546619f, -0.546542f, -0.546465f, -0.546387f, -0.54631f, -0.546233f, -0.546155f, -0.546078f, -0.546001f, -0.545923f,
+-0.545846f, -0.545769f, -0.545691f, -0.545614f, -0.545536f, -0.545459f, -0.545382f, -0.545304f, -0.545227f, -0.545149f, -0.545072f, -0.544994f, -0.544917f, -0.544839f, -0.544762f, -0.544684f, -0.544607f, -0.544529f, -0.544452f, -0.544374f,
+-0.544297f, -0.544219f, -0.544142f, -0.544064f, -0.543987f, -0.543909f, -0.543832f, -0.543754f, -0.543676f, -0.543599f, -0.543521f, -0.543444f, -0.543366f, -0.543288f, -0.543211f, -0.543133f, -0.543056f, -0.542978f, -0.5429f, -0.542823f,
+-0.542745f, -0.542667f, -0.542589f, -0.542512f, -0.542434f, -0.542356f, -0.542279f, -0.542201f, -0.542123f, -0.542045f, -0.541968f, -0.54189f, -0.541812f, -0.541734f, -0.541657f, -0.541579f, -0.541501f, -0.541423f, -0.541345f, -0.541268f,
+-0.54119f, -0.541112f, -0.541034f, -0.540956f, -0.540878f, -0.540801f, -0.540723f, -0.540645f, -0.540567f, -0.540489f, -0.540411f, -0.540333f, -0.540255f, -0.540177f, -0.540099f, -0.540022f, -0.539944f, -0.539866f, -0.539788f, -0.53971f,
+-0.539632f, -0.539554f, -0.539476f, -0.539398f, -0.53932f, -0.539242f, -0.539164f, -0.539086f, -0.539008f, -0.53893f, -0.538852f, -0.538774f, -0.538695f, -0.538617f, -0.538539f, -0.538461f, -0.538383f, -0.538305f, -0.538227f, -0.538149f,
+-0.538071f, -0.537993f, -0.537914f, -0.537836f, -0.537758f, -0.53768f, -0.537602f, -0.537524f, -0.537445f, -0.537367f, -0.537289f, -0.537211f, -0.537133f, -0.537054f, -0.536976f, -0.536898f, -0.53682f, -0.536741f, -0.536663f, -0.536585f,
+-0.536507f, -0.536428f, -0.53635f, -0.536272f, -0.536194f, -0.536115f, -0.536037f, -0.535959f, -0.53588f, -0.535802f, -0.535724f, -0.535645f, -0.535567f, -0.535488f, -0.53541f, -0.535332f, -0.535253f, -0.535175f, -0.535096f, -0.535018f,
+-0.53494f, -0.534861f, -0.534783f, -0.534704f, -0.534626f, -0.534547f, -0.534469f, -0.534391f, -0.534312f, -0.534234f, -0.534155f, -0.534077f, -0.533998f, -0.53392f, -0.533841f, -0.533762f, -0.533684f, -0.533605f, -0.533527f, -0.533448f,
+-0.53337f, -0.533291f, -0.533213f, -0.533134f, -0.533055f, -0.532977f, -0.532898f, -0.53282f, -0.532741f, -0.532662f, -0.532584f, -0.532505f, -0.532426f, -0.532348f, -0.532269f, -0.53219f, -0.532112f, -0.532033f, -0.531954f, -0.531875f,
+-0.531797f, -0.531718f, -0.531639f, -0.531561f, -0.531482f, -0.531403f, -0.531324f, -0.531246f, -0.531167f, -0.531088f, -0.531009f, -0.53093f, -0.530852f, -0.530773f, -0.530694f, -0.530615f, -0.530536f, -0.530457f, -0.530379f, -0.5303f,
+-0.530221f, -0.530142f, -0.530063f, -0.529984f, -0.529905f, -0.529826f, -0.529748f, -0.529669f, -0.52959f, -0.529511f, -0.529432f, -0.529353f, -0.529274f, -0.529195f, -0.529116f, -0.529037f, -0.528958f, -0.528879f, -0.5288f, -0.528721f,
+-0.528642f, -0.528563f, -0.528484f, -0.528405f, -0.528326f, -0.528247f, -0.528168f, -0.528089f, -0.52801f, -0.527931f, -0.527852f, -0.527772f, -0.527693f, -0.527614f, -0.527535f, -0.527456f, -0.527377f, -0.527298f, -0.527219f, -0.52714f,
+-0.52706f, -0.526981f, -0.526902f, -0.526823f, -0.526744f, -0.526664f, -0.526585f, -0.526506f, -0.526427f, -0.526348f, -0.526268f, -0.526189f, -0.52611f, -0.526031f, -0.525951f, -0.525872f, -0.525793f, -0.525714f, -0.525634f, -0.525555f,
+-0.525476f, -0.525396f, -0.525317f, -0.525238f, -0.525158f, -0.525079f, -0.525f, -0.52492f, -0.524841f, -0.524762f, -0.524682f, -0.524603f, -0.524523f, -0.524444f, -0.524365f, -0.524285f, -0.524206f, -0.524126f, -0.524047f, -0.523968f,
+-0.523888f, -0.523809f, -0.523729f, -0.52365f, -0.52357f, -0.523491f, -0.523411f, -0.523332f, -0.523252f, -0.523173f, -0.523093f, -0.523014f, -0.522934f, -0.522855f, -0.522775f, -0.522696f, -0.522616f, -0.522536f, -0.522457f, -0.522377f,
+-0.522298f, -0.522218f, -0.522138f, -0.522059f, -0.521979f, -0.5219f, -0.52182f, -0.52174f, -0.521661f, -0.521581f, -0.521501f, -0.521422f, -0.521342f, -0.521262f, -0.521183f, -0.521103f, -0.521023f, -0.520943f, -0.520864f, -0.520784f,
+-0.520704f, -0.520624f, -0.520545f, -0.520465f, -0.520385f, -0.520305f, -0.520226f, -0.520146f, -0.520066f, -0.519986f, -0.519906f, -0.519827f, -0.519747f, -0.519667f, -0.519587f, -0.519507f, -0.519427f, -0.519348f, -0.519268f, -0.519188f,
+-0.519108f, -0.519028f, -0.518948f, -0.518868f, -0.518788f, -0.518708f, -0.518629f, -0.518549f, -0.518469f, -0.518389f, -0.518309f, -0.518229f, -0.518149f, -0.518069f, -0.517989f, -0.517909f, -0.517829f, -0.517749f, -0.517669f, -0.517589f,
+-0.517509f, -0.517429f, -0.517349f, -0.517269f, -0.517189f, -0.517109f, -0.517028f, -0.516948f, -0.516868f, -0.516788f, -0.516708f, -0.516628f, -0.516548f, -0.516468f, -0.516388f, -0.516308f, -0.516227f, -0.516147f, -0.516067f, -0.515987f,
+-0.515907f, -0.515827f, -0.515746f, -0.515666f, -0.515586f, -0.515506f, -0.515426f, -0.515345f, -0.515265f, -0.515185f, -0.515105f, -0.515024f, -0.514944f, -0.514864f, -0.514784f, -0.514703f, -0.514623f, -0.514543f, -0.514462f, -0.514382f,
+-0.514302f, -0.514222f, -0.514141f, -0.514061f, -0.513981f, -0.5139f, -0.51382f, -0.513739f, -0.513659f, -0.513579f, -0.513498f, -0.513418f, -0.513338f, -0.513257f, -0.513177f, -0.513096f, -0.513016f, -0.512935f, -0.512855f, -0.512775f,
+-0.512694f, -0.512614f, -0.512533f, -0.512453f, -0.512372f, -0.512292f, -0.512211f, -0.512131f, -0.51205f, -0.51197f, -0.511889f, -0.511809f, -0.511728f, -0.511648f, -0.511567f, -0.511486f, -0.511406f, -0.511325f, -0.511245f, -0.511164f,
+-0.511084f, -0.511003f, -0.510922f, -0.510842f, -0.510761f, -0.51068f, -0.5106f, -0.510519f, -0.510438f, -0.510358f, -0.510277f, -0.510196f, -0.510116f, -0.510035f, -0.509954f, -0.509874f, -0.509793f, -0.509712f, -0.509632f, -0.509551f,
+-0.50947f, -0.509389f, -0.509309f, -0.509228f, -0.509147f, -0.509066f, -0.508985f, -0.508905f, -0.508824f, -0.508743f, -0.508662f, -0.508581f, -0.508501f, -0.50842f, -0.508339f, -0.508258f, -0.508177f, -0.508096f, -0.508016f, -0.507935f,
+-0.507854f, -0.507773f, -0.507692f, -0.507611f, -0.50753f, -0.507449f, -0.507368f, -0.507287f, -0.507206f, -0.507126f, -0.507045f, -0.506964f, -0.506883f, -0.506802f, -0.506721f, -0.50664f, -0.506559f, -0.506478f, -0.506397f, -0.506316f,
+-0.506235f, -0.506154f, -0.506073f, -0.505992f, -0.505911f, -0.505829f, -0.505748f, -0.505667f, -0.505586f, -0.505505f, -0.505424f, -0.505343f, -0.505262f, -0.505181f, -0.5051f, -0.505019f, -0.504937f, -0.504856f, -0.504775f, -0.504694f,
+-0.504613f, -0.504532f, -0.50445f, -0.504369f, -0.504288f, -0.504207f, -0.504126f, -0.504044f, -0.503963f, -0.503882f, -0.503801f, -0.50372f, -0.503638f, -0.503557f, -0.503476f, -0.503395f, -0.503313f, -0.503232f, -0.503151f, -0.503069f,
+-0.502988f, -0.502907f, -0.502825f, -0.502744f, -0.502663f, -0.502581f, -0.5025f, -0.502419f, -0.502337f, -0.502256f, -0.502175f, -0.502093f, -0.502012f, -0.501931f, -0.501849f, -0.501768f, -0.501686f, -0.501605f, -0.501523f, -0.501442f,
+-0.501361f, -0.501279f, -0.501198f, -0.501116f, -0.501035f, -0.500953f, -0.500872f, -0.50079f, -0.500709f, -0.500627f, -0.500546f, -0.500464f, -0.500383f, -0.500301f, -0.50022f, -0.500138f, -0.500057f, -0.499975f, -0.499893f, -0.499812f,
+-0.49973f, -0.499649f, -0.499567f, -0.499485f, -0.499404f, -0.499322f, -0.499241f, -0.499159f, -0.499077f, -0.498996f, -0.498914f, -0.498832f, -0.498751f, -0.498669f, -0.498587f, -0.498506f, -0.498424f, -0.498342f, -0.498261f, -0.498179f,
+-0.498097f, -0.498015f, -0.497934f, -0.497852f, -0.49777f, -0.497688f, -0.497607f, -0.497525f, -0.497443f, -0.497361f, -0.49728f, -0.497198f, -0.497116f, -0.497034f, -0.496952f, -0.496871f, -0.496789f, -0.496707f, -0.496625f, -0.496543f,
+-0.496461f, -0.496379f, -0.496298f, -0.496216f, -0.496134f, -0.496052f, -0.49597f, -0.495888f, -0.495806f, -0.495724f, -0.495642f, -0.49556f, -0.495479f, -0.495397f, -0.495315f, -0.495233f, -0.495151f, -0.495069f, -0.494987f, -0.494905f,
+-0.494823f, -0.494741f, -0.494659f, -0.494577f, -0.494495f, -0.494413f, -0.494331f, -0.494249f, -0.494167f, -0.494084f, -0.494002f, -0.49392f, -0.493838f, -0.493756f, -0.493674f, -0.493592f, -0.49351f, -0.493428f, -0.493346f, -0.493263f,
+-0.493181f, -0.493099f, -0.493017f, -0.492935f, -0.492853f, -0.492771f, -0.492688f, -0.492606f, -0.492524f, -0.492442f, -0.49236f, -0.492277f, -0.492195f, -0.492113f, -0.492031f, -0.491949f, -0.491866f, -0.491784f, -0.491702f, -0.49162f,
+-0.491537f, -0.491455f, -0.491373f, -0.49129f, -0.491208f, -0.491126f, -0.491043f, -0.490961f, -0.490879f, -0.490796f, -0.490714f, -0.490632f, -0.490549f, -0.490467f, -0.490385f, -0.490302f, -0.49022f, -0.490138f, -0.490055f, -0.489973f,
+-0.48989f, -0.489808f, -0.489726f, -0.489643f, -0.489561f, -0.489478f, -0.489396f, -0.489313f, -0.489231f, -0.489148f, -0.489066f, -0.488983f, -0.488901f, -0.488818f, -0.488736f, -0.488653f, -0.488571f, -0.488488f, -0.488406f, -0.488323f,
+-0.488241f, -0.488158f, -0.488076f, -0.487993f, -0.487911f, -0.487828f, -0.487745f, -0.487663f, -0.48758f, -0.487498f, -0.487415f, -0.487332f, -0.48725f, -0.487167f, -0.487084f, -0.487002f, -0.486919f, -0.486837f, -0.486754f, -0.486671f,
+-0.486589f, -0.486506f, -0.486423f, -0.48634f, -0.486258f, -0.486175f, -0.486092f, -0.48601f, -0.485927f, -0.485844f, -0.485761f, -0.485679f, -0.485596f, -0.485513f, -0.48543f, -0.485348f, -0.485265f, -0.485182f, -0.485099f, -0.485016f,
+-0.484934f, -0.484851f, -0.484768f, -0.484685f, -0.484602f, -0.484519f, -0.484436f, -0.484354f, -0.484271f, -0.484188f, -0.484105f, -0.484022f, -0.483939f, -0.483856f, -0.483773f, -0.48369f, -0.483608f, -0.483525f, -0.483442f, -0.483359f,
+-0.483276f, -0.483193f, -0.48311f, -0.483027f, -0.482944f, -0.482861f, -0.482778f, -0.482695f, -0.482612f, -0.482529f, -0.482446f, -0.482363f, -0.48228f, -0.482197f, -0.482114f, -0.482031f, -0.481948f, -0.481865f, -0.481782f, -0.481698f,
+-0.481615f, -0.481532f, -0.481449f, -0.481366f, -0.481283f, -0.4812f, -0.481117f, -0.481034f, -0.48095f, -0.480867f, -0.480784f, -0.480701f, -0.480618f, -0.480535f, -0.480452f, -0.480368f, -0.480285f, -0.480202f, -0.480119f, -0.480036f,
+-0.479952f, -0.479869f, -0.479786f, -0.479703f, -0.479619f, -0.479536f, -0.479453f, -0.47937f, -0.479286f, -0.479203f, -0.47912f, -0.479036f, -0.478953f, -0.47887f, -0.478787f, -0.478703f, -0.47862f, -0.478537f, -0.478453f, -0.47837f,
+-0.478287f, -0.478203f, -0.47812f, -0.478036f, -0.477953f, -0.47787f, -0.477786f, -0.477703f, -0.477619f, -0.477536f, -0.477453f, -0.477369f, -0.477286f, -0.477202f, -0.477119f, -0.477035f, -0.476952f, -0.476869f, -0.476785f, -0.476702f,
+-0.476618f, -0.476535f, -0.476451f, -0.476368f, -0.476284f, -0.476201f, -0.476117f, -0.476034f, -0.47595f, -0.475866f, -0.475783f, -0.475699f, -0.475616f, -0.475532f, -0.475449f, -0.475365f, -0.475281f, -0.475198f, -0.475114f, -0.475031f,
+-0.474947f, -0.474863f, -0.47478f, -0.474696f, -0.474612f, -0.474529f, -0.474445f, -0.474362f, -0.474278f, -0.474194f, -0.47411f, -0.474027f, -0.473943f, -0.473859f, -0.473776f, -0.473692f, -0.473608f, -0.473525f, -0.473441f, -0.473357f,
+-0.473273f, -0.47319f, -0.473106f, -0.473022f, -0.472938f, -0.472854f, -0.472771f, -0.472687f, -0.472603f, -0.472519f, -0.472435f, -0.472352f, -0.472268f, -0.472184f, -0.4721f, -0.472016f, -0.471932f, -0.471849f, -0.471765f, -0.471681f,
+-0.471597f, -0.471513f, -0.471429f, -0.471345f, -0.471261f, -0.471177f, -0.471093f, -0.47101f, -0.470926f, -0.470842f, -0.470758f, -0.470674f, -0.47059f, -0.470506f, -0.470422f, -0.470338f, -0.470254f, -0.47017f, -0.470086f, -0.470002f,
+-0.469918f, -0.469834f, -0.46975f, -0.469666f, -0.469582f, -0.469498f, -0.469414f, -0.46933f, -0.469246f, -0.469161f, -0.469077f, -0.468993f, -0.468909f, -0.468825f, -0.468741f, -0.468657f, -0.468573f, -0.468489f, -0.468405f, -0.46832f,
+-0.468236f, -0.468152f, -0.468068f, -0.467984f, -0.4679f, -0.467815f, -0.467731f, -0.467647f, -0.467563f, -0.467479f, -0.467394f, -0.46731f, -0.467226f, -0.467142f, -0.467058f, -0.466973f, -0.466889f, -0.466805f, -0.466721f, -0.466636f,
+-0.466552f, -0.466468f, -0.466383f, -0.466299f, -0.466215f, -0.466131f, -0.466046f, -0.465962f, -0.465878f, -0.465793f, -0.465709f, -0.465625f, -0.46554f, -0.465456f, -0.465371f, -0.465287f, -0.465203f, -0.465118f, -0.465034f, -0.46495f,
+-0.464865f, -0.464781f, -0.464696f, -0.464612f, -0.464527f, -0.464443f, -0.464359f, -0.464274f, -0.46419f, -0.464105f, -0.464021f, -0.463936f, -0.463852f, -0.463767f, -0.463683f, -0.463598f, -0.463514f, -0.463429f, -0.463345f, -0.46326f,
+-0.463176f, -0.463091f, -0.463007f, -0.462922f, -0.462837f, -0.462753f, -0.462668f, -0.462584f, -0.462499f, -0.462415f, -0.46233f, -0.462245f, -0.462161f, -0.462076f, -0.461992f, -0.461907f, -0.461822f, -0.461738f, -0.461653f, -0.461568f,
+-0.461484f, -0.461399f, -0.461314f, -0.46123f, -0.461145f, -0.46106f, -0.460976f, -0.460891f, -0.460806f, -0.460721f, -0.460637f, -0.460552f, -0.460467f, -0.460382f, -0.460298f, -0.460213f, -0.460128f, -0.460043f, -0.459959f, -0.459874f,
+-0.459789f, -0.459704f, -0.459619f, -0.459535f, -0.45945f, -0.459365f, -0.45928f, -0.459195f, -0.45911f, -0.459026f, -0.458941f, -0.458856f, -0.458771f, -0.458686f, -0.458601f, -0.458516f, -0.458431f, -0.458347f, -0.458262f, -0.458177f,
+-0.458092f, -0.458007f, -0.457922f, -0.457837f, -0.457752f, -0.457667f, -0.457582f, -0.457497f, -0.457412f, -0.457327f, -0.457242f, -0.457157f, -0.457072f, -0.456987f, -0.456902f, -0.456817f, -0.456732f, -0.456647f, -0.456562f, -0.456477f,
+-0.456392f, -0.456307f, -0.456222f, -0.456137f, -0.456052f, -0.455967f, -0.455882f, -0.455797f, -0.455711f, -0.455626f, -0.455541f, -0.455456f, -0.455371f, -0.455286f, -0.455201f, -0.455116f, -0.45503f, -0.454945f, -0.45486f, -0.454775f,
+-0.45469f, -0.454605f, -0.454519f, -0.454434f, -0.454349f, -0.454264f, -0.454179f, -0.454093f, -0.454008f, -0.453923f, -0.453838f, -0.453752f, -0.453667f, -0.453582f, -0.453497f, -0.453411f, -0.453326f, -0.453241f, -0.453156f, -0.45307f,
+-0.452985f, -0.4529f, -0.452814f, -0.452729f, -0.452644f, -0.452558f, -0.452473f, -0.452388f, -0.452302f, -0.452217f, -0.452132f, -0.452046f, -0.451961f, -0.451875f, -0.45179f, -0.451705f, -0.451619f, -0.451534f, -0.451448f, -0.451363f,
+-0.451278f, -0.451192f, -0.451107f, -0.451021f, -0.450936f, -0.45085f, -0.450765f, -0.450679f, -0.450594f, -0.450508f, -0.450423f, -0.450337f, -0.450252f, -0.450166f, -0.450081f, -0.449995f, -0.44991f, -0.449824f, -0.449739f, -0.449653f,
+-0.449568f, -0.449482f, -0.449397f, -0.449311f, -0.449225f, -0.44914f, -0.449054f, -0.448969f, -0.448883f, -0.448797f, -0.448712f, -0.448626f, -0.44854f, -0.448455f, -0.448369f, -0.448284f, -0.448198f, -0.448112f, -0.448027f, -0.447941f,
+-0.447855f, -0.44777f, -0.447684f, -0.447598f, -0.447512f, -0.447427f, -0.447341f, -0.447255f, -0.44717f, -0.447084f, -0.446998f, -0.446912f, -0.446827f, -0.446741f, -0.446655f, -0.446569f, -0.446483f, -0.446398f, -0.446312f, -0.446226f,
+-0.44614f, -0.446054f, -0.445969f, -0.445883f, -0.445797f, -0.445711f, -0.445625f, -0.445539f, -0.445454f, -0.445368f, -0.445282f, -0.445196f, -0.44511f, -0.445024f, -0.444938f, -0.444852f, -0.444767f, -0.444681f, -0.444595f, -0.444509f,
+-0.444423f, -0.444337f, -0.444251f, -0.444165f, -0.444079f, -0.443993f, -0.443907f, -0.443821f, -0.443735f, -0.443649f, -0.443563f, -0.443477f, -0.443391f, -0.443305f, -0.443219f, -0.443133f, -0.443047f, -0.442961f, -0.442875f, -0.442789f,
+-0.442703f, -0.442617f, -0.442531f, -0.442445f, -0.442359f, -0.442273f, -0.442186f, -0.4421f, -0.442014f, -0.441928f, -0.441842f, -0.441756f, -0.44167f, -0.441584f, -0.441498f, -0.441411f, -0.441325f, -0.441239f, -0.441153f, -0.441067f,
+-0.440981f, -0.440894f, -0.440808f, -0.440722f, -0.440636f, -0.44055f, -0.440463f, -0.440377f, -0.440291f, -0.440205f, -0.440118f, -0.440032f, -0.439946f, -0.43986f, -0.439773f, -0.439687f, -0.439601f, -0.439515f, -0.439428f, -0.439342f,
+-0.439256f, -0.439169f, -0.439083f, -0.438997f, -0.43891f, -0.438824f, -0.438738f, -0.438651f, -0.438565f, -0.438479f, -0.438392f, -0.438306f, -0.43822f, -0.438133f, -0.438047f, -0.43796f, -0.437874f, -0.437788f, -0.437701f, -0.437615f,
+-0.437528f, -0.437442f, -0.437355f, -0.437269f, -0.437183f, -0.437096f, -0.43701f, -0.436923f, -0.436837f, -0.43675f, -0.436664f, -0.436577f, -0.436491f, -0.436404f, -0.436318f, -0.436231f, -0.436145f, -0.436058f, -0.435972f, -0.435885f,
+-0.435799f, -0.435712f, -0.435625f, -0.435539f, -0.435452f, -0.435366f, -0.435279f, -0.435193f, -0.435106f, -0.435019f, -0.434933f, -0.434846f, -0.43476f, -0.434673f, -0.434586f, -0.4345f, -0.434413f, -0.434326f, -0.43424f, -0.434153f,
+-0.434066f, -0.43398f, -0.433893f, -0.433806f, -0.43372f, -0.433633f, -0.433546f, -0.433459f, -0.433373f, -0.433286f, -0.433199f, -0.433113f, -0.433026f, -0.432939f, -0.432852f, -0.432766f, -0.432679f, -0.432592f, -0.432505f, -0.432418f,
+-0.432332f, -0.432245f, -0.432158f, -0.432071f, -0.431984f, -0.431898f, -0.431811f, -0.431724f, -0.431637f, -0.43155f, -0.431463f, -0.431377f, -0.43129f, -0.431203f, -0.431116f, -0.431029f, -0.430942f, -0.430855f, -0.430768f, -0.430681f,
+-0.430595f, -0.430508f, -0.430421f, -0.430334f, -0.430247f, -0.43016f, -0.430073f, -0.429986f, -0.429899f, -0.429812f, -0.429725f, -0.429638f, -0.429551f, -0.429464f, -0.429377f, -0.42929f, -0.429203f, -0.429116f, -0.429029f, -0.428942f,
+-0.428855f, -0.428768f, -0.428681f, -0.428594f, -0.428507f, -0.42842f, -0.428333f, -0.428246f, -0.428159f, -0.428072f, -0.427984f, -0.427897f, -0.42781f, -0.427723f, -0.427636f, -0.427549f, -0.427462f, -0.427375f, -0.427287f, -0.4272f,
+-0.427113f, -0.427026f, -0.426939f, -0.426852f, -0.426764f, -0.426677f, -0.42659f, -0.426503f, -0.426416f, -0.426329f, -0.426241f, -0.426154f, -0.426067f, -0.42598f, -0.425892f, -0.425805f, -0.425718f, -0.425631f, -0.425543f, -0.425456f,
+-0.425369f, -0.425282f, -0.425194f, -0.425107f, -0.42502f, -0.424932f, -0.424845f, -0.424758f, -0.42467f, -0.424583f, -0.424496f, -0.424408f, -0.424321f, -0.424234f, -0.424146f, -0.424059f, -0.423972f, -0.423884f, -0.423797f, -0.42371f,
+-0.423622f, -0.423535f, -0.423447f, -0.42336f, -0.423273f, -0.423185f, -0.423098f, -0.42301f, -0.422923f, -0.422835f, -0.422748f, -0.42266f, -0.422573f, -0.422486f, -0.422398f, -0.422311f, -0.422223f, -0.422136f, -0.422048f, -0.421961f,
+-0.421873f, -0.421786f, -0.421698f, -0.421611f, -0.421523f, -0.421435f, -0.421348f, -0.42126f, -0.421173f, -0.421085f, -0.420998f, -0.42091f, -0.420822f, -0.420735f, -0.420647f, -0.42056f, -0.420472f, -0.420384f, -0.420297f, -0.420209f,
+-0.420122f, -0.420034f, -0.419946f, -0.419859f, -0.419771f, -0.419683f, -0.419596f, -0.419508f, -0.41942f, -0.419333f, -0.419245f, -0.419157f, -0.41907f, -0.418982f, -0.418894f, -0.418806f, -0.418719f, -0.418631f, -0.418543f, -0.418456f,
+-0.418368f, -0.41828f, -0.418192f, -0.418105f, -0.418017f, -0.417929f, -0.417841f, -0.417753f, -0.417666f, -0.417578f, -0.41749f, -0.417402f, -0.417314f, -0.417227f, -0.417139f, -0.417051f, -0.416963f, -0.416875f, -0.416787f, -0.416699f,
+-0.416612f, -0.416524f, -0.416436f, -0.416348f, -0.41626f, -0.416172f, -0.416084f, -0.415996f, -0.415909f, -0.415821f, -0.415733f, -0.415645f, -0.415557f, -0.415469f, -0.415381f, -0.415293f, -0.415205f, -0.415117f, -0.415029f, -0.414941f,
+-0.414853f, -0.414765f, -0.414677f, -0.414589f, -0.414501f, -0.414413f, -0.414325f, -0.414237f, -0.414149f, -0.414061f, -0.413973f, -0.413885f, -0.413797f, -0.413709f, -0.413621f, -0.413533f, -0.413445f, -0.413357f, -0.413268f, -0.41318f,
+-0.413092f, -0.413004f, -0.412916f, -0.412828f, -0.41274f, -0.412652f, -0.412564f, -0.412475f, -0.412387f, -0.412299f, -0.412211f, -0.412123f, -0.412035f, -0.411946f, -0.411858f, -0.41177f, -0.411682f, -0.411594f, -0.411506f, -0.411417f,
+-0.411329f, -0.411241f, -0.411153f, -0.411064f, -0.410976f, -0.410888f, -0.4108f, -0.410711f, -0.410623f, -0.410535f, -0.410447f, -0.410358f, -0.41027f, -0.410182f, -0.410094f, -0.410005f, -0.409917f, -0.409829f, -0.40974f, -0.409652f,
+-0.409564f, -0.409475f, -0.409387f, -0.409299f, -0.40921f, -0.409122f, -0.409034f, -0.408945f, -0.408857f, -0.408768f, -0.40868f, -0.408592f, -0.408503f, -0.408415f, -0.408326f, -0.408238f, -0.40815f, -0.408061f, -0.407973f, -0.407884f,
+-0.407796f, -0.407707f, -0.407619f, -0.40753f, -0.407442f, -0.407354f, -0.407265f, -0.407177f, -0.407088f, -0.407f, -0.406911f, -0.406823f, -0.406734f, -0.406646f, -0.406557f, -0.406468f, -0.40638f, -0.406291f, -0.406203f, -0.406114f,
+-0.406026f, -0.405937f, -0.405849f, -0.40576f, -0.405671f, -0.405583f, -0.405494f, -0.405406f, -0.405317f, -0.405228f, -0.40514f, -0.405051f, -0.404963f, -0.404874f, -0.404785f, -0.404697f, -0.404608f, -0.404519f, -0.404431f, -0.404342f,
+-0.404253f, -0.404165f, -0.404076f, -0.403987f, -0.403899f, -0.40381f, -0.403721f, -0.403632f, -0.403544f, -0.403455f, -0.403366f, -0.403278f, -0.403189f, -0.4031f, -0.403011f, -0.402923f, -0.402834f, -0.402745f, -0.402656f, -0.402567f,
+-0.402479f, -0.40239f, -0.402301f, -0.402212f, -0.402123f, -0.402035f, -0.401946f, -0.401857f, -0.401768f, -0.401679f, -0.401591f, -0.401502f, -0.401413f, -0.401324f, -0.401235f, -0.401146f, -0.401057f, -0.400968f, -0.40088f, -0.400791f,
+-0.400702f, -0.400613f, -0.400524f, -0.400435f, -0.400346f, -0.400257f, -0.400168f, -0.400079f, -0.39999f, -0.399901f, -0.399812f, -0.399724f, -0.399635f, -0.399546f, -0.399457f, -0.399368f, -0.399279f, -0.39919f, -0.399101f, -0.399012f,
+-0.398923f, -0.398834f, -0.398745f, -0.398656f, -0.398566f, -0.398477f, -0.398388f, -0.398299f, -0.39821f, -0.398121f, -0.398032f, -0.397943f, -0.397854f, -0.397765f, -0.397676f, -0.397587f, -0.397498f, -0.397409f, -0.397319f, -0.39723f,
+-0.397141f, -0.397052f, -0.396963f, -0.396874f, -0.396785f, -0.396695f, -0.396606f, -0.396517f, -0.396428f, -0.396339f, -0.39625f, -0.39616f, -0.396071f, -0.395982f, -0.395893f, -0.395804f, -0.395714f, -0.395625f, -0.395536f, -0.395447f,
+-0.395357f, -0.395268f, -0.395179f, -0.39509f, -0.395f, -0.394911f, -0.394822f, -0.394733f, -0.394643f, -0.394554f, -0.394465f, -0.394376f, -0.394286f, -0.394197f, -0.394108f, -0.394018f, -0.393929f, -0.39384f, -0.39375f, -0.393661f,
+-0.393572f, -0.393482f, -0.393393f, -0.393303f, -0.393214f, -0.393125f, -0.393035f, -0.392946f, -0.392857f, -0.392767f, -0.392678f, -0.392588f, -0.392499f, -0.39241f, -0.39232f, -0.392231f, -0.392141f, -0.392052f, -0.391962f, -0.391873f,
+-0.391783f, -0.391694f, -0.391605f, -0.391515f, -0.391426f, -0.391336f, -0.391247f, -0.391157f, -0.391068f, -0.390978f, -0.390889f, -0.390799f, -0.390709f, -0.39062f, -0.39053f, -0.390441f, -0.390351f, -0.390262f, -0.390172f, -0.390083f,
+-0.389993f, -0.389904f, -0.389814f, -0.389724f, -0.389635f, -0.389545f, -0.389456f, -0.389366f, -0.389276f, -0.389187f, -0.389097f, -0.389007f, -0.388918f, -0.388828f, -0.388739f, -0.388649f, -0.388559f, -0.38847f, -0.38838f, -0.38829f,
+-0.388201f, -0.388111f, -0.388021f, -0.387931f, -0.387842f, -0.387752f, -0.387662f, -0.387573f, -0.387483f, -0.387393f, -0.387303f, -0.387214f, -0.387124f, -0.387034f, -0.386944f, -0.386855f, -0.386765f, -0.386675f, -0.386585f, -0.386496f,
+-0.386406f, -0.386316f, -0.386226f, -0.386136f, -0.386047f, -0.385957f, -0.385867f, -0.385777f, -0.385687f, -0.385597f, -0.385508f, -0.385418f, -0.385328f, -0.385238f, -0.385148f, -0.385058f, -0.384968f, -0.384879f, -0.384789f, -0.384699f,
+-0.384609f, -0.384519f, -0.384429f, -0.384339f, -0.384249f, -0.384159f, -0.384069f, -0.383979f, -0.383889f, -0.3838f, -0.38371f, -0.38362f, -0.38353f, -0.38344f, -0.38335f, -0.38326f, -0.38317f, -0.38308f, -0.38299f, -0.3829f,
+-0.38281f, -0.38272f, -0.38263f, -0.38254f, -0.38245f, -0.38236f, -0.38227f, -0.38218f, -0.38209f, -0.381999f, -0.381909f, -0.381819f, -0.381729f, -0.381639f, -0.381549f, -0.381459f, -0.381369f, -0.381279f, -0.381189f, -0.381099f,
+-0.381008f, -0.380918f, -0.380828f, -0.380738f, -0.380648f, -0.380558f, -0.380468f, -0.380378f, -0.380287f, -0.380197f, -0.380107f, -0.380017f, -0.379927f, -0.379837f, -0.379746f, -0.379656f, -0.379566f, -0.379476f, -0.379386f, -0.379295f,
+-0.379205f, -0.379115f, -0.379025f, -0.378934f, -0.378844f, -0.378754f, -0.378664f, -0.378573f, -0.378483f, -0.378393f, -0.378303f, -0.378212f, -0.378122f, -0.378032f, -0.377941f, -0.377851f, -0.377761f, -0.37767f, -0.37758f, -0.37749f,
+-0.377399f, -0.377309f, -0.377219f, -0.377128f, -0.377038f, -0.376948f, -0.376857f, -0.376767f, -0.376677f, -0.376586f, -0.376496f, -0.376406f, -0.376315f, -0.376225f, -0.376134f, -0.376044f, -0.375953f, -0.375863f, -0.375773f, -0.375682f,
+-0.375592f, -0.375501f, -0.375411f, -0.37532f, -0.37523f, -0.37514f, -0.375049f, -0.374959f, -0.374868f, -0.374778f, -0.374687f, -0.374597f, -0.374506f, -0.374416f, -0.374325f, -0.374235f, -0.374144f, -0.374054f, -0.373963f, -0.373872f,
+-0.373782f, -0.373691f, -0.373601f, -0.37351f, -0.37342f, -0.373329f, -0.373239f, -0.373148f, -0.373057f, -0.372967f, -0.372876f, -0.372786f, -0.372695f, -0.372604f, -0.372514f, -0.372423f, -0.372333f, -0.372242f, -0.372151f, -0.372061f,
+-0.37197f, -0.371879f, -0.371789f, -0.371698f, -0.371607f, -0.371517f, -0.371426f, -0.371335f, -0.371245f, -0.371154f, -0.371063f, -0.370973f, -0.370882f, -0.370791f, -0.3707f, -0.37061f, -0.370519f, -0.370428f, -0.370337f, -0.370247f,
+-0.370156f, -0.370065f, -0.369974f, -0.369884f, -0.369793f, -0.369702f, -0.369611f, -0.36952f, -0.36943f, -0.369339f, -0.369248f, -0.369157f, -0.369066f, -0.368976f, -0.368885f, -0.368794f, -0.368703f, -0.368612f, -0.368521f, -0.368431f,
+-0.36834f, -0.368249f, -0.368158f, -0.368067f, -0.367976f, -0.367885f, -0.367794f, -0.367704f, -0.367613f, -0.367522f, -0.367431f, -0.36734f, -0.367249f, -0.367158f, -0.367067f, -0.366976f, -0.366885f, -0.366794f, -0.366703f, -0.366612f,
+-0.366521f, -0.366431f, -0.36634f, -0.366249f, -0.366158f, -0.366067f, -0.365976f, -0.365885f, -0.365794f, -0.365703f, -0.365612f, -0.365521f, -0.36543f, -0.365339f, -0.365247f, -0.365156f, -0.365065f, -0.364974f, -0.364883f, -0.364792f,
+-0.364701f, -0.36461f, -0.364519f, -0.364428f, -0.364337f, -0.364246f, -0.364155f, -0.364064f, -0.363972f, -0.363881f, -0.36379f, -0.363699f, -0.363608f, -0.363517f, -0.363426f, -0.363335f, -0.363243f, -0.363152f, -0.363061f, -0.36297f,
+-0.362879f, -0.362788f, -0.362696f, -0.362605f, -0.362514f, -0.362423f, -0.362332f, -0.36224f, -0.362149f, -0.362058f, -0.361967f, -0.361876f, -0.361784f, -0.361693f, -0.361602f, -0.361511f, -0.361419f, -0.361328f, -0.361237f, -0.361146f,
+-0.361054f, -0.360963f, -0.360872f, -0.36078f, -0.360689f, -0.360598f, -0.360507f, -0.360415f, -0.360324f, -0.360233f, -0.360141f, -0.36005f, -0.359959f, -0.359867f, -0.359776f, -0.359685f, -0.359593f, -0.359502f, -0.35941f, -0.359319f,
+-0.359228f, -0.359136f, -0.359045f, -0.358954f, -0.358862f, -0.358771f, -0.358679f, -0.358588f, -0.358497f, -0.358405f, -0.358314f, -0.358222f, -0.358131f, -0.358039f, -0.357948f, -0.357857f, -0.357765f, -0.357674f, -0.357582f, -0.357491f,
+-0.357399f, -0.357308f, -0.357216f, -0.357125f, -0.357033f, -0.356942f, -0.35685f, -0.356759f, -0.356667f, -0.356576f, -0.356484f, -0.356393f, -0.356301f, -0.35621f, -0.356118f, -0.356026f, -0.355935f, -0.355843f, -0.355752f, -0.35566f,
+-0.355569f, -0.355477f, -0.355385f, -0.355294f, -0.355202f, -0.355111f, -0.355019f, -0.354927f, -0.354836f, -0.354744f, -0.354653f, -0.354561f, -0.354469f, -0.354378f, -0.354286f, -0.354194f, -0.354103f, -0.354011f, -0.353919f, -0.353828f,
+-0.353736f, -0.353644f, -0.353553f, -0.353461f, -0.353369f, -0.353277f, -0.353186f, -0.353094f, -0.353002f, -0.352911f, -0.352819f, -0.352727f, -0.352635f, -0.352544f, -0.352452f, -0.35236f, -0.352268f, -0.352177f, -0.352085f, -0.351993f,
+-0.351901f, -0.35181f, -0.351718f, -0.351626f, -0.351534f, -0.351442f, -0.351351f, -0.351259f, -0.351167f, -0.351075f, -0.350983f, -0.350891f, -0.3508f, -0.350708f, -0.350616f, -0.350524f, -0.350432f, -0.35034f, -0.350248f, -0.350157f,
+-0.350065f, -0.349973f, -0.349881f, -0.349789f, -0.349697f, -0.349605f, -0.349513f, -0.349421f, -0.349329f, -0.349238f, -0.349146f, -0.349054f, -0.348962f, -0.34887f, -0.348778f, -0.348686f, -0.348594f, -0.348502f, -0.34841f, -0.348318f,
+-0.348226f, -0.348134f, -0.348042f, -0.34795f, -0.347858f, -0.347766f, -0.347674f, -0.347582f, -0.34749f, -0.347398f, -0.347306f, -0.347214f, -0.347122f, -0.34703f, -0.346938f, -0.346846f, -0.346754f, -0.346662f, -0.34657f, -0.346477f,
+-0.346385f, -0.346293f, -0.346201f, -0.346109f, -0.346017f, -0.345925f, -0.345833f, -0.345741f, -0.345649f, -0.345556f, -0.345464f, -0.345372f, -0.34528f, -0.345188f, -0.345096f, -0.345004f, -0.344911f, -0.344819f, -0.344727f, -0.344635f,
+-0.344543f, -0.344451f, -0.344358f, -0.344266f, -0.344174f, -0.344082f, -0.34399f, -0.343897f, -0.343805f, -0.343713f, -0.343621f, -0.343529f, -0.343436f, -0.343344f, -0.343252f, -0.34316f, -0.343067f, -0.342975f, -0.342883f, -0.342791f,
+-0.342698f, -0.342606f, -0.342514f, -0.342421f, -0.342329f, -0.342237f, -0.342145f, -0.342052f, -0.34196f, -0.341868f, -0.341775f, -0.341683f, -0.341591f, -0.341498f, -0.341406f, -0.341314f, -0.341221f, -0.341129f, -0.341036f, -0.340944f,
+-0.340852f, -0.340759f, -0.340667f, -0.340575f, -0.340482f, -0.34039f, -0.340297f, -0.340205f, -0.340113f, -0.34002f, -0.339928f, -0.339835f, -0.339743f, -0.33965f, -0.339558f, -0.339466f, -0.339373f, -0.339281f, -0.339188f, -0.339096f,
+-0.339003f, -0.338911f, -0.338818f, -0.338726f, -0.338633f, -0.338541f, -0.338448f, -0.338356f, -0.338263f, -0.338171f, -0.338078f, -0.337986f, -0.337893f, -0.337801f, -0.337708f, -0.337616f, -0.337523f, -0.337431f, -0.337338f, -0.337245f,
+-0.337153f, -0.33706f, -0.336968f, -0.336875f, -0.336783f, -0.33669f, -0.336597f, -0.336505f, -0.336412f, -0.33632f, -0.336227f, -0.336134f, -0.336042f, -0.335949f, -0.335856f, -0.335764f, -0.335671f, -0.335579f, -0.335486f, -0.335393f,
+-0.335301f, -0.335208f, -0.335115f, -0.335023f, -0.33493f, -0.334837f, -0.334744f, -0.334652f, -0.334559f, -0.334466f, -0.334374f, -0.334281f, -0.334188f, -0.334096f, -0.334003f, -0.33391f, -0.333817f, -0.333725f, -0.333632f, -0.333539f,
+-0.333446f, -0.333354f, -0.333261f, -0.333168f, -0.333075f, -0.332982f, -0.33289f, -0.332797f, -0.332704f, -0.332611f, -0.332518f, -0.332426f, -0.332333f, -0.33224f, -0.332147f, -0.332054f, -0.331962f, -0.331869f, -0.331776f, -0.331683f,
+-0.33159f, -0.331497f, -0.331404f, -0.331312f, -0.331219f, -0.331126f, -0.331033f, -0.33094f, -0.330847f, -0.330754f, -0.330661f, -0.330568f, -0.330476f, -0.330383f, -0.33029f, -0.330197f, -0.330104f, -0.330011f, -0.329918f, -0.329825f,
+-0.329732f, -0.329639f, -0.329546f, -0.329453f, -0.32936f, -0.329267f, -0.329174f, -0.329081f, -0.328988f, -0.328895f, -0.328802f, -0.328709f, -0.328616f, -0.328523f, -0.32843f, -0.328337f, -0.328244f, -0.328151f, -0.328058f, -0.327965f,
+-0.327872f, -0.327779f, -0.327686f, -0.327593f, -0.3275f, -0.327407f, -0.327314f, -0.327221f, -0.327128f, -0.327035f, -0.326941f, -0.326848f, -0.326755f, -0.326662f, -0.326569f, -0.326476f, -0.326383f, -0.32629f, -0.326197f, -0.326103f,
+-0.32601f, -0.325917f, -0.325824f, -0.325731f, -0.325638f, -0.325545f, -0.325451f, -0.325358f, -0.325265f, -0.325172f, -0.325079f, -0.324986f, -0.324892f, -0.324799f, -0.324706f, -0.324613f, -0.32452f, -0.324426f, -0.324333f, -0.32424f,
+-0.324147f, -0.324053f, -0.32396f, -0.323867f, -0.323774f, -0.32368f, -0.323587f, -0.323494f, -0.323401f, -0.323307f, -0.323214f, -0.323121f, -0.323028f, -0.322934f, -0.322841f, -0.322748f, -0.322654f, -0.322561f, -0.322468f, -0.322374f,
+-0.322281f, -0.322188f, -0.322094f, -0.322001f, -0.321908f, -0.321814f, -0.321721f, -0.321628f, -0.321534f, -0.321441f, -0.321348f, -0.321254f, -0.321161f, -0.321068f, -0.320974f, -0.320881f, -0.320787f, -0.320694f, -0.320601f, -0.320507f,
+-0.320414f, -0.32032f, -0.320227f, -0.320133f, -0.32004f, -0.319947f, -0.319853f, -0.31976f, -0.319666f, -0.319573f, -0.319479f, -0.319386f, -0.319292f, -0.319199f, -0.319105f, -0.319012f, -0.318918f, -0.318825f, -0.318731f, -0.318638f,
+-0.318544f, -0.318451f, -0.318357f, -0.318264f, -0.31817f, -0.318077f, -0.317983f, -0.31789f, -0.317796f, -0.317703f, -0.317609f, -0.317516f, -0.317422f, -0.317329f, -0.317235f, -0.317141f, -0.317048f, -0.316954f, -0.316861f, -0.316767f,
+-0.316673f, -0.31658f, -0.316486f, -0.316393f, -0.316299f, -0.316205f, -0.316112f, -0.316018f, -0.315924f, -0.315831f, -0.315737f, -0.315644f, -0.31555f, -0.315456f, -0.315363f, -0.315269f, -0.315175f, -0.315082f, -0.314988f, -0.314894f,
+-0.314801f, -0.314707f, -0.314613f, -0.314519f, -0.314426f, -0.314332f, -0.314238f, -0.314145f, -0.314051f, -0.313957f, -0.313863f, -0.31377f, -0.313676f, -0.313582f, -0.313488f, -0.313395f, -0.313301f, -0.313207f, -0.313113f, -0.31302f,
+-0.312926f, -0.312832f, -0.312738f, -0.312644f, -0.312551f, -0.312457f, -0.312363f, -0.312269f, -0.312175f, -0.312082f, -0.311988f, -0.311894f, -0.3118f, -0.311706f, -0.311613f, -0.311519f, -0.311425f, -0.311331f, -0.311237f, -0.311143f,
+-0.311049f, -0.310955f, -0.310862f, -0.310768f, -0.310674f, -0.31058f, -0.310486f, -0.310392f, -0.310298f, -0.310204f, -0.31011f, -0.310017f, -0.309923f, -0.309829f, -0.309735f, -0.309641f, -0.309547f, -0.309453f, -0.309359f, -0.309265f,
+-0.309171f, -0.309077f, -0.308983f, -0.308889f, -0.308795f, -0.308701f, -0.308607f, -0.308513f, -0.308419f, -0.308325f, -0.308231f, -0.308137f, -0.308043f, -0.307949f, -0.307855f, -0.307761f, -0.307667f, -0.307573f, -0.307479f, -0.307385f,
+-0.307291f, -0.307197f, -0.307103f, -0.307009f, -0.306915f, -0.306821f, -0.306727f, -0.306633f, -0.306539f, -0.306444f, -0.30635f, -0.306256f, -0.306162f, -0.306068f, -0.305974f, -0.30588f, -0.305786f, -0.305692f, -0.305597f, -0.305503f,
+-0.305409f, -0.305315f, -0.305221f, -0.305127f, -0.305033f, -0.304938f, -0.304844f, -0.30475f, -0.304656f, -0.304562f, -0.304468f, -0.304373f, -0.304279f, -0.304185f, -0.304091f, -0.303997f, -0.303902f, -0.303808f, -0.303714f, -0.30362f,
+-0.303526f, -0.303431f, -0.303337f, -0.303243f, -0.303149f, -0.303054f, -0.30296f, -0.302866f, -0.302772f, -0.302677f, -0.302583f, -0.302489f, -0.302395f, -0.3023f, -0.302206f, -0.302112f, -0.302017f, -0.301923f, -0.301829f, -0.301735f,
+-0.30164f, -0.301546f, -0.301452f, -0.301357f, -0.301263f, -0.301169f, -0.301074f, -0.30098f, -0.300886f, -0.300791f, -0.300697f, -0.300603f, -0.300508f, -0.300414f, -0.300319f, -0.300225f, -0.300131f, -0.300036f, -0.299942f, -0.299848f,
+-0.299753f, -0.299659f, -0.299564f, -0.29947f, -0.299376f, -0.299281f, -0.299187f, -0.299092f, -0.298998f, -0.298903f, -0.298809f, -0.298715f, -0.29862f, -0.298526f, -0.298431f, -0.298337f, -0.298242f, -0.298148f, -0.298053f, -0.297959f,
+-0.297864f, -0.29777f, -0.297675f, -0.297581f, -0.297486f, -0.297392f, -0.297297f, -0.297203f, -0.297108f, -0.297014f, -0.296919f, -0.296825f, -0.29673f, -0.296636f, -0.296541f, -0.296447f, -0.296352f, -0.296258f, -0.296163f, -0.296068f,
+-0.295974f, -0.295879f, -0.295785f, -0.29569f, -0.295596f, -0.295501f, -0.295406f, -0.295312f, -0.295217f, -0.295123f, -0.295028f, -0.294933f, -0.294839f, -0.294744f, -0.294649f, -0.294555f, -0.29446f, -0.294366f, -0.294271f, -0.294176f,
+-0.294082f, -0.293987f, -0.293892f, -0.293798f, -0.293703f, -0.293608f, -0.293514f, -0.293419f, -0.293324f, -0.293229f, -0.293135f, -0.29304f, -0.292945f, -0.292851f, -0.292756f, -0.292661f, -0.292567f, -0.292472f, -0.292377f, -0.292282f,
+-0.292188f, -0.292093f, -0.291998f, -0.291903f, -0.291809f, -0.291714f, -0.291619f, -0.291524f, -0.29143f, -0.291335f, -0.29124f, -0.291145f, -0.29105f, -0.290956f, -0.290861f, -0.290766f, -0.290671f, -0.290576f, -0.290482f, -0.290387f,
+-0.290292f, -0.290197f, -0.290102f, -0.290007f, -0.289913f, -0.289818f, -0.289723f, -0.289628f, -0.289533f, -0.289438f, -0.289344f, -0.289249f, -0.289154f, -0.289059f, -0.288964f, -0.288869f, -0.288774f, -0.288679f, -0.288584f, -0.28849f,
+-0.288395f, -0.2883f, -0.288205f, -0.28811f, -0.288015f, -0.28792f, -0.287825f, -0.28773f, -0.287635f, -0.28754f, -0.287445f, -0.28735f, -0.287255f, -0.28716f, -0.287066f, -0.286971f, -0.286876f, -0.286781f, -0.286686f, -0.286591f,
+-0.286496f, -0.286401f, -0.286306f, -0.286211f, -0.286116f, -0.286021f, -0.285926f, -0.285831f, -0.285736f, -0.285641f, -0.285546f, -0.28545f, -0.285355f, -0.28526f, -0.285165f, -0.28507f, -0.284975f, -0.28488f, -0.284785f, -0.28469f,
+-0.284595f, -0.2845f, -0.284405f, -0.28431f, -0.284215f, -0.28412f, -0.284024f, -0.283929f, -0.283834f, -0.283739f, -0.283644f, -0.283549f, -0.283454f, -0.283359f, -0.283264f, -0.283168f, -0.283073f, -0.282978f, -0.282883f, -0.282788f,
+-0.282693f, -0.282598f, -0.282502f, -0.282407f, -0.282312f, -0.282217f, -0.282122f, -0.282026f, -0.281931f, -0.281836f, -0.281741f, -0.281646f, -0.281551f, -0.281455f, -0.28136f, -0.281265f, -0.28117f, -0.281074f, -0.280979f, -0.280884f,
+-0.280789f, -0.280693f, -0.280598f, -0.280503f, -0.280408f, -0.280312f, -0.280217f, -0.280122f, -0.280027f, -0.279931f, -0.279836f, -0.279741f, -0.279646f, -0.27955f, -0.279455f, -0.27936f, -0.279264f, -0.279169f, -0.279074f, -0.278978f,
+-0.278883f, -0.278788f, -0.278693f, -0.278597f, -0.278502f, -0.278407f, -0.278311f, -0.278216f, -0.27812f, -0.278025f, -0.27793f, -0.277834f, -0.277739f, -0.277644f, -0.277548f, -0.277453f, -0.277358f, -0.277262f, -0.277167f, -0.277071f,
+-0.276976f, -0.276881f, -0.276785f, -0.27669f, -0.276594f, -0.276499f, -0.276403f, -0.276308f, -0.276213f, -0.276117f, -0.276022f, -0.275926f, -0.275831f, -0.275735f, -0.27564f, -0.275544f, -0.275449f, -0.275354f, -0.275258f, -0.275163f,
+-0.275067f, -0.274972f, -0.274876f, -0.274781f, -0.274685f, -0.27459f, -0.274494f, -0.274399f, -0.274303f, -0.274208f, -0.274112f, -0.274017f, -0.273921f, -0.273826f, -0.27373f, -0.273634f, -0.273539f, -0.273443f, -0.273348f, -0.273252f,
+-0.273157f, -0.273061f, -0.272966f, -0.27287f, -0.272774f, -0.272679f, -0.272583f, -0.272488f, -0.272392f, -0.272297f, -0.272201f, -0.272105f, -0.27201f, -0.271914f, -0.271818f, -0.271723f, -0.271627f, -0.271532f, -0.271436f, -0.27134f,
+-0.271245f, -0.271149f, -0.271053f, -0.270958f, -0.270862f, -0.270766f, -0.270671f, -0.270575f, -0.270479f, -0.270384f, -0.270288f, -0.270192f, -0.270097f, -0.270001f, -0.269905f, -0.26981f, -0.269714f, -0.269618f, -0.269523f, -0.269427f,
+-0.269331f, -0.269235f, -0.26914f, -0.269044f, -0.268948f, -0.268852f, -0.268757f, -0.268661f, -0.268565f, -0.268469f, -0.268374f, -0.268278f, -0.268182f, -0.268086f, -0.267991f, -0.267895f, -0.267799f, -0.267703f, -0.267608f, -0.267512f,
+-0.267416f, -0.26732f, -0.267224f, -0.267129f, -0.267033f, -0.266937f, -0.266841f, -0.266745f, -0.266649f, -0.266554f, -0.266458f, -0.266362f, -0.266266f, -0.26617f, -0.266074f, -0.265979f, -0.265883f, -0.265787f, -0.265691f, -0.265595f,
+-0.265499f, -0.265403f, -0.265307f, -0.265212f, -0.265116f, -0.26502f, -0.264924f, -0.264828f, -0.264732f, -0.264636f, -0.26454f, -0.264444f, -0.264348f, -0.264253f, -0.264157f, -0.264061f, -0.263965f, -0.263869f, -0.263773f, -0.263677f,
+-0.263581f, -0.263485f, -0.263389f, -0.263293f, -0.263197f, -0.263101f, -0.263005f, -0.262909f, -0.262813f, -0.262717f, -0.262621f, -0.262525f, -0.262429f, -0.262333f, -0.262237f, -0.262141f, -0.262045f, -0.261949f, -0.261853f, -0.261757f,
+-0.261661f, -0.261565f, -0.261469f, -0.261373f, -0.261277f, -0.261181f, -0.261085f, -0.260989f, -0.260893f, -0.260797f, -0.260701f, -0.260605f, -0.260509f, -0.260412f, -0.260316f, -0.26022f, -0.260124f, -0.260028f, -0.259932f, -0.259836f,
+-0.25974f, -0.259644f, -0.259548f, -0.259451f, -0.259355f, -0.259259f, -0.259163f, -0.259067f, -0.258971f, -0.258875f, -0.258779f, -0.258682f, -0.258586f, -0.25849f, -0.258394f, -0.258298f, -0.258202f, -0.258105f, -0.258009f, -0.257913f,
+-0.257817f, -0.257721f, -0.257625f, -0.257528f, -0.257432f, -0.257336f, -0.25724f, -0.257144f, -0.257047f, -0.256951f, -0.256855f, -0.256759f, -0.256662f, -0.256566f, -0.25647f, -0.256374f, -0.256278f, -0.256181f, -0.256085f, -0.255989f,
+-0.255893f, -0.255796f, -0.2557f, -0.255604f, -0.255507f, -0.255411f, -0.255315f, -0.255219f, -0.255122f, -0.255026f, -0.25493f, -0.254833f, -0.254737f, -0.254641f, -0.254545f, -0.254448f, -0.254352f, -0.254256f, -0.254159f, -0.254063f,
+-0.253967f, -0.25387f, -0.253774f, -0.253678f, -0.253581f, -0.253485f, -0.253389f, -0.253292f, -0.253196f, -0.2531f, -0.253003f, -0.252907f, -0.25281f, -0.252714f, -0.252618f, -0.252521f, -0.252425f, -0.252328f, -0.252232f, -0.252136f,
+-0.252039f, -0.251943f, -0.251846f, -0.25175f, -0.251654f, -0.251557f, -0.251461f, -0.251364f, -0.251268f, -0.251171f, -0.251075f, -0.250979f, -0.250882f, -0.250786f, -0.250689f, -0.250593f, -0.250496f, -0.2504f, -0.250303f, -0.250207f,
+-0.25011f, -0.250014f, -0.249917f, -0.249821f, -0.249724f, -0.249628f, -0.249531f, -0.249435f, -0.249338f, -0.249242f, -0.249145f, -0.249049f, -0.248952f, -0.248856f, -0.248759f, -0.248663f, -0.248566f, -0.24847f, -0.248373f, -0.248277f,
+-0.24818f, -0.248084f, -0.247987f, -0.24789f, -0.247794f, -0.247697f, -0.247601f, -0.247504f, -0.247408f, -0.247311f, -0.247214f, -0.247118f, -0.247021f, -0.246925f, -0.246828f, -0.246731f, -0.246635f, -0.246538f, -0.246442f, -0.246345f,
+-0.246248f, -0.246152f, -0.246055f, -0.245958f, -0.245862f, -0.245765f, -0.245668f, -0.245572f, -0.245475f, -0.245379f, -0.245282f, -0.245185f, -0.245089f, -0.244992f, -0.244895f, -0.244798f, -0.244702f, -0.244605f, -0.244508f, -0.244412f,
+-0.244315f, -0.244218f, -0.244122f, -0.244025f, -0.243928f, -0.243832f, -0.243735f, -0.243638f, -0.243541f, -0.243445f, -0.243348f, -0.243251f, -0.243154f, -0.243058f, -0.242961f, -0.242864f, -0.242767f, -0.242671f, -0.242574f, -0.242477f,
+-0.24238f, -0.242284f, -0.242187f, -0.24209f, -0.241993f, -0.241896f, -0.2418f, -0.241703f, -0.241606f, -0.241509f, -0.241412f, -0.241316f, -0.241219f, -0.241122f, -0.241025f, -0.240928f, -0.240832f, -0.240735f, -0.240638f, -0.240541f,
+-0.240444f, -0.240347f, -0.240251f, -0.240154f, -0.240057f, -0.23996f, -0.239863f, -0.239766f, -0.239669f, -0.239573f, -0.239476f, -0.239379f, -0.239282f, -0.239185f, -0.239088f, -0.238991f, -0.238894f, -0.238797f, -0.238701f, -0.238604f,
+-0.238507f, -0.23841f, -0.238313f, -0.238216f, -0.238119f, -0.238022f, -0.237925f, -0.237828f, -0.237731f, -0.237634f, -0.237537f, -0.23744f, -0.237344f, -0.237247f, -0.23715f, -0.237053f, -0.236956f, -0.236859f, -0.236762f, -0.236665f,
+-0.236568f, -0.236471f, -0.236374f, -0.236277f, -0.23618f, -0.236083f, -0.235986f, -0.235889f, -0.235792f, -0.235695f, -0.235598f, -0.235501f, -0.235404f, -0.235307f, -0.23521f, -0.235113f, -0.235016f, -0.234919f, -0.234822f, -0.234724f,
+-0.234627f, -0.23453f, -0.234433f, -0.234336f, -0.234239f, -0.234142f, -0.234045f, -0.233948f, -0.233851f, -0.233754f, -0.233657f, -0.23356f, -0.233463f, -0.233365f, -0.233268f, -0.233171f, -0.233074f, -0.232977f, -0.23288f, -0.232783f,
+-0.232686f, -0.232589f, -0.232491f, -0.232394f, -0.232297f, -0.2322f, -0.232103f, -0.232006f, -0.231909f, -0.231811f, -0.231714f, -0.231617f, -0.23152f, -0.231423f, -0.231326f, -0.231228f, -0.231131f, -0.231034f, -0.230937f, -0.23084f,
+-0.230743f, -0.230645f, -0.230548f, -0.230451f, -0.230354f, -0.230257f, -0.230159f, -0.230062f, -0.229965f, -0.229868f, -0.22977f, -0.229673f, -0.229576f, -0.229479f, -0.229382f, -0.229284f, -0.229187f, -0.22909f, -0.228993f, -0.228895f,
+-0.228798f, -0.228701f, -0.228604f, -0.228506f, -0.228409f, -0.228312f, -0.228214f, -0.228117f, -0.22802f, -0.227923f, -0.227825f, -0.227728f, -0.227631f, -0.227533f, -0.227436f, -0.227339f, -0.227241f, -0.227144f, -0.227047f, -0.22695f,
+-0.226852f, -0.226755f, -0.226658f, -0.22656f, -0.226463f, -0.226366f, -0.226268f, -0.226171f, -0.226074f, -0.225976f, -0.225879f, -0.225781f, -0.225684f, -0.225587f, -0.225489f, -0.225392f, -0.225295f, -0.225197f, -0.2251f, -0.225002f,
+-0.224905f, -0.224808f, -0.22471f, -0.224613f, -0.224515f, -0.224418f, -0.224321f, -0.224223f, -0.224126f, -0.224028f, -0.223931f, -0.223833f, -0.223736f, -0.223639f, -0.223541f, -0.223444f, -0.223346f, -0.223249f, -0.223151f, -0.223054f,
+-0.222956f, -0.222859f, -0.222762f, -0.222664f, -0.222567f, -0.222469f, -0.222372f, -0.222274f, -0.222177f, -0.222079f, -0.221982f, -0.221884f, -0.221787f, -0.221689f, -0.221592f, -0.221494f, -0.221397f, -0.221299f, -0.221202f, -0.221104f,
+-0.221007f, -0.220909f, -0.220812f, -0.220714f, -0.220616f, -0.220519f, -0.220421f, -0.220324f, -0.220226f, -0.220129f, -0.220031f, -0.219934f, -0.219836f, -0.219738f, -0.219641f, -0.219543f, -0.219446f, -0.219348f, -0.219251f, -0.219153f,
+-0.219055f, -0.218958f, -0.21886f, -0.218763f, -0.218665f, -0.218567f, -0.21847f, -0.218372f, -0.218275f, -0.218177f, -0.218079f, -0.217982f, -0.217884f, -0.217786f, -0.217689f, -0.217591f, -0.217494f, -0.217396f, -0.217298f, -0.217201f,
+-0.217103f, -0.217005f, -0.216908f, -0.21681f, -0.216712f, -0.216615f, -0.216517f, -0.216419f, -0.216322f, -0.216224f, -0.216126f, -0.216029f, -0.215931f, -0.215833f, -0.215735f, -0.215638f, -0.21554f, -0.215442f, -0.215345f, -0.215247f,
+-0.215149f, -0.215051f, -0.214954f, -0.214856f, -0.214758f, -0.21466f, -0.214563f, -0.214465f, -0.214367f, -0.21427f, -0.214172f, -0.214074f, -0.213976f, -0.213878f, -0.213781f, -0.213683f, -0.213585f, -0.213487f, -0.21339f, -0.213292f,
+-0.213194f, -0.213096f, -0.212998f, -0.212901f, -0.212803f, -0.212705f, -0.212607f, -0.212509f, -0.212412f, -0.212314f, -0.212216f, -0.212118f, -0.21202f, -0.211923f, -0.211825f, -0.211727f, -0.211629f, -0.211531f, -0.211433f, -0.211336f,
+-0.211238f, -0.21114f, -0.211042f, -0.210944f, -0.210846f, -0.210748f, -0.210651f, -0.210553f, -0.210455f, -0.210357f, -0.210259f, -0.210161f, -0.210063f, -0.209965f, -0.209867f, -0.20977f, -0.209672f, -0.209574f, -0.209476f, -0.209378f,
+-0.20928f, -0.209182f, -0.209084f, -0.208986f, -0.208888f, -0.20879f, -0.208693f, -0.208595f, -0.208497f, -0.208399f, -0.208301f, -0.208203f, -0.208105f, -0.208007f, -0.207909f, -0.207811f, -0.207713f, -0.207615f, -0.207517f, -0.207419f,
+-0.207321f, -0.207223f, -0.207125f, -0.207027f, -0.206929f, -0.206831f, -0.206733f, -0.206635f, -0.206537f, -0.206439f, -0.206341f, -0.206243f, -0.206145f, -0.206047f, -0.205949f, -0.205851f, -0.205753f, -0.205655f, -0.205557f, -0.205459f,
+-0.205361f, -0.205263f, -0.205165f, -0.205067f, -0.204969f, -0.204871f, -0.204773f, -0.204675f, -0.204577f, -0.204479f, -0.204381f, -0.204282f, -0.204184f, -0.204086f, -0.203988f, -0.20389f, -0.203792f, -0.203694f, -0.203596f, -0.203498f,
+-0.2034f, -0.203302f, -0.203203f, -0.203105f, -0.203007f, -0.202909f, -0.202811f, -0.202713f, -0.202615f, -0.202517f, -0.202419f, -0.20232f, -0.202222f, -0.202124f, -0.202026f, -0.201928f, -0.20183f, -0.201732f, -0.201633f, -0.201535f,
+-0.201437f, -0.201339f, -0.201241f, -0.201143f, -0.201044f, -0.200946f, -0.200848f, -0.20075f, -0.200652f, -0.200554f, -0.200455f, -0.200357f, -0.200259f, -0.200161f, -0.200063f, -0.199964f, -0.199866f, -0.199768f, -0.19967f, -0.199571f,
+-0.199473f, -0.199375f, -0.199277f, -0.199179f, -0.19908f, -0.198982f, -0.198884f, -0.198786f, -0.198687f, -0.198589f, -0.198491f, -0.198393f, -0.198294f, -0.198196f, -0.198098f, -0.198f, -0.197901f, -0.197803f, -0.197705f, -0.197607f,
+-0.197508f, -0.19741f, -0.197312f, -0.197213f, -0.197115f, -0.197017f, -0.196919f, -0.19682f, -0.196722f, -0.196624f, -0.196525f, -0.196427f, -0.196329f, -0.19623f, -0.196132f, -0.196034f, -0.195935f, -0.195837f, -0.195739f, -0.19564f,
+-0.195542f, -0.195444f, -0.195345f, -0.195247f, -0.195149f, -0.19505f, -0.194952f, -0.194854f, -0.194755f, -0.194657f, -0.194558f, -0.19446f, -0.194362f, -0.194263f, -0.194165f, -0.194067f, -0.193968f, -0.19387f, -0.193771f, -0.193673f,
+-0.193575f, -0.193476f, -0.193378f, -0.193279f, -0.193181f, -0.193083f, -0.192984f, -0.192886f, -0.192787f, -0.192689f, -0.19259f, -0.192492f, -0.192394f, -0.192295f, -0.192197f, -0.192098f, -0.192f, -0.191901f, -0.191803f, -0.191704f,
+-0.191606f, -0.191508f, -0.191409f, -0.191311f, -0.191212f, -0.191114f, -0.191015f, -0.190917f, -0.190818f, -0.19072f, -0.190621f, -0.190523f, -0.190424f, -0.190326f, -0.190227f, -0.190129f, -0.19003f, -0.189932f, -0.189833f, -0.189735f,
+-0.189636f, -0.189538f, -0.189439f, -0.189341f, -0.189242f, -0.189144f, -0.189045f, -0.188947f, -0.188848f, -0.18875f, -0.188651f, -0.188552f, -0.188454f, -0.188355f, -0.188257f, -0.188158f, -0.18806f, -0.187961f, -0.187863f, -0.187764f,
+-0.187665f, -0.187567f, -0.187468f, -0.18737f, -0.187271f, -0.187172f, -0.187074f, -0.186975f, -0.186877f, -0.186778f, -0.18668f, -0.186581f, -0.186482f, -0.186384f, -0.186285f, -0.186186f, -0.186088f, -0.185989f, -0.185891f, -0.185792f,
+-0.185693f, -0.185595f, -0.185496f, -0.185397f, -0.185299f, -0.1852f, -0.185102f, -0.185003f, -0.184904f, -0.184806f, -0.184707f, -0.184608f, -0.18451f, -0.184411f, -0.184312f, -0.184214f, -0.184115f, -0.184016f, -0.183918f, -0.183819f,
+-0.18372f, -0.183621f, -0.183523f, -0.183424f, -0.183325f, -0.183227f, -0.183128f, -0.183029f, -0.182931f, -0.182832f, -0.182733f, -0.182634f, -0.182536f, -0.182437f, -0.182338f, -0.18224f, -0.182141f, -0.182042f, -0.181943f, -0.181845f,
+-0.181746f, -0.181647f, -0.181548f, -0.18145f, -0.181351f, -0.181252f, -0.181153f, -0.181055f, -0.180956f, -0.180857f, -0.180758f, -0.18066f, -0.180561f, -0.180462f, -0.180363f, -0.180264f, -0.180166f, -0.180067f, -0.179968f, -0.179869f,
+-0.17977f, -0.179672f, -0.179573f, -0.179474f, -0.179375f, -0.179276f, -0.179178f, -0.179079f, -0.17898f, -0.178881f, -0.178782f, -0.178683f, -0.178585f, -0.178486f, -0.178387f, -0.178288f, -0.178189f, -0.17809f, -0.177992f, -0.177893f,
+-0.177794f, -0.177695f, -0.177596f, -0.177497f, -0.177398f, -0.1773f, -0.177201f, -0.177102f, -0.177003f, -0.176904f, -0.176805f, -0.176706f, -0.176607f, -0.176509f, -0.17641f, -0.176311f, -0.176212f, -0.176113f, -0.176014f, -0.175915f,
+-0.175816f, -0.175717f, -0.175618f, -0.17552f, -0.175421f, -0.175322f, -0.175223f, -0.175124f, -0.175025f, -0.174926f, -0.174827f, -0.174728f, -0.174629f, -0.17453f, -0.174431f, -0.174332f, -0.174233f, -0.174134f, -0.174036f, -0.173937f,
+-0.173838f, -0.173739f, -0.17364f, -0.173541f, -0.173442f, -0.173343f, -0.173244f, -0.173145f, -0.173046f, -0.172947f, -0.172848f, -0.172749f, -0.17265f, -0.172551f, -0.172452f, -0.172353f, -0.172254f, -0.172155f, -0.172056f, -0.171957f,
+-0.171858f, -0.171759f, -0.17166f, -0.171561f, -0.171462f, -0.171363f, -0.171264f, -0.171165f, -0.171066f, -0.170967f, -0.170868f, -0.170768f, -0.170669f, -0.17057f, -0.170471f, -0.170372f, -0.170273f, -0.170174f, -0.170075f, -0.169976f,
+-0.169877f, -0.169778f, -0.169679f, -0.16958f, -0.169481f, -0.169382f, -0.169283f, -0.169183f, -0.169084f, -0.168985f, -0.168886f, -0.168787f, -0.168688f, -0.168589f, -0.16849f, -0.168391f, -0.168292f, -0.168192f, -0.168093f, -0.167994f,
+-0.167895f, -0.167796f, -0.167697f, -0.167598f, -0.167499f, -0.167399f, -0.1673f, -0.167201f, -0.167102f, -0.167003f, -0.166904f, -0.166805f, -0.166705f, -0.166606f, -0.166507f, -0.166408f, -0.166309f, -0.16621f, -0.166111f, -0.166011f,
+-0.165912f, -0.165813f, -0.165714f, -0.165615f, -0.165515f, -0.165416f, -0.165317f, -0.165218f, -0.165119f, -0.16502f, -0.16492f, -0.164821f, -0.164722f, -0.164623f, -0.164524f, -0.164424f, -0.164325f, -0.164226f, -0.164127f, -0.164027f,
+-0.163928f, -0.163829f, -0.16373f, -0.163631f, -0.163531f, -0.163432f, -0.163333f, -0.163234f, -0.163134f, -0.163035f, -0.162936f, -0.162837f, -0.162737f, -0.162638f, -0.162539f, -0.16244f, -0.16234f, -0.162241f, -0.162142f, -0.162043f,
+-0.161943f, -0.161844f, -0.161745f, -0.161645f, -0.161546f, -0.161447f, -0.161348f, -0.161248f, -0.161149f, -0.16105f, -0.16095f, -0.160851f, -0.160752f, -0.160652f, -0.160553f, -0.160454f, -0.160355f, -0.160255f, -0.160156f, -0.160057f,
+-0.159957f, -0.159858f, -0.159759f, -0.159659f, -0.15956f, -0.159461f, -0.159361f, -0.159262f, -0.159163f, -0.159063f, -0.158964f, -0.158865f, -0.158765f, -0.158666f, -0.158566f, -0.158467f, -0.158368f, -0.158268f, -0.158169f, -0.15807f,
+-0.15797f, -0.157871f, -0.157771f, -0.157672f, -0.157573f, -0.157473f, -0.157374f, -0.157275f, -0.157175f, -0.157076f, -0.156976f, -0.156877f, -0.156778f, -0.156678f, -0.156579f, -0.156479f, -0.15638f, -0.156281f, -0.156181f, -0.156082f,
+-0.155982f, -0.155883f, -0.155783f, -0.155684f, -0.155585f, -0.155485f, -0.155386f, -0.155286f, -0.155187f, -0.155087f, -0.154988f, -0.154888f, -0.154789f, -0.15469f, -0.15459f, -0.154491f, -0.154391f, -0.154292f, -0.154192f, -0.154093f,
+-0.153993f, -0.153894f, -0.153794f, -0.153695f, -0.153595f, -0.153496f, -0.153396f, -0.153297f, -0.153197f, -0.153098f, -0.152998f, -0.152899f, -0.152799f, -0.1527f, -0.1526f, -0.152501f, -0.152401f, -0.152302f, -0.152202f, -0.152103f,
+-0.152003f, -0.151904f, -0.151804f, -0.151705f, -0.151605f, -0.151506f, -0.151406f, -0.151307f, -0.151207f, -0.151108f, -0.151008f, -0.150908f, -0.150809f, -0.150709f, -0.15061f, -0.15051f, -0.150411f, -0.150311f, -0.150212f, -0.150112f,
+-0.150012f, -0.149913f, -0.149813f, -0.149714f, -0.149614f, -0.149515f, -0.149415f, -0.149315f, -0.149216f, -0.149116f, -0.149017f, -0.148917f, -0.148817f, -0.148718f, -0.148618f, -0.148519f, -0.148419f, -0.148319f, -0.14822f, -0.14812f,
+-0.148021f, -0.147921f, -0.147821f, -0.147722f, -0.147622f, -0.147523f, -0.147423f, -0.147323f, -0.147224f, -0.147124f, -0.147024f, -0.146925f, -0.146825f, -0.146725f, -0.146626f, -0.146526f, -0.146426f, -0.146327f, -0.146227f, -0.146128f,
+-0.146028f, -0.145928f, -0.145829f, -0.145729f, -0.145629f, -0.14553f, -0.14543f, -0.14533f, -0.14523f, -0.145131f, -0.145031f, -0.144931f, -0.144832f, -0.144732f, -0.144632f, -0.144533f, -0.144433f, -0.144333f, -0.144234f, -0.144134f,
+-0.144034f, -0.143934f, -0.143835f, -0.143735f, -0.143635f, -0.143536f, -0.143436f, -0.143336f, -0.143236f, -0.143137f, -0.143037f, -0.142937f, -0.142838f, -0.142738f, -0.142638f, -0.142538f, -0.142439f, -0.142339f, -0.142239f, -0.142139f,
+-0.14204f, -0.14194f, -0.14184f, -0.14174f, -0.141641f, -0.141541f, -0.141441f, -0.141341f, -0.141241f, -0.141142f, -0.141042f, -0.140942f, -0.140842f, -0.140743f, -0.140643f, -0.140543f, -0.140443f, -0.140343f, -0.140244f, -0.140144f,
+-0.140044f, -0.139944f, -0.139844f, -0.139745f, -0.139645f, -0.139545f, -0.139445f, -0.139345f, -0.139246f, -0.139146f, -0.139046f, -0.138946f, -0.138846f, -0.138746f, -0.138647f, -0.138547f, -0.138447f, -0.138347f, -0.138247f, -0.138147f,
+-0.138048f, -0.137948f, -0.137848f, -0.137748f, -0.137648f, -0.137548f, -0.137448f, -0.137349f, -0.137249f, -0.137149f, -0.137049f, -0.136949f, -0.136849f, -0.136749f, -0.13665f, -0.13655f, -0.13645f, -0.13635f, -0.13625f, -0.13615f,
+-0.13605f, -0.13595f, -0.135851f, -0.135751f, -0.135651f, -0.135551f, -0.135451f, -0.135351f, -0.135251f, -0.135151f, -0.135051f, -0.134951f, -0.134851f, -0.134752f, -0.134652f, -0.134552f, -0.134452f, -0.134352f, -0.134252f, -0.134152f,
+-0.134052f, -0.133952f, -0.133852f, -0.133752f, -0.133652f, -0.133552f, -0.133452f, -0.133353f, -0.133253f, -0.133153f, -0.133053f, -0.132953f, -0.132853f, -0.132753f, -0.132653f, -0.132553f, -0.132453f, -0.132353f, -0.132253f, -0.132153f,
+-0.132053f, -0.131953f, -0.131853f, -0.131753f, -0.131653f, -0.131553f, -0.131453f, -0.131353f, -0.131253f, -0.131153f, -0.131053f, -0.130953f, -0.130853f, -0.130753f, -0.130653f, -0.130553f, -0.130453f, -0.130353f, -0.130253f, -0.130153f,
+-0.130053f, -0.129953f, -0.129853f, -0.129753f, -0.129653f, -0.129553f, -0.129453f, -0.129353f, -0.129253f, -0.129153f, -0.129053f, -0.128953f, -0.128853f, -0.128753f, -0.128653f, -0.128553f, -0.128453f, -0.128353f, -0.128253f, -0.128152f,
+-0.128052f, -0.127952f, -0.127852f, -0.127752f, -0.127652f, -0.127552f, -0.127452f, -0.127352f, -0.127252f, -0.127152f, -0.127052f, -0.126952f, -0.126852f, -0.126751f, -0.126651f, -0.126551f, -0.126451f, -0.126351f, -0.126251f, -0.126151f,
+-0.126051f, -0.125951f, -0.125851f, -0.125751f, -0.12565f, -0.12555f, -0.12545f, -0.12535f, -0.12525f, -0.12515f, -0.12505f, -0.12495f, -0.124849f, -0.124749f, -0.124649f, -0.124549f, -0.124449f, -0.124349f, -0.124249f, -0.124149f,
+-0.124048f, -0.123948f, -0.123848f, -0.123748f, -0.123648f, -0.123548f, -0.123448f, -0.123347f, -0.123247f, -0.123147f, -0.123047f, -0.122947f, -0.122847f, -0.122746f, -0.122646f, -0.122546f, -0.122446f, -0.122346f, -0.122246f, -0.122145f,
+-0.122045f, -0.121945f, -0.121845f, -0.121745f, -0.121644f, -0.121544f, -0.121444f, -0.121344f, -0.121244f, -0.121143f, -0.121043f, -0.120943f, -0.120843f, -0.120743f, -0.120642f, -0.120542f, -0.120442f, -0.120342f, -0.120242f, -0.120141f,
+-0.120041f, -0.119941f, -0.119841f, -0.119741f, -0.11964f, -0.11954f, -0.11944f, -0.11934f, -0.119239f, -0.119139f, -0.119039f, -0.118939f, -0.118838f, -0.118738f, -0.118638f, -0.118538f, -0.118437f, -0.118337f, -0.118237f, -0.118137f,
+-0.118036f, -0.117936f, -0.117836f, -0.117736f, -0.117635f, -0.117535f, -0.117435f, -0.117335f, -0.117234f, -0.117134f, -0.117034f, -0.116933f, -0.116833f, -0.116733f, -0.116633f, -0.116532f, -0.116432f, -0.116332f, -0.116231f, -0.116131f,
+-0.116031f, -0.11593f, -0.11583f, -0.11573f, -0.11563f, -0.115529f, -0.115429f, -0.115329f, -0.115228f, -0.115128f, -0.115028f, -0.114927f, -0.114827f, -0.114727f, -0.114626f, -0.114526f, -0.114426f, -0.114325f, -0.114225f, -0.114125f,
+-0.114024f, -0.113924f, -0.113824f, -0.113723f, -0.113623f, -0.113523f, -0.113422f, -0.113322f, -0.113222f, -0.113121f, -0.113021f, -0.112921f, -0.11282f, -0.11272f, -0.11262f, -0.112519f, -0.112419f, -0.112318f, -0.112218f, -0.112118f,
+-0.112017f, -0.111917f, -0.111817f, -0.111716f, -0.111616f, -0.111515f, -0.111415f, -0.111315f, -0.111214f, -0.111114f, -0.111013f, -0.110913f, -0.110813f, -0.110712f, -0.110612f, -0.110511f, -0.110411f, -0.110311f, -0.11021f, -0.11011f,
+-0.110009f, -0.109909f, -0.109809f, -0.109708f, -0.109608f, -0.109507f, -0.109407f, -0.109306f, -0.109206f, -0.109106f, -0.109005f, -0.108905f, -0.108804f, -0.108704f, -0.108603f, -0.108503f, -0.108403f, -0.108302f, -0.108202f, -0.108101f,
+-0.108001f, -0.1079f, -0.1078f, -0.107699f, -0.107599f, -0.107499f, -0.107398f, -0.107298f, -0.107197f, -0.107097f, -0.106996f, -0.106896f, -0.106795f, -0.106695f, -0.106594f, -0.106494f, -0.106393f, -0.106293f, -0.106192f, -0.106092f,
+-0.105991f, -0.105891f, -0.10579f, -0.10569f, -0.10559f, -0.105489f, -0.105389f, -0.105288f, -0.105188f, -0.105087f, -0.104987f, -0.104886f, -0.104786f, -0.104685f, -0.104584f, -0.104484f, -0.104383f, -0.104283f, -0.104182f, -0.104082f,
+-0.103981f, -0.103881f, -0.10378f, -0.10368f, -0.103579f, -0.103479f, -0.103378f, -0.103278f, -0.103177f, -0.103077f, -0.102976f, -0.102876f, -0.102775f, -0.102674f, -0.102574f, -0.102473f, -0.102373f, -0.102272f, -0.102172f, -0.102071f,
+-0.101971f, -0.10187f, -0.10177f, -0.101669f, -0.101568f, -0.101468f, -0.101367f, -0.101267f, -0.101166f, -0.101066f, -0.100965f, -0.100864f, -0.100764f, -0.100663f, -0.100563f, -0.100462f, -0.100362f, -0.100261f, -0.10016f, -0.10006f,
+-0.099959f, -0.099859f, -0.099758f, -0.099657f, -0.099557f, -0.099456f, -0.099356f, -0.099255f, -0.099154f, -0.099054f, -0.098953f, -0.098853f, -0.098752f, -0.098651f, -0.098551f, -0.09845f, -0.09835f, -0.098249f, -0.098148f, -0.098048f,
+-0.097947f, -0.097846f, -0.097746f, -0.097645f, -0.097545f, -0.097444f, -0.097343f, -0.097243f, -0.097142f, -0.097041f, -0.096941f, -0.09684f, -0.096739f, -0.096639f, -0.096538f, -0.096437f, -0.096337f, -0.096236f, -0.096136f, -0.096035f,
+-0.095934f, -0.095834f, -0.095733f, -0.095632f, -0.095532f, -0.095431f, -0.09533f, -0.09523f, -0.095129f, -0.095028f, -0.094928f, -0.094827f, -0.094726f, -0.094625f, -0.094525f, -0.094424f, -0.094323f, -0.094223f, -0.094122f, -0.094021f,
+-0.093921f, -0.09382f, -0.093719f, -0.093619f, -0.093518f, -0.093417f, -0.093317f, -0.093216f, -0.093115f, -0.093014f, -0.092914f, -0.092813f, -0.092712f, -0.092612f, -0.092511f, -0.09241f, -0.092309f, -0.092209f, -0.092108f, -0.092007f,
+-0.091907f, -0.091806f, -0.091705f, -0.091604f, -0.091504f, -0.091403f, -0.091302f, -0.091201f, -0.091101f, -0.091f, -0.090899f, -0.090798f, -0.090698f, -0.090597f, -0.090496f, -0.090396f, -0.090295f, -0.090194f, -0.090093f, -0.089993f,
+-0.089892f, -0.089791f, -0.08969f, -0.089589f, -0.089489f, -0.089388f, -0.089287f, -0.089186f, -0.089086f, -0.088985f, -0.088884f, -0.088783f, -0.088683f, -0.088582f, -0.088481f, -0.08838f, -0.088279f, -0.088179f, -0.088078f, -0.087977f,
+-0.087876f, -0.087776f, -0.087675f, -0.087574f, -0.087473f, -0.087372f, -0.087272f, -0.087171f, -0.08707f, -0.086969f, -0.086868f, -0.086768f, -0.086667f, -0.086566f, -0.086465f, -0.086364f, -0.086264f, -0.086163f, -0.086062f, -0.085961f,
+-0.08586f, -0.085759f, -0.085659f, -0.085558f, -0.085457f, -0.085356f, -0.085255f, -0.085154f, -0.085054f, -0.084953f, -0.084852f, -0.084751f, -0.08465f, -0.084549f, -0.084449f, -0.084348f, -0.084247f, -0.084146f, -0.084045f, -0.083944f,
+-0.083844f, -0.083743f, -0.083642f, -0.083541f, -0.08344f, -0.083339f, -0.083238f, -0.083138f, -0.083037f, -0.082936f, -0.082835f, -0.082734f, -0.082633f, -0.082532f, -0.082432f, -0.082331f, -0.08223f, -0.082129f, -0.082028f, -0.081927f,
+-0.081826f, -0.081725f, -0.081625f, -0.081524f, -0.081423f, -0.081322f, -0.081221f, -0.08112f, -0.081019f, -0.080918f, -0.080817f, -0.080717f, -0.080616f, -0.080515f, -0.080414f, -0.080313f, -0.080212f, -0.080111f, -0.08001f, -0.079909f,
+-0.079808f, -0.079708f, -0.079607f, -0.079506f, -0.079405f, -0.079304f, -0.079203f, -0.079102f, -0.079001f, -0.0789f, -0.078799f, -0.078698f, -0.078597f, -0.078497f, -0.078396f, -0.078295f, -0.078194f, -0.078093f, -0.077992f, -0.077891f,
+-0.07779f, -0.077689f, -0.077588f, -0.077487f, -0.077386f, -0.077285f, -0.077184f, -0.077083f, -0.076982f, -0.076882f, -0.076781f, -0.07668f, -0.076579f, -0.076478f, -0.076377f, -0.076276f, -0.076175f, -0.076074f, -0.075973f, -0.075872f,
+-0.075771f, -0.07567f, -0.075569f, -0.075468f, -0.075367f, -0.075266f, -0.075165f, -0.075064f, -0.074963f, -0.074862f, -0.074761f, -0.07466f, -0.074559f, -0.074458f, -0.074357f, -0.074256f, -0.074155f, -0.074054f, -0.073953f, -0.073852f,
+-0.073751f, -0.07365f, -0.073549f, -0.073448f, -0.073347f, -0.073246f, -0.073145f, -0.073044f, -0.072943f, -0.072842f, -0.072741f, -0.07264f, -0.072539f, -0.072438f, -0.072337f, -0.072236f, -0.072135f, -0.072034f, -0.071933f, -0.071832f,
+-0.071731f, -0.07163f, -0.071529f, -0.071428f, -0.071327f, -0.071226f, -0.071125f, -0.071024f, -0.070923f, -0.070822f, -0.070721f, -0.07062f, -0.070519f, -0.070418f, -0.070317f, -0.070216f, -0.070115f, -0.070014f, -0.069913f, -0.069812f,
+-0.069711f, -0.06961f, -0.069509f, -0.069407f, -0.069306f, -0.069205f, -0.069104f, -0.069003f, -0.068902f, -0.068801f, -0.0687f, -0.068599f, -0.068498f, -0.068397f, -0.068296f, -0.068195f, -0.068094f, -0.067993f, -0.067892f, -0.067791f,
+-0.067689f, -0.067588f, -0.067487f, -0.067386f, -0.067285f, -0.067184f, -0.067083f, -0.066982f, -0.066881f, -0.06678f, -0.066679f, -0.066578f, -0.066476f, -0.066375f, -0.066274f, -0.066173f, -0.066072f, -0.065971f, -0.06587f, -0.065769f,
+-0.065668f, -0.065567f, -0.065466f, -0.065364f, -0.065263f, -0.065162f, -0.065061f, -0.06496f, -0.064859f, -0.064758f, -0.064657f, -0.064556f, -0.064454f, -0.064353f, -0.064252f, -0.064151f, -0.06405f, -0.063949f, -0.063848f, -0.063747f,
+-0.063646f, -0.063544f, -0.063443f, -0.063342f, -0.063241f, -0.06314f, -0.063039f, -0.062938f, -0.062836f, -0.062735f, -0.062634f, -0.062533f, -0.062432f, -0.062331f, -0.06223f, -0.062129f, -0.062027f, -0.061926f, -0.061825f, -0.061724f,
+-0.061623f, -0.061522f, -0.06142f, -0.061319f, -0.061218f, -0.061117f, -0.061016f, -0.060915f, -0.060814f, -0.060712f, -0.060611f, -0.06051f, -0.060409f, -0.060308f, -0.060207f, -0.060105f, -0.060004f, -0.059903f, -0.059802f, -0.059701f,
+-0.0596f, -0.059498f, -0.059397f, -0.059296f, -0.059195f, -0.059094f, -0.058993f, -0.058891f, -0.05879f, -0.058689f, -0.058588f, -0.058487f, -0.058385f, -0.058284f, -0.058183f, -0.058082f, -0.057981f, -0.057879f, -0.057778f, -0.057677f,
+-0.057576f, -0.057475f, -0.057374f, -0.057272f, -0.057171f, -0.05707f, -0.056969f, -0.056867f, -0.056766f, -0.056665f, -0.056564f, -0.056463f, -0.056361f, -0.05626f, -0.056159f, -0.056058f, -0.055957f, -0.055855f, -0.055754f, -0.055653f,
+-0.055552f, -0.055451f, -0.055349f, -0.055248f, -0.055147f, -0.055046f, -0.054944f, -0.054843f, -0.054742f, -0.054641f, -0.05454f, -0.054438f, -0.054337f, -0.054236f, -0.054135f, -0.054033f, -0.053932f, -0.053831f, -0.05373f, -0.053628f,
+-0.053527f, -0.053426f, -0.053325f, -0.053223f, -0.053122f, -0.053021f, -0.05292f, -0.052818f, -0.052717f, -0.052616f, -0.052515f, -0.052413f, -0.052312f, -0.052211f, -0.05211f, -0.052008f, -0.051907f, -0.051806f, -0.051705f, -0.051603f,
+-0.051502f, -0.051401f, -0.0513f, -0.051198f, -0.051097f, -0.050996f, -0.050894f, -0.050793f, -0.050692f, -0.050591f, -0.050489f, -0.050388f, -0.050287f, -0.050186f, -0.050084f, -0.049983f, -0.049882f, -0.04978f, -0.049679f, -0.049578f,
+-0.049477f, -0.049375f, -0.049274f, -0.049173f, -0.049071f, -0.04897f, -0.048869f, -0.048768f, -0.048666f, -0.048565f, -0.048464f, -0.048362f, -0.048261f, -0.04816f, -0.048059f, -0.047957f, -0.047856f, -0.047755f, -0.047653f, -0.047552f,
+-0.047451f, -0.047349f, -0.047248f, -0.047147f, -0.047045f, -0.046944f, -0.046843f, -0.046742f, -0.04664f, -0.046539f, -0.046438f, -0.046336f, -0.046235f, -0.046134f, -0.046032f, -0.045931f, -0.04583f, -0.045728f, -0.045627f, -0.045526f,
+-0.045424f, -0.045323f, -0.045222f, -0.04512f, -0.045019f, -0.044918f, -0.044816f, -0.044715f, -0.044614f, -0.044512f, -0.044411f, -0.04431f, -0.044208f, -0.044107f, -0.044006f, -0.043904f, -0.043803f, -0.043702f, -0.0436f, -0.043499f,
+-0.043398f, -0.043296f, -0.043195f, -0.043094f, -0.042992f, -0.042891f, -0.04279f, -0.042688f, -0.042587f, -0.042486f, -0.042384f, -0.042283f, -0.042181f, -0.04208f, -0.041979f, -0.041877f, -0.041776f, -0.041675f, -0.041573f, -0.041472f,
+-0.041371f, -0.041269f, -0.041168f, -0.041066f, -0.040965f, -0.040864f, -0.040762f, -0.040661f, -0.04056f, -0.040458f, -0.040357f, -0.040255f, -0.040154f, -0.040053f, -0.039951f, -0.03985f, -0.039749f, -0.039647f, -0.039546f, -0.039444f,
+-0.039343f, -0.039242f, -0.03914f, -0.039039f, -0.038938f, -0.038836f, -0.038735f, -0.038633f, -0.038532f, -0.038431f, -0.038329f, -0.038228f, -0.038126f, -0.038025f, -0.037924f, -0.037822f, -0.037721f, -0.037619f, -0.037518f, -0.037417f,
+-0.037315f, -0.037214f, -0.037112f, -0.037011f, -0.03691f, -0.036808f, -0.036707f, -0.036605f, -0.036504f, -0.036403f, -0.036301f, -0.0362f, -0.036098f, -0.035997f, -0.035895f, -0.035794f, -0.035693f, -0.035591f, -0.03549f, -0.035388f,
+-0.035287f, -0.035186f, -0.035084f, -0.034983f, -0.034881f, -0.03478f, -0.034678f, -0.034577f, -0.034476f, -0.034374f, -0.034273f, -0.034171f, -0.03407f, -0.033968f, -0.033867f, -0.033766f, -0.033664f, -0.033563f, -0.033461f, -0.03336f,
+-0.033258f, -0.033157f, -0.033056f, -0.032954f, -0.032853f, -0.032751f, -0.03265f, -0.032548f, -0.032447f, -0.032345f, -0.032244f, -0.032143f, -0.032041f, -0.03194f, -0.031838f, -0.031737f, -0.031635f, -0.031534f, -0.031432f, -0.031331f,
+-0.031229f, -0.031128f, -0.031027f, -0.030925f, -0.030824f, -0.030722f, -0.030621f, -0.030519f, -0.030418f, -0.030316f, -0.030215f, -0.030113f, -0.030012f, -0.029911f, -0.029809f, -0.029708f, -0.029606f, -0.029505f, -0.029403f, -0.029302f,
+-0.0292f, -0.029099f, -0.028997f, -0.028896f, -0.028794f, -0.028693f, -0.028591f, -0.02849f, -0.028388f, -0.028287f, -0.028186f, -0.028084f, -0.027983f, -0.027881f, -0.02778f, -0.027678f, -0.027577f, -0.027475f, -0.027374f, -0.027272f,
+-0.027171f, -0.027069f, -0.026968f, -0.026866f, -0.026765f, -0.026663f, -0.026562f, -0.02646f, -0.026359f, -0.026257f, -0.026156f, -0.026054f, -0.025953f, -0.025851f, -0.02575f, -0.025648f, -0.025547f, -0.025445f, -0.025344f, -0.025242f,
+-0.025141f, -0.025039f, -0.024938f, -0.024836f, -0.024735f, -0.024633f, -0.024532f, -0.02443f, -0.024329f, -0.024227f, -0.024126f, -0.024024f, -0.023923f, -0.023821f, -0.02372f, -0.023618f, -0.023517f, -0.023415f, -0.023314f, -0.023212f,
+-0.023111f, -0.023009f, -0.022908f, -0.022806f, -0.022705f, -0.022603f, -0.022502f, -0.0224f, -0.022299f, -0.022197f, -0.022095f, -0.021994f, -0.021892f, -0.021791f, -0.021689f, -0.021588f, -0.021486f, -0.021385f, -0.021283f, -0.021182f,
+-0.02108f, -0.020979f, -0.020877f, -0.020776f, -0.020674f, -0.020573f, -0.020471f, -0.020369f, -0.020268f, -0.020166f, -0.020065f, -0.019963f, -0.019862f, -0.01976f, -0.019659f, -0.019557f, -0.019456f, -0.019354f, -0.019253f, -0.019151f,
+-0.019049f, -0.018948f, -0.018846f, -0.018745f, -0.018643f, -0.018542f, -0.01844f, -0.018339f, -0.018237f, -0.018136f, -0.018034f, -0.017932f, -0.017831f, -0.017729f, -0.017628f, -0.017526f, -0.017425f, -0.017323f, -0.017222f, -0.01712f,
+-0.017018f, -0.016917f, -0.016815f, -0.016714f, -0.016612f, -0.016511f, -0.016409f, -0.016308f, -0.016206f, -0.016104f, -0.016003f, -0.015901f, -0.0158f, -0.015698f, -0.015597f, -0.015495f, -0.015394f, -0.015292f, -0.01519f, -0.015089f,
+-0.014987f, -0.014886f, -0.014784f, -0.014683f, -0.014581f, -0.014479f, -0.014378f, -0.014276f, -0.014175f, -0.014073f, -0.013972f, -0.01387f, -0.013768f, -0.013667f, -0.013565f, -0.013464f, -0.013362f, -0.01326f, -0.013159f, -0.013057f,
+-0.012956f, -0.012854f, -0.012753f, -0.012651f, -0.012549f, -0.012448f, -0.012346f, -0.012245f, -0.012143f, -0.012042f, -0.01194f, -0.011838f, -0.011737f, -0.011635f, -0.011534f, -0.011432f, -0.01133f, -0.011229f, -0.011127f, -0.011026f,
+-0.010924f, -0.010822f, -0.010721f, -0.010619f, -0.010518f, -0.010416f, -0.010314f, -0.010213f, -0.010111f, -0.01001f, -0.009908f, -0.009806f, -0.009705f, -0.009603f, -0.009502f, -0.0094f, -0.009299f, -0.009197f, -0.009095f, -0.008994f,
+-0.008892f, -0.00879f, -0.008689f, -0.008587f, -0.008486f, -0.008384f, -0.008282f, -0.008181f, -0.008079f, -0.007978f, -0.007876f, -0.007774f, -0.007673f, -0.007571f, -0.00747f, -0.007368f, -0.007266f, -0.007165f, -0.007063f, -0.006962f,
+-0.00686f, -0.006758f, -0.006657f, -0.006555f, -0.006453f, -0.006352f, -0.00625f, -0.006149f, -0.006047f, -0.005945f, -0.005844f, -0.005742f, -0.005641f, -0.005539f, -0.005437f, -0.005336f, -0.005234f, -0.005132f, -0.005031f, -0.004929f,
+-0.004828f, -0.004726f, -0.004624f, -0.004523f, -0.004421f, -0.004319f, -0.004218f, -0.004116f, -0.004015f, -0.003913f, -0.003811f, -0.00371f, -0.003608f, -0.003506f, -0.003405f, -0.003303f, -0.003202f, -0.0031f, -0.002998f, -0.002897f,
+-0.002795f, -0.002693f, -0.002592f, -0.00249f, -0.002389f, -0.002287f, -0.002185f, -0.002084f, -0.001982f, -0.00188f, -0.001779f, -0.001677f, -0.001575f, -0.001474f, -0.001372f, -0.001271f, -0.001169f, -0.001067f, -0.000966f, -0.000864f,
+-0.000762f, -0.000661f, -0.000559f, -0.000457f, -0.000356f, -0.000254f, -0.000152f, -5.1e-05f, 5.1e-05f, 0.000152f, 0.000254f, 0.000356f, 0.000457f, 0.000559f, 0.000661f, 0.000762f, 0.000864f, 0.000966f, 0.001067f, 0.001169f,
+0.001271f, 0.001372f, 0.001474f, 0.001576f, 0.001677f, 0.001779f, 0.00188f, 0.001982f, 0.002084f, 0.002185f, 0.002287f, 0.002389f, 0.00249f, 0.002592f, 0.002694f, 0.002795f, 0.002897f, 0.002999f, 0.0031f, 0.003202f,
+0.003304f, 0.003405f, 0.003507f, 0.003609f, 0.00371f, 0.003812f, 0.003914f, 0.004015f, 0.004117f, 0.004219f, 0.00432f, 0.004422f, 0.004524f, 0.004625f, 0.004727f, 0.004829f, 0.00493f, 0.005032f, 0.005134f, 0.005235f,
+0.005337f, 0.005438f, 0.00554f, 0.005642f, 0.005743f, 0.005845f, 0.005947f, 0.006048f, 0.00615f, 0.006252f, 0.006353f, 0.006455f, 0.006557f, 0.006658f, 0.00676f, 0.006862f, 0.006963f, 0.007065f, 0.007167f, 0.007269f,
+0.00737f, 0.007472f, 0.007574f, 0.007675f, 0.007777f, 0.007879f, 0.00798f, 0.008082f, 0.008184f, 0.008285f, 0.008387f, 0.008489f, 0.00859f, 0.008692f, 0.008794f, 0.008895f, 0.008997f, 0.009099f, 0.0092f, 0.009302f,
+0.009404f, 0.009505f, 0.009607f, 0.009709f, 0.00981f, 0.009912f, 0.010014f, 0.010115f, 0.010217f, 0.010319f, 0.01042f, 0.010522f, 0.010624f, 0.010725f, 0.010827f, 0.010929f, 0.011031f, 0.011132f, 0.011234f, 0.011336f,
+0.011437f, 0.011539f, 0.011641f, 0.011742f, 0.011844f, 0.011946f, 0.012047f, 0.012149f, 0.012251f, 0.012352f, 0.012454f, 0.012556f, 0.012657f, 0.012759f, 0.012861f, 0.012962f, 0.013064f, 0.013166f, 0.013268f, 0.013369f,
+0.013471f, 0.013573f, 0.013674f, 0.013776f, 0.013878f, 0.013979f, 0.014081f, 0.014183f, 0.014284f, 0.014386f, 0.014488f, 0.014589f, 0.014691f, 0.014793f, 0.014895f, 0.014996f, 0.015098f, 0.0152f, 0.015301f, 0.015403f,
+0.015505f, 0.015606f, 0.015708f, 0.01581f, 0.015911f, 0.016013f, 0.016115f, 0.016217f, 0.016318f, 0.01642f, 0.016522f, 0.016623f, 0.016725f, 0.016827f, 0.016928f, 0.01703f, 0.017132f, 0.017233f, 0.017335f, 0.017437f,
+0.017539f, 0.01764f, 0.017742f, 0.017844f, 0.017945f, 0.018047f, 0.018149f, 0.01825f, 0.018352f, 0.018454f, 0.018556f, 0.018657f, 0.018759f, 0.018861f, 0.018962f, 0.019064f, 0.019166f, 0.019267f, 0.019369f, 0.019471f,
+0.019573f, 0.019674f, 0.019776f, 0.019878f, 0.019979f, 0.020081f, 0.020183f, 0.020284f, 0.020386f, 0.020488f, 0.02059f, 0.020691f, 0.020793f, 0.020895f, 0.020996f, 0.021098f, 0.0212f, 0.021301f, 0.021403f, 0.021505f,
+0.021607f, 0.021708f, 0.02181f, 0.021912f, 0.022013f, 0.022115f, 0.022217f, 0.022318f, 0.02242f, 0.022522f, 0.022624f, 0.022725f, 0.022827f, 0.022929f, 0.02303f, 0.023132f, 0.023234f, 0.023335f, 0.023437f, 0.023539f,
+0.023641f, 0.023742f, 0.023844f, 0.023946f, 0.024047f, 0.024149f, 0.024251f, 0.024353f, 0.024454f, 0.024556f, 0.024658f, 0.024759f, 0.024861f, 0.024963f, 0.025064f, 0.025166f, 0.025268f, 0.02537f, 0.025471f, 0.025573f,
+0.025675f, 0.025776f, 0.025878f, 0.02598f, 0.026082f, 0.026183f, 0.026285f, 0.026387f, 0.026488f, 0.02659f, 0.026692f, 0.026793f, 0.026895f, 0.026997f, 0.027099f, 0.0272f, 0.027302f, 0.027404f, 0.027505f, 0.027607f,
+0.027709f, 0.027811f, 0.027912f, 0.028014f, 0.028116f, 0.028217f, 0.028319f, 0.028421f, 0.028522f, 0.028624f, 0.028726f, 0.028828f, 0.028929f, 0.029031f, 0.029133f, 0.029234f, 0.029336f, 0.029438f, 0.02954f, 0.029641f,
+0.029743f, 0.029845f, 0.029946f, 0.030048f, 0.03015f, 0.030252f, 0.030353f, 0.030455f, 0.030557f, 0.030658f, 0.03076f, 0.030862f, 0.030963f, 0.031065f, 0.031167f, 0.031269f, 0.03137f, 0.031472f, 0.031574f, 0.031675f,
+0.031777f, 0.031879f, 0.031981f, 0.032082f, 0.032184f, 0.032286f, 0.032387f, 0.032489f, 0.032591f, 0.032693f, 0.032794f, 0.032896f, 0.032998f, 0.033099f, 0.033201f, 0.033303f, 0.033404f, 0.033506f, 0.033608f, 0.03371f,
+0.033811f, 0.033913f, 0.034015f, 0.034116f, 0.034218f, 0.03432f, 0.034422f, 0.034523f, 0.034625f, 0.034727f, 0.034828f, 0.03493f, 0.035032f, 0.035133f, 0.035235f, 0.035337f, 0.035439f, 0.03554f, 0.035642f, 0.035744f,
+0.035845f, 0.035947f, 0.036049f, 0.036151f, 0.036252f, 0.036354f, 0.036456f, 0.036557f, 0.036659f, 0.036761f, 0.036863f, 0.036964f, 0.037066f, 0.037168f, 0.037269f, 0.037371f, 0.037473f, 0.037574f, 0.037676f, 0.037778f,
+0.03788f, 0.037981f, 0.038083f, 0.038185f, 0.038286f, 0.038388f, 0.03849f, 0.038592f, 0.038693f, 0.038795f, 0.038897f, 0.038998f, 0.0391f, 0.039202f, 0.039303f, 0.039405f, 0.039507f, 0.039609f, 0.03971f, 0.039812f,
+0.039914f, 0.040015f, 0.040117f, 0.040219f, 0.04032f, 0.040422f, 0.040524f, 0.040626f, 0.040727f, 0.040829f, 0.040931f, 0.041032f, 0.041134f, 0.041236f, 0.041338f, 0.041439f, 0.041541f, 0.041643f, 0.041744f, 0.041846f,
+0.041948f, 0.042049f, 0.042151f, 0.042253f, 0.042355f, 0.042456f, 0.042558f, 0.04266f, 0.042761f, 0.042863f, 0.042965f, 0.043066f, 0.043168f, 0.04327f, 0.043372f, 0.043473f, 0.043575f, 0.043677f, 0.043778f, 0.04388f,
+0.043982f, 0.044083f, 0.044185f, 0.044287f, 0.044389f, 0.04449f, 0.044592f, 0.044694f, 0.044795f, 0.044897f, 0.044999f, 0.0451f, 0.045202f, 0.045304f, 0.045406f, 0.045507f, 0.045609f, 0.045711f, 0.045812f, 0.045914f,
+0.046016f, 0.046117f, 0.046219f, 0.046321f, 0.046422f, 0.046524f, 0.046626f, 0.046728f, 0.046829f, 0.046931f, 0.047033f, 0.047134f, 0.047236f, 0.047338f, 0.047439f, 0.047541f, 0.047643f, 0.047744f, 0.047846f, 0.047948f,
+0.04805f, 0.048151f, 0.048253f, 0.048355f, 0.048456f, 0.048558f, 0.04866f, 0.048761f, 0.048863f, 0.048965f, 0.049066f, 0.049168f, 0.04927f, 0.049372f, 0.049473f, 0.049575f, 0.049677f, 0.049778f, 0.04988f, 0.049982f,
+0.050083f, 0.050185f, 0.050287f, 0.050388f, 0.05049f, 0.050592f, 0.050693f, 0.050795f, 0.050897f, 0.050998f, 0.0511f, 0.051202f, 0.051304f, 0.051405f, 0.051507f, 0.051609f, 0.05171f, 0.051812f, 0.051914f, 0.052015f,
+0.052117f, 0.052219f, 0.05232f, 0.052422f, 0.052524f, 0.052625f, 0.052727f, 0.052829f, 0.05293f, 0.053032f, 0.053134f, 0.053235f, 0.053337f, 0.053439f, 0.053541f, 0.053642f, 0.053744f, 0.053846f, 0.053947f, 0.054049f,
+0.054151f, 0.054252f, 0.054354f, 0.054456f, 0.054557f, 0.054659f, 0.054761f, 0.054862f, 0.054964f, 0.055066f, 0.055167f, 0.055269f, 0.055371f, 0.055472f, 0.055574f, 0.055676f, 0.055777f, 0.055879f, 0.055981f, 0.056082f,
+0.056184f, 0.056286f, 0.056387f, 0.056489f, 0.056591f, 0.056692f, 0.056794f, 0.056896f, 0.056997f, 0.057099f, 0.057201f, 0.057302f, 0.057404f, 0.057506f, 0.057607f, 0.057709f, 0.057811f, 0.057912f, 0.058014f, 0.058116f,
+0.058217f, 0.058319f, 0.058421f, 0.058522f, 0.058624f, 0.058726f, 0.058827f, 0.058929f, 0.059031f, 0.059132f, 0.059234f, 0.059336f, 0.059437f, 0.059539f, 0.059641f, 0.059742f, 0.059844f, 0.059946f, 0.060047f, 0.060149f,
+0.060251f, 0.060352f, 0.060454f, 0.060556f, 0.060657f, 0.060759f, 0.060861f, 0.060962f, 0.061064f, 0.061165f, 0.061267f, 0.061369f, 0.06147f, 0.061572f, 0.061674f, 0.061775f, 0.061877f, 0.061979f, 0.06208f, 0.062182f,
+0.062284f, 0.062385f, 0.062487f, 0.062589f, 0.06269f, 0.062792f, 0.062894f, 0.062995f, 0.063097f, 0.063198f, 0.0633f, 0.063402f, 0.063503f, 0.063605f, 0.063707f, 0.063808f, 0.06391f, 0.064012f, 0.064113f, 0.064215f,
+0.064317f, 0.064418f, 0.06452f, 0.064621f, 0.064723f, 0.064825f, 0.064926f, 0.065028f, 0.06513f, 0.065231f, 0.065333f, 0.065435f, 0.065536f, 0.065638f, 0.065739f, 0.065841f, 0.065943f, 0.066044f, 0.066146f, 0.066248f,
+0.066349f, 0.066451f, 0.066552f, 0.066654f, 0.066756f, 0.066857f, 0.066959f, 0.067061f, 0.067162f, 0.067264f, 0.067366f, 0.067467f, 0.067569f, 0.06767f, 0.067772f, 0.067874f, 0.067975f, 0.068077f, 0.068179f, 0.06828f,
+0.068382f, 0.068483f, 0.068585f, 0.068687f, 0.068788f, 0.06889f, 0.068991f, 0.069093f, 0.069195f, 0.069296f, 0.069398f, 0.0695f, 0.069601f, 0.069703f, 0.069804f, 0.069906f, 0.070008f, 0.070109f, 0.070211f, 0.070312f,
+0.070414f, 0.070516f, 0.070617f, 0.070719f, 0.070821f, 0.070922f, 0.071024f, 0.071125f, 0.071227f, 0.071329f, 0.07143f, 0.071532f, 0.071633f, 0.071735f, 0.071837f, 0.071938f, 0.07204f, 0.072141f, 0.072243f, 0.072345f,
+0.072446f, 0.072548f, 0.072649f, 0.072751f, 0.072853f, 0.072954f, 0.073056f, 0.073157f, 0.073259f, 0.073361f, 0.073462f, 0.073564f, 0.073665f, 0.073767f, 0.073869f, 0.07397f, 0.074072f, 0.074173f, 0.074275f, 0.074377f,
+0.074478f, 0.07458f, 0.074681f, 0.074783f, 0.074885f, 0.074986f, 0.075088f, 0.075189f, 0.075291f, 0.075392f, 0.075494f, 0.075596f, 0.075697f, 0.075799f, 0.0759f, 0.076002f, 0.076104f, 0.076205f, 0.076307f, 0.076408f,
+0.07651f, 0.076611f, 0.076713f, 0.076815f, 0.076916f, 0.077018f, 0.077119f, 0.077221f, 0.077323f, 0.077424f, 0.077526f, 0.077627f, 0.077729f, 0.07783f, 0.077932f, 0.078034f, 0.078135f, 0.078237f, 0.078338f, 0.07844f,
+0.078541f, 0.078643f, 0.078744f, 0.078846f, 0.078948f, 0.079049f, 0.079151f, 0.079252f, 0.079354f, 0.079455f, 0.079557f, 0.079659f, 0.07976f, 0.079862f, 0.079963f, 0.080065f, 0.080166f, 0.080268f, 0.080369f, 0.080471f,
+0.080573f, 0.080674f, 0.080776f, 0.080877f, 0.080979f, 0.08108f, 0.081182f, 0.081283f, 0.081385f, 0.081487f, 0.081588f, 0.08169f, 0.081791f, 0.081893f, 0.081994f, 0.082096f, 0.082197f, 0.082299f, 0.0824f, 0.082502f,
+0.082604f, 0.082705f, 0.082807f, 0.082908f, 0.08301f, 0.083111f, 0.083213f, 0.083314f, 0.083416f, 0.083517f, 0.083619f, 0.08372f, 0.083822f, 0.083924f, 0.084025f, 0.084127f, 0.084228f, 0.08433f, 0.084431f, 0.084533f,
+0.084634f, 0.084736f, 0.084837f, 0.084939f, 0.08504f, 0.085142f, 0.085243f, 0.085345f, 0.085446f, 0.085548f, 0.08565f, 0.085751f, 0.085853f, 0.085954f, 0.086056f, 0.086157f, 0.086259f, 0.08636f, 0.086462f, 0.086563f,
+0.086665f, 0.086766f, 0.086868f, 0.086969f, 0.087071f, 0.087172f, 0.087274f, 0.087375f, 0.087477f, 0.087578f, 0.08768f, 0.087781f, 0.087883f, 0.087984f, 0.088086f, 0.088187f, 0.088289f, 0.08839f, 0.088492f, 0.088593f,
+0.088695f, 0.088796f, 0.088898f, 0.088999f, 0.089101f, 0.089202f, 0.089304f, 0.089405f, 0.089507f, 0.089608f, 0.08971f, 0.089811f, 0.089913f, 0.090014f, 0.090116f, 0.090217f, 0.090319f, 0.09042f, 0.090522f, 0.090623f,
+0.090725f, 0.090826f, 0.090928f, 0.091029f, 0.091131f, 0.091232f, 0.091334f, 0.091435f, 0.091537f, 0.091638f, 0.09174f, 0.091841f, 0.091942f, 0.092044f, 0.092145f, 0.092247f, 0.092348f, 0.09245f, 0.092551f, 0.092653f,
+0.092754f, 0.092856f, 0.092957f, 0.093059f, 0.09316f, 0.093262f, 0.093363f, 0.093465f, 0.093566f, 0.093667f, 0.093769f, 0.09387f, 0.093972f, 0.094073f, 0.094175f, 0.094276f, 0.094378f, 0.094479f, 0.094581f, 0.094682f,
+0.094783f, 0.094885f, 0.094986f, 0.095088f, 0.095189f, 0.095291f, 0.095392f, 0.095494f, 0.095595f, 0.095697f, 0.095798f, 0.095899f, 0.096001f, 0.096102f, 0.096204f, 0.096305f, 0.096407f, 0.096508f, 0.09661f, 0.096711f,
+0.096812f, 0.096914f, 0.097015f, 0.097117f, 0.097218f, 0.09732f, 0.097421f, 0.097522f, 0.097624f, 0.097725f, 0.097827f, 0.097928f, 0.09803f, 0.098131f, 0.098232f, 0.098334f, 0.098435f, 0.098537f, 0.098638f, 0.09874f,
+0.098841f, 0.098942f, 0.099044f, 0.099145f, 0.099247f, 0.099348f, 0.099449f, 0.099551f, 0.099652f, 0.099754f, 0.099855f, 0.099956f, 0.100058f, 0.100159f, 0.100261f, 0.100362f, 0.100464f, 0.100565f, 0.100666f, 0.100768f,
+0.100869f, 0.100971f, 0.101072f, 0.101173f, 0.101275f, 0.101376f, 0.101478f, 0.101579f, 0.10168f, 0.101782f, 0.101883f, 0.101985f, 0.102086f, 0.102187f, 0.102289f, 0.10239f, 0.102491f, 0.102593f, 0.102694f, 0.102796f,
+0.102897f, 0.102998f, 0.1031f, 0.103201f, 0.103303f, 0.103404f, 0.103505f, 0.103607f, 0.103708f, 0.103809f, 0.103911f, 0.104012f, 0.104114f, 0.104215f, 0.104316f, 0.104418f, 0.104519f, 0.10462f, 0.104722f, 0.104823f,
+0.104924f, 0.105026f, 0.105127f, 0.105229f, 0.10533f, 0.105431f, 0.105533f, 0.105634f, 0.105735f, 0.105837f, 0.105938f, 0.106039f, 0.106141f, 0.106242f, 0.106343f, 0.106445f, 0.106546f, 0.106648f, 0.106749f, 0.10685f,
+0.106952f, 0.107053f, 0.107154f, 0.107256f, 0.107357f, 0.107458f, 0.10756f, 0.107661f, 0.107762f, 0.107864f, 0.107965f, 0.108066f, 0.108168f, 0.108269f, 0.10837f, 0.108472f, 0.108573f, 0.108674f, 0.108776f, 0.108877f,
+0.108978f, 0.10908f, 0.109181f, 0.109282f, 0.109384f, 0.109485f, 0.109586f, 0.109688f, 0.109789f, 0.10989f, 0.109991f, 0.110093f, 0.110194f, 0.110295f, 0.110397f, 0.110498f, 0.110599f, 0.110701f, 0.110802f, 0.110903f,
+0.111005f, 0.111106f, 0.111207f, 0.111308f, 0.11141f, 0.111511f, 0.111612f, 0.111714f, 0.111815f, 0.111916f, 0.112018f, 0.112119f, 0.11222f, 0.112321f, 0.112423f, 0.112524f, 0.112625f, 0.112727f, 0.112828f, 0.112929f,
+0.11303f, 0.113132f, 0.113233f, 0.113334f, 0.113436f, 0.113537f, 0.113638f, 0.113739f, 0.113841f, 0.113942f, 0.114043f, 0.114145f, 0.114246f, 0.114347f, 0.114448f, 0.11455f, 0.114651f, 0.114752f, 0.114853f, 0.114955f,
+0.115056f, 0.115157f, 0.115258f, 0.11536f, 0.115461f, 0.115562f, 0.115663f, 0.115765f, 0.115866f, 0.115967f, 0.116068f, 0.11617f, 0.116271f, 0.116372f, 0.116473f, 0.116575f, 0.116676f, 0.116777f, 0.116878f, 0.11698f,
+0.117081f, 0.117182f, 0.117283f, 0.117385f, 0.117486f, 0.117587f, 0.117688f, 0.11779f, 0.117891f, 0.117992f, 0.118093f, 0.118195f, 0.118296f, 0.118397f, 0.118498f, 0.118599f, 0.118701f, 0.118802f, 0.118903f, 0.119004f,
+0.119106f, 0.119207f, 0.119308f, 0.119409f, 0.11951f, 0.119612f, 0.119713f, 0.119814f, 0.119915f, 0.120016f, 0.120118f, 0.120219f, 0.12032f, 0.120421f, 0.120522f, 0.120624f, 0.120725f, 0.120826f, 0.120927f, 0.121028f,
+0.12113f, 0.121231f, 0.121332f, 0.121433f, 0.121534f, 0.121636f, 0.121737f, 0.121838f, 0.121939f, 0.12204f, 0.122142f, 0.122243f, 0.122344f, 0.122445f, 0.122546f, 0.122647f, 0.122749f, 0.12285f, 0.122951f, 0.123052f,
+0.123153f, 0.123254f, 0.123356f, 0.123457f, 0.123558f, 0.123659f, 0.12376f, 0.123861f, 0.123963f, 0.124064f, 0.124165f, 0.124266f, 0.124367f, 0.124468f, 0.12457f, 0.124671f, 0.124772f, 0.124873f, 0.124974f, 0.125075f,
+0.125176f, 0.125278f, 0.125379f, 0.12548f, 0.125581f, 0.125682f, 0.125783f, 0.125884f, 0.125986f, 0.126087f, 0.126188f, 0.126289f, 0.12639f, 0.126491f, 0.126592f, 0.126694f, 0.126795f, 0.126896f, 0.126997f, 0.127098f,
+0.127199f, 0.1273f, 0.127401f, 0.127503f, 0.127604f, 0.127705f, 0.127806f, 0.127907f, 0.128008f, 0.128109f, 0.12821f, 0.128311f, 0.128413f, 0.128514f, 0.128615f, 0.128716f, 0.128817f, 0.128918f, 0.129019f, 0.12912f,
+0.129221f, 0.129322f, 0.129424f, 0.129525f, 0.129626f, 0.129727f, 0.129828f, 0.129929f, 0.13003f, 0.130131f, 0.130232f, 0.130333f, 0.130434f, 0.130536f, 0.130637f, 0.130738f, 0.130839f, 0.13094f, 0.131041f, 0.131142f,
+0.131243f, 0.131344f, 0.131445f, 0.131546f, 0.131647f, 0.131748f, 0.131849f, 0.131951f, 0.132052f, 0.132153f, 0.132254f, 0.132355f, 0.132456f, 0.132557f, 0.132658f, 0.132759f, 0.13286f, 0.132961f, 0.133062f, 0.133163f,
+0.133264f, 0.133365f, 0.133466f, 0.133567f, 0.133668f, 0.133769f, 0.13387f, 0.133972f, 0.134073f, 0.134174f, 0.134275f, 0.134376f, 0.134477f, 0.134578f, 0.134679f, 0.13478f, 0.134881f, 0.134982f, 0.135083f, 0.135184f,
+0.135285f, 0.135386f, 0.135487f, 0.135588f, 0.135689f, 0.13579f, 0.135891f, 0.135992f, 0.136093f, 0.136194f, 0.136295f, 0.136396f, 0.136497f, 0.136598f, 0.136699f, 0.1368f, 0.136901f, 0.137002f, 0.137103f, 0.137204f,
+0.137305f, 0.137406f, 0.137507f, 0.137608f, 0.137709f, 0.13781f, 0.137911f, 0.138012f, 0.138113f, 0.138214f, 0.138315f, 0.138416f, 0.138517f, 0.138618f, 0.138719f, 0.13882f, 0.138921f, 0.139022f, 0.139123f, 0.139224f,
+0.139325f, 0.139425f, 0.139526f, 0.139627f, 0.139728f, 0.139829f, 0.13993f, 0.140031f, 0.140132f, 0.140233f, 0.140334f, 0.140435f, 0.140536f, 0.140637f, 0.140738f, 0.140839f, 0.14094f, 0.141041f, 0.141142f, 0.141243f,
+0.141344f, 0.141444f, 0.141545f, 0.141646f, 0.141747f, 0.141848f, 0.141949f, 0.14205f, 0.142151f, 0.142252f, 0.142353f, 0.142454f, 0.142555f, 0.142656f, 0.142756f, 0.142857f, 0.142958f, 0.143059f, 0.14316f, 0.143261f,
+0.143362f, 0.143463f, 0.143564f, 0.143665f, 0.143766f, 0.143866f, 0.143967f, 0.144068f, 0.144169f, 0.14427f, 0.144371f, 0.144472f, 0.144573f, 0.144674f, 0.144774f, 0.144875f, 0.144976f, 0.145077f, 0.145178f, 0.145279f,
+0.14538f, 0.145481f, 0.145582f, 0.145682f, 0.145783f, 0.145884f, 0.145985f, 0.146086f, 0.146187f, 0.146288f, 0.146388f, 0.146489f, 0.14659f, 0.146691f, 0.146792f, 0.146893f, 0.146994f, 0.147094f, 0.147195f, 0.147296f,
+0.147397f, 0.147498f, 0.147599f, 0.1477f, 0.1478f, 0.147901f, 0.148002f, 0.148103f, 0.148204f, 0.148305f, 0.148405f, 0.148506f, 0.148607f, 0.148708f, 0.148809f, 0.14891f, 0.14901f, 0.149111f, 0.149212f, 0.149313f,
+0.149414f, 0.149514f, 0.149615f, 0.149716f, 0.149817f, 0.149918f, 0.150019f, 0.150119f, 0.15022f, 0.150321f, 0.150422f, 0.150523f, 0.150623f, 0.150724f, 0.150825f, 0.150926f, 0.151027f, 0.151127f, 0.151228f, 0.151329f,
+0.15143f, 0.15153f, 0.151631f, 0.151732f, 0.151833f, 0.151934f, 0.152034f, 0.152135f, 0.152236f, 0.152337f, 0.152437f, 0.152538f, 0.152639f, 0.15274f, 0.152841f, 0.152941f, 0.153042f, 0.153143f, 0.153244f, 0.153344f,
+0.153445f, 0.153546f, 0.153647f, 0.153747f, 0.153848f, 0.153949f, 0.15405f, 0.15415f, 0.154251f, 0.154352f, 0.154453f, 0.154553f, 0.154654f, 0.154755f, 0.154855f, 0.154956f, 0.155057f, 0.155158f, 0.155258f, 0.155359f,
+0.15546f, 0.155561f, 0.155661f, 0.155762f, 0.155863f, 0.155963f, 0.156064f, 0.156165f, 0.156266f, 0.156366f, 0.156467f, 0.156568f, 0.156668f, 0.156769f, 0.15687f, 0.156971f, 0.157071f, 0.157172f, 0.157273f, 0.157373f,
+0.157474f, 0.157575f, 0.157675f, 0.157776f, 0.157877f, 0.157977f, 0.158078f, 0.158179f, 0.158279f, 0.15838f, 0.158481f, 0.158581f, 0.158682f, 0.158783f, 0.158883f, 0.158984f, 0.159085f, 0.159185f, 0.159286f, 0.159387f,
+0.159487f, 0.159588f, 0.159689f, 0.159789f, 0.15989f, 0.159991f, 0.160091f, 0.160192f, 0.160293f, 0.160393f, 0.160494f, 0.160595f, 0.160695f, 0.160796f, 0.160896f, 0.160997f, 0.161098f, 0.161198f, 0.161299f, 0.1614f,
+0.1615f, 0.161601f, 0.161701f, 0.161802f, 0.161903f, 0.162003f, 0.162104f, 0.162205f, 0.162305f, 0.162406f, 0.162506f, 0.162607f, 0.162708f, 0.162808f, 0.162909f, 0.163009f, 0.16311f, 0.163211f, 0.163311f, 0.163412f,
+0.163512f, 0.163613f, 0.163714f, 0.163814f, 0.163915f, 0.164015f, 0.164116f, 0.164216f, 0.164317f, 0.164418f, 0.164518f, 0.164619f, 0.164719f, 0.16482f, 0.16492f, 0.165021f, 0.165122f, 0.165222f, 0.165323f, 0.165423f,
+0.165524f, 0.165624f, 0.165725f, 0.165825f, 0.165926f, 0.166027f, 0.166127f, 0.166228f, 0.166328f, 0.166429f, 0.166529f, 0.16663f, 0.16673f, 0.166831f, 0.166931f, 0.167032f, 0.167132f, 0.167233f, 0.167334f, 0.167434f,
+0.167535f, 0.167635f, 0.167736f, 0.167836f, 0.167937f, 0.168037f, 0.168138f, 0.168238f, 0.168339f, 0.168439f, 0.16854f, 0.16864f, 0.168741f, 0.168841f, 0.168942f, 0.169042f, 0.169143f, 0.169243f, 0.169344f, 0.169444f,
+0.169545f, 0.169645f, 0.169746f, 0.169846f, 0.169947f, 0.170047f, 0.170147f, 0.170248f, 0.170348f, 0.170449f, 0.170549f, 0.17065f, 0.17075f, 0.170851f, 0.170951f, 0.171052f, 0.171152f, 0.171253f, 0.171353f, 0.171453f,
+0.171554f, 0.171654f, 0.171755f, 0.171855f, 0.171956f, 0.172056f, 0.172157f, 0.172257f, 0.172357f, 0.172458f, 0.172558f, 0.172659f, 0.172759f, 0.17286f, 0.17296f, 0.17306f, 0.173161f, 0.173261f, 0.173362f, 0.173462f,
+0.173562f, 0.173663f, 0.173763f, 0.173864f, 0.173964f, 0.174065f, 0.174165f, 0.174265f, 0.174366f, 0.174466f, 0.174567f, 0.174667f, 0.174767f, 0.174868f, 0.174968f, 0.175068f, 0.175169f, 0.175269f, 0.17537f, 0.17547f,
+0.17557f, 0.175671f, 0.175771f, 0.175871f, 0.175972f, 0.176072f, 0.176173f, 0.176273f, 0.176373f, 0.176474f, 0.176574f, 0.176674f, 0.176775f, 0.176875f, 0.176975f, 0.177076f, 0.177176f, 0.177276f, 0.177377f, 0.177477f,
+0.177577f, 0.177678f, 0.177778f, 0.177878f, 0.177979f, 0.178079f, 0.178179f, 0.17828f, 0.17838f, 0.17848f, 0.178581f, 0.178681f, 0.178781f, 0.178882f, 0.178982f, 0.179082f, 0.179183f, 0.179283f, 0.179383f, 0.179483f,
+0.179584f, 0.179684f, 0.179784f, 0.179885f, 0.179985f, 0.180085f, 0.180186f, 0.180286f, 0.180386f, 0.180486f, 0.180587f, 0.180687f, 0.180787f, 0.180887f, 0.180988f, 0.181088f, 0.181188f, 0.181289f, 0.181389f, 0.181489f,
+0.181589f, 0.18169f, 0.18179f, 0.18189f, 0.18199f, 0.182091f, 0.182191f, 0.182291f, 0.182391f, 0.182492f, 0.182592f, 0.182692f, 0.182792f, 0.182893f, 0.182993f, 0.183093f, 0.183193f, 0.183293f, 0.183394f, 0.183494f,
+0.183594f, 0.183694f, 0.183795f, 0.183895f, 0.183995f, 0.184095f, 0.184195f, 0.184296f, 0.184396f, 0.184496f, 0.184596f, 0.184696f, 0.184797f, 0.184897f, 0.184997f, 0.185097f, 0.185197f, 0.185298f, 0.185398f, 0.185498f,
+0.185598f, 0.185698f, 0.185798f, 0.185899f, 0.185999f, 0.186099f, 0.186199f, 0.186299f, 0.186399f, 0.1865f, 0.1866f, 0.1867f, 0.1868f, 0.1869f, 0.187f, 0.187101f, 0.187201f, 0.187301f, 0.187401f, 0.187501f,
+0.187601f, 0.187701f, 0.187802f, 0.187902f, 0.188002f, 0.188102f, 0.188202f, 0.188302f, 0.188402f, 0.188502f, 0.188603f, 0.188703f, 0.188803f, 0.188903f, 0.189003f, 0.189103f, 0.189203f, 0.189303f, 0.189403f, 0.189504f,
+0.189604f, 0.189704f, 0.189804f, 0.189904f, 0.190004f, 0.190104f, 0.190204f, 0.190304f, 0.190404f, 0.190504f, 0.190605f, 0.190705f, 0.190805f, 0.190905f, 0.191005f, 0.191105f, 0.191205f, 0.191305f, 0.191405f, 0.191505f,
+0.191605f, 0.191705f, 0.191805f, 0.191905f, 0.192005f, 0.192105f, 0.192206f, 0.192306f, 0.192406f, 0.192506f, 0.192606f, 0.192706f, 0.192806f, 0.192906f, 0.193006f, 0.193106f, 0.193206f, 0.193306f, 0.193406f, 0.193506f,
+0.193606f, 0.193706f, 0.193806f, 0.193906f, 0.194006f, 0.194106f, 0.194206f, 0.194306f, 0.194406f, 0.194506f, 0.194606f, 0.194706f, 0.194806f, 0.194906f, 0.195006f, 0.195106f, 0.195206f, 0.195306f, 0.195406f, 0.195506f,
+0.195606f, 0.195706f, 0.195806f, 0.195906f, 0.196006f, 0.196106f, 0.196206f, 0.196306f, 0.196406f, 0.196505f, 0.196605f, 0.196705f, 0.196805f, 0.196905f, 0.197005f, 0.197105f, 0.197205f, 0.197305f, 0.197405f, 0.197505f,
+0.197605f, 0.197705f, 0.197805f, 0.197905f, 0.198005f, 0.198104f, 0.198204f, 0.198304f, 0.198404f, 0.198504f, 0.198604f, 0.198704f, 0.198804f, 0.198904f, 0.199004f, 0.199104f, 0.199203f, 0.199303f, 0.199403f, 0.199503f,
+0.199603f, 0.199703f, 0.199803f, 0.199903f, 0.200003f, 0.200102f, 0.200202f, 0.200302f, 0.200402f, 0.200502f, 0.200602f, 0.200702f, 0.200801f, 0.200901f, 0.201001f, 0.201101f, 0.201201f, 0.201301f, 0.201401f, 0.2015f,
+0.2016f, 0.2017f, 0.2018f, 0.2019f, 0.202f, 0.202099f, 0.202199f, 0.202299f, 0.202399f, 0.202499f, 0.202599f, 0.202698f, 0.202798f, 0.202898f, 0.202998f, 0.203098f, 0.203197f, 0.203297f, 0.203397f, 0.203497f,
+0.203597f, 0.203696f, 0.203796f, 0.203896f, 0.203996f, 0.204096f, 0.204195f, 0.204295f, 0.204395f, 0.204495f, 0.204595f, 0.204694f, 0.204794f, 0.204894f, 0.204994f, 0.205093f, 0.205193f, 0.205293f, 0.205393f, 0.205492f,
+0.205592f, 0.205692f, 0.205792f, 0.205891f, 0.205991f, 0.206091f, 0.206191f, 0.20629f, 0.20639f, 0.20649f, 0.20659f, 0.206689f, 0.206789f, 0.206889f, 0.206988f, 0.207088f, 0.207188f, 0.207288f, 0.207387f, 0.207487f,
+0.207587f, 0.207686f, 0.207786f, 0.207886f, 0.207986f, 0.208085f, 0.208185f, 0.208285f, 0.208384f, 0.208484f, 0.208584f, 0.208683f, 0.208783f, 0.208883f, 0.208982f, 0.209082f, 0.209182f, 0.209281f, 0.209381f, 0.209481f,
+0.20958f, 0.20968f, 0.20978f, 0.209879f, 0.209979f, 0.210079f, 0.210178f, 0.210278f, 0.210378f, 0.210477f, 0.210577f, 0.210677f, 0.210776f, 0.210876f, 0.210975f, 0.211075f, 0.211175f, 0.211274f, 0.211374f, 0.211474f,
+0.211573f, 0.211673f, 0.211772f, 0.211872f, 0.211972f, 0.212071f, 0.212171f, 0.21227f, 0.21237f, 0.21247f, 0.212569f, 0.212669f, 0.212768f, 0.212868f, 0.212968f, 0.213067f, 0.213167f, 0.213266f, 0.213366f, 0.213465f,
+0.213565f, 0.213665f, 0.213764f, 0.213864f, 0.213963f, 0.214063f, 0.214162f, 0.214262f, 0.214361f, 0.214461f, 0.214561f, 0.21466f, 0.21476f, 0.214859f, 0.214959f, 0.215058f, 0.215158f, 0.215257f, 0.215357f, 0.215456f,
+0.215556f, 0.215655f, 0.215755f, 0.215854f, 0.215954f, 0.216053f, 0.216153f, 0.216252f, 0.216352f, 0.216451f, 0.216551f, 0.21665f, 0.21675f, 0.216849f, 0.216949f, 0.217048f, 0.217148f, 0.217247f, 0.217347f, 0.217446f,
+0.217546f, 0.217645f, 0.217745f, 0.217844f, 0.217944f, 0.218043f, 0.218143f, 0.218242f, 0.218341f, 0.218441f, 0.21854f, 0.21864f, 0.218739f, 0.218839f, 0.218938f, 0.219038f, 0.219137f, 0.219236f, 0.219336f, 0.219435f,
+0.219535f, 0.219634f, 0.219734f, 0.219833f, 0.219932f, 0.220032f, 0.220131f, 0.220231f, 0.22033f, 0.220429f, 0.220529f, 0.220628f, 0.220728f, 0.220827f, 0.220926f, 0.221026f, 0.221125f, 0.221225f, 0.221324f, 0.221423f,
+0.221523f, 0.221622f, 0.221721f, 0.221821f, 0.22192f, 0.222019f, 0.222119f, 0.222218f, 0.222318f, 0.222417f, 0.222516f, 0.222616f, 0.222715f, 0.222814f, 0.222914f, 0.223013f, 0.223112f, 0.223212f, 0.223311f, 0.22341f,
+0.22351f, 0.223609f, 0.223708f, 0.223808f, 0.223907f, 0.224006f, 0.224106f, 0.224205f, 0.224304f, 0.224403f, 0.224503f, 0.224602f, 0.224701f, 0.224801f, 0.2249f, 0.224999f, 0.225098f, 0.225198f, 0.225297f, 0.225396f,
+0.225496f, 0.225595f, 0.225694f, 0.225793f, 0.225893f, 0.225992f, 0.226091f, 0.22619f, 0.22629f, 0.226389f, 0.226488f, 0.226587f, 0.226687f, 0.226786f, 0.226885f, 0.226984f, 0.227084f, 0.227183f, 0.227282f, 0.227381f,
+0.227481f, 0.22758f, 0.227679f, 0.227778f, 0.227877f, 0.227977f, 0.228076f, 0.228175f, 0.228274f, 0.228373f, 0.228473f, 0.228572f, 0.228671f, 0.22877f, 0.228869f, 0.228969f, 0.229068f, 0.229167f, 0.229266f, 0.229365f,
+0.229464f, 0.229564f, 0.229663f, 0.229762f, 0.229861f, 0.22996f, 0.230059f, 0.230159f, 0.230258f, 0.230357f, 0.230456f, 0.230555f, 0.230654f, 0.230753f, 0.230853f, 0.230952f, 0.231051f, 0.23115f, 0.231249f, 0.231348f,
+0.231447f, 0.231546f, 0.231646f, 0.231745f, 0.231844f, 0.231943f, 0.232042f, 0.232141f, 0.23224f, 0.232339f, 0.232438f, 0.232538f, 0.232637f, 0.232736f, 0.232835f, 0.232934f, 0.233033f, 0.233132f, 0.233231f, 0.23333f,
+0.233429f, 0.233528f, 0.233627f, 0.233726f, 0.233825f, 0.233925f, 0.234024f, 0.234123f, 0.234222f, 0.234321f, 0.23442f, 0.234519f, 0.234618f, 0.234717f, 0.234816f, 0.234915f, 0.235014f, 0.235113f, 0.235212f, 0.235311f,
+0.23541f, 0.235509f, 0.235608f, 0.235707f, 0.235806f, 0.235905f, 0.236004f, 0.236103f, 0.236202f, 0.236301f, 0.2364f, 0.236499f, 0.236598f, 0.236697f, 0.236796f, 0.236895f, 0.236994f, 0.237093f, 0.237192f, 0.237291f,
+0.23739f, 0.237489f, 0.237588f, 0.237687f, 0.237786f, 0.237885f, 0.237984f, 0.238082f, 0.238181f, 0.23828f, 0.238379f, 0.238478f, 0.238577f, 0.238676f, 0.238775f, 0.238874f, 0.238973f, 0.239072f, 0.239171f, 0.23927f,
+0.239368f, 0.239467f, 0.239566f, 0.239665f, 0.239764f, 0.239863f, 0.239962f, 0.240061f, 0.24016f, 0.240259f, 0.240357f, 0.240456f, 0.240555f, 0.240654f, 0.240753f, 0.240852f, 0.240951f, 0.241049f, 0.241148f, 0.241247f,
+0.241346f, 0.241445f, 0.241544f, 0.241643f, 0.241741f, 0.24184f, 0.241939f, 0.242038f, 0.242137f, 0.242236f, 0.242334f, 0.242433f, 0.242532f, 0.242631f, 0.24273f, 0.242829f, 0.242927f, 0.243026f, 0.243125f, 0.243224f,
+0.243323f, 0.243421f, 0.24352f, 0.243619f, 0.243718f, 0.243817f, 0.243915f, 0.244014f, 0.244113f, 0.244212f, 0.24431f, 0.244409f, 0.244508f, 0.244607f, 0.244705f, 0.244804f, 0.244903f, 0.245002f, 0.2451f, 0.245199f,
+0.245298f, 0.245397f, 0.245495f, 0.245594f, 0.245693f, 0.245792f, 0.24589f, 0.245989f, 0.246088f, 0.246187f, 0.246285f, 0.246384f, 0.246483f, 0.246581f, 0.24668f, 0.246779f, 0.246877f, 0.246976f, 0.247075f, 0.247174f,
+0.247272f, 0.247371f, 0.24747f, 0.247568f, 0.247667f, 0.247766f, 0.247864f, 0.247963f, 0.248062f, 0.24816f, 0.248259f, 0.248358f, 0.248456f, 0.248555f, 0.248654f, 0.248752f, 0.248851f, 0.24895f, 0.249048f, 0.249147f,
+0.249245f, 0.249344f, 0.249443f, 0.249541f, 0.24964f, 0.249739f, 0.249837f, 0.249936f, 0.250034f, 0.250133f, 0.250232f, 0.25033f, 0.250429f, 0.250527f, 0.250626f, 0.250725f, 0.250823f, 0.250922f, 0.25102f, 0.251119f,
+0.251217f, 0.251316f, 0.251415f, 0.251513f, 0.251612f, 0.25171f, 0.251809f, 0.251907f, 0.252006f, 0.252104f, 0.252203f, 0.252302f, 0.2524f, 0.252499f, 0.252597f, 0.252696f, 0.252794f, 0.252893f, 0.252991f, 0.25309f,
+0.253188f, 0.253287f, 0.253385f, 0.253484f, 0.253582f, 0.253681f, 0.253779f, 0.253878f, 0.253976f, 0.254075f, 0.254173f, 0.254272f, 0.25437f, 0.254469f, 0.254567f, 0.254666f, 0.254764f, 0.254863f, 0.254961f, 0.25506f,
+0.255158f, 0.255257f, 0.255355f, 0.255453f, 0.255552f, 0.25565f, 0.255749f, 0.255847f, 0.255946f, 0.256044f, 0.256142f, 0.256241f, 0.256339f, 0.256438f, 0.256536f, 0.256635f, 0.256733f, 0.256831f, 0.25693f, 0.257028f,
+0.257127f, 0.257225f, 0.257323f, 0.257422f, 0.25752f, 0.257619f, 0.257717f, 0.257815f, 0.257914f, 0.258012f, 0.25811f, 0.258209f, 0.258307f, 0.258406f, 0.258504f, 0.258602f, 0.258701f, 0.258799f, 0.258897f, 0.258996f,
+0.259094f, 0.259192f, 0.259291f, 0.259389f, 0.259487f, 0.259586f, 0.259684f, 0.259782f, 0.259881f, 0.259979f, 0.260077f, 0.260176f, 0.260274f, 0.260372f, 0.26047f, 0.260569f, 0.260667f, 0.260765f, 0.260864f, 0.260962f,
+0.26106f, 0.261158f, 0.261257f, 0.261355f, 0.261453f, 0.261552f, 0.26165f, 0.261748f, 0.261846f, 0.261945f, 0.262043f, 0.262141f, 0.262239f, 0.262338f, 0.262436f, 0.262534f, 0.262632f, 0.262731f, 0.262829f, 0.262927f,
+0.263025f, 0.263123f, 0.263222f, 0.26332f, 0.263418f, 0.263516f, 0.263614f, 0.263713f, 0.263811f, 0.263909f, 0.264007f, 0.264105f, 0.264204f, 0.264302f, 0.2644f, 0.264498f, 0.264596f, 0.264695f, 0.264793f, 0.264891f,
+0.264989f, 0.265087f, 0.265185f, 0.265283f, 0.265382f, 0.26548f, 0.265578f, 0.265676f, 0.265774f, 0.265872f, 0.26597f, 0.266069f, 0.266167f, 0.266265f, 0.266363f, 0.266461f, 0.266559f, 0.266657f, 0.266755f, 0.266853f,
+0.266952f, 0.26705f, 0.267148f, 0.267246f, 0.267344f, 0.267442f, 0.26754f, 0.267638f, 0.267736f, 0.267834f, 0.267932f, 0.26803f, 0.268129f, 0.268227f, 0.268325f, 0.268423f, 0.268521f, 0.268619f, 0.268717f, 0.268815f,
+0.268913f, 0.269011f, 0.269109f, 0.269207f, 0.269305f, 0.269403f, 0.269501f, 0.269599f, 0.269697f, 0.269795f, 0.269893f, 0.269991f, 0.270089f, 0.270187f, 0.270285f, 0.270383f, 0.270481f, 0.270579f, 0.270677f, 0.270775f,
+0.270873f, 0.270971f, 0.271069f, 0.271167f, 0.271265f, 0.271363f, 0.271461f, 0.271559f, 0.271657f, 0.271755f, 0.271853f, 0.271951f, 0.272049f, 0.272146f, 0.272244f, 0.272342f, 0.27244f, 0.272538f, 0.272636f, 0.272734f,
+0.272832f, 0.27293f, 0.273028f, 0.273126f, 0.273224f, 0.273321f, 0.273419f, 0.273517f, 0.273615f, 0.273713f, 0.273811f, 0.273909f, 0.274007f, 0.274105f, 0.274202f, 0.2743f, 0.274398f, 0.274496f, 0.274594f, 0.274692f,
+0.27479f, 0.274887f, 0.274985f, 0.275083f, 0.275181f, 0.275279f, 0.275377f, 0.275474f, 0.275572f, 0.27567f, 0.275768f, 0.275866f, 0.275964f, 0.276061f, 0.276159f, 0.276257f, 0.276355f, 0.276453f, 0.27655f, 0.276648f,
+0.276746f, 0.276844f, 0.276941f, 0.277039f, 0.277137f, 0.277235f, 0.277333f, 0.27743f, 0.277528f, 0.277626f, 0.277724f, 0.277821f, 0.277919f, 0.278017f, 0.278115f, 0.278212f, 0.27831f, 0.278408f, 0.278506f, 0.278603f,
+0.278701f, 0.278799f, 0.278896f, 0.278994f, 0.279092f, 0.27919f, 0.279287f, 0.279385f, 0.279483f, 0.27958f, 0.279678f, 0.279776f, 0.279873f, 0.279971f, 0.280069f, 0.280166f, 0.280264f, 0.280362f, 0.280459f, 0.280557f,
+0.280655f, 0.280752f, 0.28085f, 0.280948f, 0.281045f, 0.281143f, 0.281241f, 0.281338f, 0.281436f, 0.281534f, 0.281631f, 0.281729f, 0.281826f, 0.281924f, 0.282022f, 0.282119f, 0.282217f, 0.282314f, 0.282412f, 0.28251f,
+0.282607f, 0.282705f, 0.282802f, 0.2829f, 0.282998f, 0.283095f, 0.283193f, 0.28329f, 0.283388f, 0.283485f, 0.283583f, 0.283681f, 0.283778f, 0.283876f, 0.283973f, 0.284071f, 0.284168f, 0.284266f, 0.284363f, 0.284461f,
+0.284558f, 0.284656f, 0.284753f, 0.284851f, 0.284949f, 0.285046f, 0.285144f, 0.285241f, 0.285339f, 0.285436f, 0.285534f, 0.285631f, 0.285729f, 0.285826f, 0.285923f, 0.286021f, 0.286118f, 0.286216f, 0.286313f, 0.286411f,
+0.286508f, 0.286606f, 0.286703f, 0.286801f, 0.286898f, 0.286996f, 0.287093f, 0.28719f, 0.287288f, 0.287385f, 0.287483f, 0.28758f, 0.287678f, 0.287775f, 0.287872f, 0.28797f, 0.288067f, 0.288165f, 0.288262f, 0.288359f,
+0.288457f, 0.288554f, 0.288652f, 0.288749f, 0.288846f, 0.288944f, 0.289041f, 0.289138f, 0.289236f, 0.289333f, 0.289431f, 0.289528f, 0.289625f, 0.289723f, 0.28982f, 0.289917f, 0.290015f, 0.290112f, 0.290209f, 0.290307f,
+0.290404f, 0.290501f, 0.290599f, 0.290696f, 0.290793f, 0.290891f, 0.290988f, 0.291085f, 0.291183f, 0.29128f, 0.291377f, 0.291474f, 0.291572f, 0.291669f, 0.291766f, 0.291864f, 0.291961f, 0.292058f, 0.292155f, 0.292253f,
+0.29235f, 0.292447f, 0.292544f, 0.292642f, 0.292739f, 0.292836f, 0.292933f, 0.293031f, 0.293128f, 0.293225f, 0.293322f, 0.29342f, 0.293517f, 0.293614f, 0.293711f, 0.293808f, 0.293906f, 0.294003f, 0.2941f, 0.294197f,
+0.294294f, 0.294392f, 0.294489f, 0.294586f, 0.294683f, 0.29478f, 0.294877f, 0.294975f, 0.295072f, 0.295169f, 0.295266f, 0.295363f, 0.29546f, 0.295558f, 0.295655f, 0.295752f, 0.295849f, 0.295946f, 0.296043f, 0.29614f,
+0.296237f, 0.296335f, 0.296432f, 0.296529f, 0.296626f, 0.296723f, 0.29682f, 0.296917f, 0.297014f, 0.297111f, 0.297209f, 0.297306f, 0.297403f, 0.2975f, 0.297597f, 0.297694f, 0.297791f, 0.297888f, 0.297985f, 0.298082f,
+0.298179f, 0.298276f, 0.298373f, 0.29847f, 0.298567f, 0.298664f, 0.298761f, 0.298858f, 0.298956f, 0.299053f, 0.29915f, 0.299247f, 0.299344f, 0.299441f, 0.299538f, 0.299635f, 0.299732f, 0.299829f, 0.299926f, 0.300023f,
+0.30012f, 0.300217f, 0.300314f, 0.30041f, 0.300507f, 0.300604f, 0.300701f, 0.300798f, 0.300895f, 0.300992f, 0.301089f, 0.301186f, 0.301283f, 0.30138f, 0.301477f, 0.301574f, 0.301671f, 0.301768f, 0.301865f, 0.301962f,
+0.302059f, 0.302155f, 0.302252f, 0.302349f, 0.302446f, 0.302543f, 0.30264f, 0.302737f, 0.302834f, 0.302931f, 0.303027f, 0.303124f, 0.303221f, 0.303318f, 0.303415f, 0.303512f, 0.303609f, 0.303706f, 0.303802f, 0.303899f,
+0.303996f, 0.304093f, 0.30419f, 0.304287f, 0.304383f, 0.30448f, 0.304577f, 0.304674f, 0.304771f, 0.304867f, 0.304964f, 0.305061f, 0.305158f, 0.305255f, 0.305351f, 0.305448f, 0.305545f, 0.305642f, 0.305739f, 0.305835f,
+0.305932f, 0.306029f, 0.306126f, 0.306222f, 0.306319f, 0.306416f, 0.306513f, 0.306609f, 0.306706f, 0.306803f, 0.3069f, 0.306996f, 0.307093f, 0.30719f, 0.307287f, 0.307383f, 0.30748f, 0.307577f, 0.307673f, 0.30777f,
+0.307867f, 0.307964f, 0.30806f, 0.308157f, 0.308254f, 0.30835f, 0.308447f, 0.308544f, 0.30864f, 0.308737f, 0.308834f, 0.30893f, 0.309027f, 0.309124f, 0.30922f, 0.309317f, 0.309414f, 0.30951f, 0.309607f, 0.309703f,
+0.3098f, 0.309897f, 0.309993f, 0.31009f, 0.310187f, 0.310283f, 0.31038f, 0.310476f, 0.310573f, 0.31067f, 0.310766f, 0.310863f, 0.310959f, 0.311056f, 0.311153f, 0.311249f, 0.311346f, 0.311442f, 0.311539f, 0.311635f,
+0.311732f, 0.311828f, 0.311925f, 0.312022f, 0.312118f, 0.312215f, 0.312311f, 0.312408f, 0.312504f, 0.312601f, 0.312697f, 0.312794f, 0.31289f, 0.312987f, 0.313083f, 0.31318f, 0.313276f, 0.313373f, 0.313469f, 0.313566f,
+0.313662f, 0.313759f, 0.313855f, 0.313952f, 0.314048f, 0.314145f, 0.314241f, 0.314338f, 0.314434f, 0.31453f, 0.314627f, 0.314723f, 0.31482f, 0.314916f, 0.315013f, 0.315109f, 0.315205f, 0.315302f, 0.315398f, 0.315495f,
+0.315591f, 0.315688f, 0.315784f, 0.31588f, 0.315977f, 0.316073f, 0.316169f, 0.316266f, 0.316362f, 0.316459f, 0.316555f, 0.316651f, 0.316748f, 0.316844f, 0.31694f, 0.317037f, 0.317133f, 0.317229f, 0.317326f, 0.317422f,
+0.317519f, 0.317615f, 0.317711f, 0.317807f, 0.317904f, 0.318f, 0.318096f, 0.318193f, 0.318289f, 0.318385f, 0.318482f, 0.318578f, 0.318674f, 0.318771f, 0.318867f, 0.318963f, 0.319059f, 0.319156f, 0.319252f, 0.319348f,
+0.319444f, 0.319541f, 0.319637f, 0.319733f, 0.319829f, 0.319926f, 0.320022f, 0.320118f, 0.320214f, 0.320311f, 0.320407f, 0.320503f, 0.320599f, 0.320695f, 0.320792f, 0.320888f, 0.320984f, 0.32108f, 0.321176f, 0.321273f,
+0.321369f, 0.321465f, 0.321561f, 0.321657f, 0.321754f, 0.32185f, 0.321946f, 0.322042f, 0.322138f, 0.322234f, 0.32233f, 0.322427f, 0.322523f, 0.322619f, 0.322715f, 0.322811f, 0.322907f, 0.323003f, 0.323099f, 0.323196f,
+0.323292f, 0.323388f, 0.323484f, 0.32358f, 0.323676f, 0.323772f, 0.323868f, 0.323964f, 0.32406f, 0.324157f, 0.324253f, 0.324349f, 0.324445f, 0.324541f, 0.324637f, 0.324733f, 0.324829f, 0.324925f, 0.325021f, 0.325117f,
+0.325213f, 0.325309f, 0.325405f, 0.325501f, 0.325597f, 0.325693f, 0.325789f, 0.325885f, 0.325981f, 0.326077f, 0.326173f, 0.326269f, 0.326365f, 0.326461f, 0.326557f, 0.326653f, 0.326749f, 0.326845f, 0.326941f, 0.327037f,
+0.327133f, 0.327229f, 0.327325f, 0.327421f, 0.327517f, 0.327613f, 0.327709f, 0.327804f, 0.3279f, 0.327996f, 0.328092f, 0.328188f, 0.328284f, 0.32838f, 0.328476f, 0.328572f, 0.328668f, 0.328764f, 0.328859f, 0.328955f,
+0.329051f, 0.329147f, 0.329243f, 0.329339f, 0.329435f, 0.329531f, 0.329626f, 0.329722f, 0.329818f, 0.329914f, 0.33001f, 0.330106f, 0.330201f, 0.330297f, 0.330393f, 0.330489f, 0.330585f, 0.330681f, 0.330776f, 0.330872f,
+0.330968f, 0.331064f, 0.33116f, 0.331255f, 0.331351f, 0.331447f, 0.331543f, 0.331638f, 0.331734f, 0.33183f, 0.331926f, 0.332022f, 0.332117f, 0.332213f, 0.332309f, 0.332404f, 0.3325f, 0.332596f, 0.332692f, 0.332787f,
+0.332883f, 0.332979f, 0.333075f, 0.33317f, 0.333266f, 0.333362f, 0.333457f, 0.333553f, 0.333649f, 0.333744f, 0.33384f, 0.333936f, 0.334032f, 0.334127f, 0.334223f, 0.334319f, 0.334414f, 0.33451f, 0.334605f, 0.334701f,
+0.334797f, 0.334892f, 0.334988f, 0.335084f, 0.335179f, 0.335275f, 0.335371f, 0.335466f, 0.335562f, 0.335657f, 0.335753f, 0.335849f, 0.335944f, 0.33604f, 0.336135f, 0.336231f, 0.336327f, 0.336422f, 0.336518f, 0.336613f,
+0.336709f, 0.336804f, 0.3369f, 0.336995f, 0.337091f, 0.337187f, 0.337282f, 0.337378f, 0.337473f, 0.337569f, 0.337664f, 0.33776f, 0.337855f, 0.337951f, 0.338046f, 0.338142f, 0.338237f, 0.338333f, 0.338428f, 0.338524f,
+0.338619f, 0.338715f, 0.33881f, 0.338906f, 0.339001f, 0.339097f, 0.339192f, 0.339288f, 0.339383f, 0.339478f, 0.339574f, 0.339669f, 0.339765f, 0.33986f, 0.339956f, 0.340051f, 0.340146f, 0.340242f, 0.340337f, 0.340433f,
+0.340528f, 0.340624f, 0.340719f, 0.340814f, 0.34091f, 0.341005f, 0.3411f, 0.341196f, 0.341291f, 0.341387f, 0.341482f, 0.341577f, 0.341673f, 0.341768f, 0.341863f, 0.341959f, 0.342054f, 0.342149f, 0.342245f, 0.34234f,
+0.342435f, 0.342531f, 0.342626f, 0.342721f, 0.342817f, 0.342912f, 0.343007f, 0.343102f, 0.343198f, 0.343293f, 0.343388f, 0.343484f, 0.343579f, 0.343674f, 0.343769f, 0.343865f, 0.34396f, 0.344055f, 0.34415f, 0.344246f,
+0.344341f, 0.344436f, 0.344531f, 0.344627f, 0.344722f, 0.344817f, 0.344912f, 0.345008f, 0.345103f, 0.345198f, 0.345293f, 0.345388f, 0.345484f, 0.345579f, 0.345674f, 0.345769f, 0.345864f, 0.345959f, 0.346055f, 0.34615f,
+0.346245f, 0.34634f, 0.346435f, 0.34653f, 0.346626f, 0.346721f, 0.346816f, 0.346911f, 0.347006f, 0.347101f, 0.347196f, 0.347291f, 0.347387f, 0.347482f, 0.347577f, 0.347672f, 0.347767f, 0.347862f, 0.347957f, 0.348052f,
+0.348147f, 0.348242f, 0.348337f, 0.348433f, 0.348528f, 0.348623f, 0.348718f, 0.348813f, 0.348908f, 0.349003f, 0.349098f, 0.349193f, 0.349288f, 0.349383f, 0.349478f, 0.349573f, 0.349668f, 0.349763f, 0.349858f, 0.349953f,
+0.350048f, 0.350143f, 0.350238f, 0.350333f, 0.350428f, 0.350523f, 0.350618f, 0.350713f, 0.350808f, 0.350903f, 0.350998f, 0.351093f, 0.351188f, 0.351283f, 0.351377f, 0.351472f, 0.351567f, 0.351662f, 0.351757f, 0.351852f,
+0.351947f, 0.352042f, 0.352137f, 0.352232f, 0.352327f, 0.352422f, 0.352516f, 0.352611f, 0.352706f, 0.352801f, 0.352896f, 0.352991f, 0.353086f, 0.353181f, 0.353275f, 0.35337f, 0.353465f, 0.35356f, 0.353655f, 0.35375f,
+0.353844f, 0.353939f, 0.354034f, 0.354129f, 0.354224f, 0.354318f, 0.354413f, 0.354508f, 0.354603f, 0.354698f, 0.354792f, 0.354887f, 0.354982f, 0.355077f, 0.355172f, 0.355266f, 0.355361f, 0.355456f, 0.355551f, 0.355645f,
+0.35574f, 0.355835f, 0.35593f, 0.356024f, 0.356119f, 0.356214f, 0.356308f, 0.356403f, 0.356498f, 0.356593f, 0.356687f, 0.356782f, 0.356877f, 0.356971f, 0.357066f, 0.357161f, 0.357255f, 0.35735f, 0.357445f, 0.357539f,
+0.357634f, 0.357729f, 0.357823f, 0.357918f, 0.358013f, 0.358107f, 0.358202f, 0.358297f, 0.358391f, 0.358486f, 0.35858f, 0.358675f, 0.35877f, 0.358864f, 0.358959f, 0.359053f, 0.359148f, 0.359243f, 0.359337f, 0.359432f,
+0.359526f, 0.359621f, 0.359716f, 0.35981f, 0.359905f, 0.359999f, 0.360094f, 0.360188f, 0.360283f, 0.360377f, 0.360472f, 0.360566f, 0.360661f, 0.360755f, 0.36085f, 0.360944f, 0.361039f, 0.361133f, 0.361228f, 0.361322f,
+0.361417f, 0.361511f, 0.361606f, 0.3617f, 0.361795f, 0.361889f, 0.361984f, 0.362078f, 0.362173f, 0.362267f, 0.362362f, 0.362456f, 0.362551f, 0.362645f, 0.362739f, 0.362834f, 0.362928f, 0.363023f, 0.363117f, 0.363211f,
+0.363306f, 0.3634f, 0.363495f, 0.363589f, 0.363683f, 0.363778f, 0.363872f, 0.363967f, 0.364061f, 0.364155f, 0.36425f, 0.364344f, 0.364438f, 0.364533f, 0.364627f, 0.364721f, 0.364816f, 0.36491f, 0.365004f, 0.365099f,
+0.365193f, 0.365287f, 0.365382f, 0.365476f, 0.36557f, 0.365665f, 0.365759f, 0.365853f, 0.365947f, 0.366042f, 0.366136f, 0.36623f, 0.366324f, 0.366419f, 0.366513f, 0.366607f, 0.366701f, 0.366796f, 0.36689f, 0.366984f,
+0.367078f, 0.367173f, 0.367267f, 0.367361f, 0.367455f, 0.367549f, 0.367644f, 0.367738f, 0.367832f, 0.367926f, 0.36802f, 0.368115f, 0.368209f, 0.368303f, 0.368397f, 0.368491f, 0.368585f, 0.36868f, 0.368774f, 0.368868f,
+0.368962f, 0.369056f, 0.36915f, 0.369244f, 0.369339f, 0.369433f, 0.369527f, 0.369621f, 0.369715f, 0.369809f, 0.369903f, 0.369997f, 0.370091f, 0.370185f, 0.37028f, 0.370374f, 0.370468f, 0.370562f, 0.370656f, 0.37075f,
+0.370844f, 0.370938f, 0.371032f, 0.371126f, 0.37122f, 0.371314f, 0.371408f, 0.371502f, 0.371596f, 0.37169f, 0.371784f, 0.371878f, 0.371972f, 0.372066f, 0.37216f, 0.372254f, 0.372348f, 0.372442f, 0.372536f, 0.37263f,
+0.372724f, 0.372818f, 0.372912f, 0.373006f, 0.3731f, 0.373194f, 0.373288f, 0.373382f, 0.373476f, 0.37357f, 0.373663f, 0.373757f, 0.373851f, 0.373945f, 0.374039f, 0.374133f, 0.374227f, 0.374321f, 0.374415f, 0.374509f,
+0.374602f, 0.374696f, 0.37479f, 0.374884f, 0.374978f, 0.375072f, 0.375166f, 0.375259f, 0.375353f, 0.375447f, 0.375541f, 0.375635f, 0.375729f, 0.375822f, 0.375916f, 0.37601f, 0.376104f, 0.376198f, 0.376291f, 0.376385f,
+0.376479f, 0.376573f, 0.376667f, 0.37676f, 0.376854f, 0.376948f, 0.377042f, 0.377135f, 0.377229f, 0.377323f, 0.377417f, 0.37751f, 0.377604f, 0.377698f, 0.377792f, 0.377885f, 0.377979f, 0.378073f, 0.378166f, 0.37826f,
+0.378354f, 0.378447f, 0.378541f, 0.378635f, 0.378728f, 0.378822f, 0.378916f, 0.379009f, 0.379103f, 0.379197f, 0.37929f, 0.379384f, 0.379478f, 0.379571f, 0.379665f, 0.379759f, 0.379852f, 0.379946f, 0.380039f, 0.380133f,
+0.380227f, 0.38032f, 0.380414f, 0.380507f, 0.380601f, 0.380695f, 0.380788f, 0.380882f, 0.380975f, 0.381069f, 0.381162f, 0.381256f, 0.38135f, 0.381443f, 0.381537f, 0.38163f, 0.381724f, 0.381817f, 0.381911f, 0.382004f,
+0.382098f, 0.382191f, 0.382285f, 0.382378f, 0.382472f, 0.382565f, 0.382659f, 0.382752f, 0.382846f, 0.382939f, 0.383033f, 0.383126f, 0.38322f, 0.383313f, 0.383407f, 0.3835f, 0.383593f, 0.383687f, 0.38378f, 0.383874f,
+0.383967f, 0.384061f, 0.384154f, 0.384247f, 0.384341f, 0.384434f, 0.384528f, 0.384621f, 0.384714f, 0.384808f, 0.384901f, 0.384994f, 0.385088f, 0.385181f, 0.385275f, 0.385368f, 0.385461f, 0.385555f, 0.385648f, 0.385741f,
+0.385835f, 0.385928f, 0.386021f, 0.386115f, 0.386208f, 0.386301f, 0.386395f, 0.386488f, 0.386581f, 0.386674f, 0.386768f, 0.386861f, 0.386954f, 0.387047f, 0.387141f, 0.387234f, 0.387327f, 0.387421f, 0.387514f, 0.387607f,
+0.3877f, 0.387793f, 0.387887f, 0.38798f, 0.388073f, 0.388166f, 0.38826f, 0.388353f, 0.388446f, 0.388539f, 0.388632f, 0.388726f, 0.388819f, 0.388912f, 0.389005f, 0.389098f, 0.389191f, 0.389285f, 0.389378f, 0.389471f,
+0.389564f, 0.389657f, 0.38975f, 0.389843f, 0.389937f, 0.39003f, 0.390123f, 0.390216f, 0.390309f, 0.390402f, 0.390495f, 0.390588f, 0.390681f, 0.390774f, 0.390868f, 0.390961f, 0.391054f, 0.391147f, 0.39124f, 0.391333f,
+0.391426f, 0.391519f, 0.391612f, 0.391705f, 0.391798f, 0.391891f, 0.391984f, 0.392077f, 0.39217f, 0.392263f, 0.392356f, 0.392449f, 0.392542f, 0.392635f, 0.392728f, 0.392821f, 0.392914f, 0.393007f, 0.3931f, 0.393193f,
+0.393286f, 0.393379f, 0.393472f, 0.393565f, 0.393658f, 0.393751f, 0.393844f, 0.393937f, 0.394029f, 0.394122f, 0.394215f, 0.394308f, 0.394401f, 0.394494f, 0.394587f, 0.39468f, 0.394773f, 0.394866f, 0.394958f, 0.395051f,
+0.395144f, 0.395237f, 0.39533f, 0.395423f, 0.395516f, 0.395608f, 0.395701f, 0.395794f, 0.395887f, 0.39598f, 0.396072f, 0.396165f, 0.396258f, 0.396351f, 0.396444f, 0.396536f, 0.396629f, 0.396722f, 0.396815f, 0.396908f,
+0.397f, 0.397093f, 0.397186f, 0.397279f, 0.397371f, 0.397464f, 0.397557f, 0.39765f, 0.397742f, 0.397835f, 0.397928f, 0.39802f, 0.398113f, 0.398206f, 0.398299f, 0.398391f, 0.398484f, 0.398577f, 0.398669f, 0.398762f,
+0.398855f, 0.398947f, 0.39904f, 0.399133f, 0.399225f, 0.399318f, 0.399411f, 0.399503f, 0.399596f, 0.399689f, 0.399781f, 0.399874f, 0.399966f, 0.400059f, 0.400152f, 0.400244f, 0.400337f, 0.400429f, 0.400522f, 0.400615f,
+0.400707f, 0.4008f, 0.400892f, 0.400985f, 0.401077f, 0.40117f, 0.401262f, 0.401355f, 0.401448f, 0.40154f, 0.401633f, 0.401725f, 0.401818f, 0.40191f, 0.402003f, 0.402095f, 0.402188f, 0.40228f, 0.402373f, 0.402465f,
+0.402558f, 0.40265f, 0.402743f, 0.402835f, 0.402928f, 0.40302f, 0.403112f, 0.403205f, 0.403297f, 0.40339f, 0.403482f, 0.403575f, 0.403667f, 0.403759f, 0.403852f, 0.403944f, 0.404037f, 0.404129f, 0.404221f, 0.404314f,
+0.404406f, 0.404499f, 0.404591f, 0.404683f, 0.404776f, 0.404868f, 0.40496f, 0.405053f, 0.405145f, 0.405237f, 0.40533f, 0.405422f, 0.405514f, 0.405607f, 0.405699f, 0.405791f, 0.405884f, 0.405976f, 0.406068f, 0.406161f,
+0.406253f, 0.406345f, 0.406437f, 0.40653f, 0.406622f, 0.406714f, 0.406806f, 0.406899f, 0.406991f, 0.407083f, 0.407175f, 0.407268f, 0.40736f, 0.407452f, 0.407544f, 0.407637f, 0.407729f, 0.407821f, 0.407913f, 0.408005f,
+0.408098f, 0.40819f, 0.408282f, 0.408374f, 0.408466f, 0.408558f, 0.408651f, 0.408743f, 0.408835f, 0.408927f, 0.409019f, 0.409111f, 0.409203f, 0.409296f, 0.409388f, 0.40948f, 0.409572f, 0.409664f, 0.409756f, 0.409848f,
+0.40994f, 0.410032f, 0.410124f, 0.410216f, 0.410309f, 0.410401f, 0.410493f, 0.410585f, 0.410677f, 0.410769f, 0.410861f, 0.410953f, 0.411045f, 0.411137f, 0.411229f, 0.411321f, 0.411413f, 0.411505f, 0.411597f, 0.411689f,
+0.411781f, 0.411873f, 0.411965f, 0.412057f, 0.412149f, 0.412241f, 0.412333f, 0.412425f, 0.412517f, 0.412609f, 0.412701f, 0.412793f, 0.412884f, 0.412976f, 0.413068f, 0.41316f, 0.413252f, 0.413344f, 0.413436f, 0.413528f,
+0.41362f, 0.413712f, 0.413804f, 0.413895f, 0.413987f, 0.414079f, 0.414171f, 0.414263f, 0.414355f, 0.414447f, 0.414538f, 0.41463f, 0.414722f, 0.414814f, 0.414906f, 0.414998f, 0.415089f, 0.415181f, 0.415273f, 0.415365f,
+0.415457f, 0.415548f, 0.41564f, 0.415732f, 0.415824f, 0.415915f, 0.416007f, 0.416099f, 0.416191f, 0.416282f, 0.416374f, 0.416466f, 0.416558f, 0.416649f, 0.416741f, 0.416833f, 0.416924f, 0.417016f, 0.417108f, 0.4172f,
+0.417291f, 0.417383f, 0.417475f, 0.417566f, 0.417658f, 0.41775f, 0.417841f, 0.417933f, 0.418025f, 0.418116f, 0.418208f, 0.4183f, 0.418391f, 0.418483f, 0.418574f, 0.418666f, 0.418758f, 0.418849f, 0.418941f, 0.419032f,
+0.419124f, 0.419216f, 0.419307f, 0.419399f, 0.41949f, 0.419582f, 0.419673f, 0.419765f, 0.419857f, 0.419948f, 0.42004f, 0.420131f, 0.420223f, 0.420314f, 0.420406f, 0.420497f, 0.420589f, 0.42068f, 0.420772f, 0.420863f,
+0.420955f, 0.421046f, 0.421138f, 0.421229f, 0.421321f, 0.421412f, 0.421504f, 0.421595f, 0.421687f, 0.421778f, 0.421869f, 0.421961f, 0.422052f, 0.422144f, 0.422235f, 0.422327f, 0.422418f, 0.422509f, 0.422601f, 0.422692f,
+0.422783f, 0.422875f, 0.422966f, 0.423058f, 0.423149f, 0.42324f, 0.423332f, 0.423423f, 0.423514f, 0.423606f, 0.423697f, 0.423788f, 0.42388f, 0.423971f, 0.424062f, 0.424154f, 0.424245f, 0.424336f, 0.424428f, 0.424519f,
+0.42461f, 0.424701f, 0.424793f, 0.424884f, 0.424975f, 0.425067f, 0.425158f, 0.425249f, 0.42534f, 0.425431f, 0.425523f, 0.425614f, 0.425705f, 0.425796f, 0.425888f, 0.425979f, 0.42607f, 0.426161f, 0.426252f, 0.426344f,
+0.426435f, 0.426526f, 0.426617f, 0.426708f, 0.426799f, 0.426891f, 0.426982f, 0.427073f, 0.427164f, 0.427255f, 0.427346f, 0.427437f, 0.427529f, 0.42762f, 0.427711f, 0.427802f, 0.427893f, 0.427984f, 0.428075f, 0.428166f,
+0.428257f, 0.428348f, 0.428439f, 0.428531f, 0.428622f, 0.428713f, 0.428804f, 0.428895f, 0.428986f, 0.429077f, 0.429168f, 0.429259f, 0.42935f, 0.429441f, 0.429532f, 0.429623f, 0.429714f, 0.429805f, 0.429896f, 0.429987f,
+0.430078f, 0.430169f, 0.43026f, 0.430351f, 0.430442f, 0.430533f, 0.430624f, 0.430715f, 0.430805f, 0.430896f, 0.430987f, 0.431078f, 0.431169f, 0.43126f, 0.431351f, 0.431442f, 0.431533f, 0.431624f, 0.431714f, 0.431805f,
+0.431896f, 0.431987f, 0.432078f, 0.432169f, 0.43226f, 0.432351f, 0.432441f, 0.432532f, 0.432623f, 0.432714f, 0.432805f, 0.432895f, 0.432986f, 0.433077f, 0.433168f, 0.433259f, 0.433349f, 0.43344f, 0.433531f, 0.433622f,
+0.433713f, 0.433803f, 0.433894f, 0.433985f, 0.434076f, 0.434166f, 0.434257f, 0.434348f, 0.434439f, 0.434529f, 0.43462f, 0.434711f, 0.434801f, 0.434892f, 0.434983f, 0.435073f, 0.435164f, 0.435255f, 0.435345f, 0.435436f,
+0.435527f, 0.435617f, 0.435708f, 0.435799f, 0.435889f, 0.43598f, 0.436071f, 0.436161f, 0.436252f, 0.436343f, 0.436433f, 0.436524f, 0.436614f, 0.436705f, 0.436796f, 0.436886f, 0.436977f, 0.437067f, 0.437158f, 0.437248f,
+0.437339f, 0.437429f, 0.43752f, 0.437611f, 0.437701f, 0.437792f, 0.437882f, 0.437973f, 0.438063f, 0.438154f, 0.438244f, 0.438335f, 0.438425f, 0.438516f, 0.438606f, 0.438697f, 0.438787f, 0.438878f, 0.438968f, 0.439058f,
+0.439149f, 0.439239f, 0.43933f, 0.43942f, 0.439511f, 0.439601f, 0.439692f, 0.439782f, 0.439872f, 0.439963f, 0.440053f, 0.440144f, 0.440234f, 0.440324f, 0.440415f, 0.440505f, 0.440595f, 0.440686f, 0.440776f, 0.440866f,
+0.440957f, 0.441047f, 0.441137f, 0.441228f, 0.441318f, 0.441408f, 0.441499f, 0.441589f, 0.441679f, 0.44177f, 0.44186f, 0.44195f, 0.442041f, 0.442131f, 0.442221f, 0.442311f, 0.442402f, 0.442492f, 0.442582f, 0.442672f,
+0.442763f, 0.442853f, 0.442943f, 0.443033f, 0.443123f, 0.443214f, 0.443304f, 0.443394f, 0.443484f, 0.443574f, 0.443665f, 0.443755f, 0.443845f, 0.443935f, 0.444025f, 0.444115f, 0.444206f, 0.444296f, 0.444386f, 0.444476f,
+0.444566f, 0.444656f, 0.444746f, 0.444837f, 0.444927f, 0.445017f, 0.445107f, 0.445197f, 0.445287f, 0.445377f, 0.445467f, 0.445557f, 0.445647f, 0.445737f, 0.445827f, 0.445917f, 0.446008f, 0.446098f, 0.446188f, 0.446278f,
+0.446368f, 0.446458f, 0.446548f, 0.446638f, 0.446728f, 0.446818f, 0.446908f, 0.446998f, 0.447088f, 0.447178f, 0.447268f, 0.447358f, 0.447447f, 0.447537f, 0.447627f, 0.447717f, 0.447807f, 0.447897f, 0.447987f, 0.448077f,
+0.448167f, 0.448257f, 0.448347f, 0.448437f, 0.448527f, 0.448616f, 0.448706f, 0.448796f, 0.448886f, 0.448976f, 0.449066f, 0.449156f, 0.449245f, 0.449335f, 0.449425f, 0.449515f, 0.449605f, 0.449695f, 0.449784f, 0.449874f,
+0.449964f, 0.450054f, 0.450144f, 0.450233f, 0.450323f, 0.450413f, 0.450503f, 0.450593f, 0.450682f, 0.450772f, 0.450862f, 0.450952f, 0.451041f, 0.451131f, 0.451221f, 0.45131f, 0.4514f, 0.45149f, 0.45158f, 0.451669f,
+0.451759f, 0.451849f, 0.451938f, 0.452028f, 0.452118f, 0.452207f, 0.452297f, 0.452387f, 0.452476f, 0.452566f, 0.452656f, 0.452745f, 0.452835f, 0.452925f, 0.453014f, 0.453104f, 0.453193f, 0.453283f, 0.453373f, 0.453462f,
+0.453552f, 0.453641f, 0.453731f, 0.45382f, 0.45391f, 0.454f, 0.454089f, 0.454179f, 0.454268f, 0.454358f, 0.454447f, 0.454537f, 0.454626f, 0.454716f, 0.454805f, 0.454895f, 0.454984f, 0.455074f, 0.455163f, 0.455253f,
+0.455342f, 0.455432f, 0.455521f, 0.455611f, 0.4557f, 0.45579f, 0.455879f, 0.455968f, 0.456058f, 0.456147f, 0.456237f, 0.456326f, 0.456416f, 0.456505f, 0.456594f, 0.456684f, 0.456773f, 0.456863f, 0.456952f, 0.457041f,
+0.457131f, 0.45722f, 0.457309f, 0.457399f, 0.457488f, 0.457577f, 0.457667f, 0.457756f, 0.457845f, 0.457935f, 0.458024f, 0.458113f, 0.458203f, 0.458292f, 0.458381f, 0.45847f, 0.45856f, 0.458649f, 0.458738f, 0.458827f,
+0.458917f, 0.459006f, 0.459095f, 0.459184f, 0.459274f, 0.459363f, 0.459452f, 0.459541f, 0.459631f, 0.45972f, 0.459809f, 0.459898f, 0.459987f, 0.460077f, 0.460166f, 0.460255f, 0.460344f, 0.460433f, 0.460522f, 0.460611f,
+0.460701f, 0.46079f, 0.460879f, 0.460968f, 0.461057f, 0.461146f, 0.461235f, 0.461324f, 0.461414f, 0.461503f, 0.461592f, 0.461681f, 0.46177f, 0.461859f, 0.461948f, 0.462037f, 0.462126f, 0.462215f, 0.462304f, 0.462393f,
+0.462482f, 0.462571f, 0.46266f, 0.462749f, 0.462838f, 0.462927f, 0.463016f, 0.463105f, 0.463194f, 0.463283f, 0.463372f, 0.463461f, 0.46355f, 0.463639f, 0.463728f, 0.463817f, 0.463906f, 0.463995f, 0.464084f, 0.464173f,
+0.464262f, 0.464351f, 0.46444f, 0.464528f, 0.464617f, 0.464706f, 0.464795f, 0.464884f, 0.464973f, 0.465062f, 0.465151f, 0.465239f, 0.465328f, 0.465417f, 0.465506f, 0.465595f, 0.465684f, 0.465772f, 0.465861f, 0.46595f,
+0.466039f, 0.466128f, 0.466216f, 0.466305f, 0.466394f, 0.466483f, 0.466572f, 0.46666f, 0.466749f, 0.466838f, 0.466927f, 0.467015f, 0.467104f, 0.467193f, 0.467282f, 0.46737f, 0.467459f, 0.467548f, 0.467636f, 0.467725f,
+0.467814f, 0.467902f, 0.467991f, 0.46808f, 0.468168f, 0.468257f, 0.468346f, 0.468434f, 0.468523f, 0.468612f, 0.4687f, 0.468789f, 0.468878f, 0.468966f, 0.469055f, 0.469143f, 0.469232f, 0.469321f, 0.469409f, 0.469498f,
+0.469586f, 0.469675f, 0.469763f, 0.469852f, 0.469941f, 0.470029f, 0.470118f, 0.470206f, 0.470295f, 0.470383f, 0.470472f, 0.47056f, 0.470649f, 0.470737f, 0.470826f, 0.470914f, 0.471003f, 0.471091f, 0.47118f, 0.471268f,
+0.471357f, 0.471445f, 0.471534f, 0.471622f, 0.47171f, 0.471799f, 0.471887f, 0.471976f, 0.472064f, 0.472153f, 0.472241f, 0.472329f, 0.472418f, 0.472506f, 0.472595f, 0.472683f, 0.472771f, 0.47286f, 0.472948f, 0.473036f,
+0.473125f, 0.473213f, 0.473301f, 0.47339f, 0.473478f, 0.473566f, 0.473655f, 0.473743f, 0.473831f, 0.47392f, 0.474008f, 0.474096f, 0.474184f, 0.474273f, 0.474361f, 0.474449f, 0.474538f, 0.474626f, 0.474714f, 0.474802f,
+0.47489f, 0.474979f, 0.475067f, 0.475155f, 0.475243f, 0.475332f, 0.47542f, 0.475508f, 0.475596f, 0.475684f, 0.475772f, 0.475861f, 0.475949f, 0.476037f, 0.476125f, 0.476213f, 0.476301f, 0.47639f, 0.476478f, 0.476566f,
+0.476654f, 0.476742f, 0.47683f, 0.476918f, 0.477006f, 0.477094f, 0.477182f, 0.477271f, 0.477359f, 0.477447f, 0.477535f, 0.477623f, 0.477711f, 0.477799f, 0.477887f, 0.477975f, 0.478063f, 0.478151f, 0.478239f, 0.478327f,
+0.478415f, 0.478503f, 0.478591f, 0.478679f, 0.478767f, 0.478855f, 0.478943f, 0.479031f, 0.479119f, 0.479207f, 0.479295f, 0.479383f, 0.479471f, 0.479558f, 0.479646f, 0.479734f, 0.479822f, 0.47991f, 0.479998f, 0.480086f,
+0.480174f, 0.480262f, 0.48035f, 0.480437f, 0.480525f, 0.480613f, 0.480701f, 0.480789f, 0.480877f, 0.480964f, 0.481052f, 0.48114f, 0.481228f, 0.481316f, 0.481404f, 0.481491f, 0.481579f, 0.481667f, 0.481755f, 0.481842f,
+0.48193f, 0.482018f, 0.482106f, 0.482193f, 0.482281f, 0.482369f, 0.482457f, 0.482544f, 0.482632f, 0.48272f, 0.482808f, 0.482895f, 0.482983f, 0.483071f, 0.483158f, 0.483246f, 0.483334f, 0.483421f, 0.483509f, 0.483597f,
+0.483684f, 0.483772f, 0.48386f, 0.483947f, 0.484035f, 0.484122f, 0.48421f, 0.484298f, 0.484385f, 0.484473f, 0.48456f, 0.484648f, 0.484736f, 0.484823f, 0.484911f, 0.484998f, 0.485086f, 0.485173f, 0.485261f, 0.485348f,
+0.485436f, 0.485524f, 0.485611f, 0.485699f, 0.485786f, 0.485874f, 0.485961f, 0.486049f, 0.486136f, 0.486224f, 0.486311f, 0.486398f, 0.486486f, 0.486573f, 0.486661f, 0.486748f, 0.486836f, 0.486923f, 0.487011f, 0.487098f,
+0.487185f, 0.487273f, 0.48736f, 0.487448f, 0.487535f, 0.487622f, 0.48771f, 0.487797f, 0.487884f, 0.487972f, 0.488059f, 0.488147f, 0.488234f, 0.488321f, 0.488409f, 0.488496f, 0.488583f, 0.48867f, 0.488758f, 0.488845f,
+0.488932f, 0.48902f, 0.489107f, 0.489194f, 0.489281f, 0.489369f, 0.489456f, 0.489543f, 0.48963f, 0.489718f, 0.489805f, 0.489892f, 0.489979f, 0.490067f, 0.490154f, 0.490241f, 0.490328f, 0.490415f, 0.490503f, 0.49059f,
+0.490677f, 0.490764f, 0.490851f, 0.490938f, 0.491026f, 0.491113f, 0.4912f, 0.491287f, 0.491374f, 0.491461f, 0.491548f, 0.491635f, 0.491723f, 0.49181f, 0.491897f, 0.491984f, 0.492071f, 0.492158f, 0.492245f, 0.492332f,
+0.492419f, 0.492506f, 0.492593f, 0.49268f, 0.492767f, 0.492854f, 0.492941f, 0.493028f, 0.493115f, 0.493202f, 0.493289f, 0.493376f, 0.493463f, 0.49355f, 0.493637f, 0.493724f, 0.493811f, 0.493898f, 0.493985f, 0.494072f,
+0.494159f, 0.494246f, 0.494333f, 0.49442f, 0.494507f, 0.494594f, 0.49468f, 0.494767f, 0.494854f, 0.494941f, 0.495028f, 0.495115f, 0.495202f, 0.495289f, 0.495375f, 0.495462f, 0.495549f, 0.495636f, 0.495723f, 0.49581f,
+0.495896f, 0.495983f, 0.49607f, 0.496157f, 0.496244f, 0.49633f, 0.496417f, 0.496504f, 0.496591f, 0.496677f, 0.496764f, 0.496851f, 0.496938f, 0.497024f, 0.497111f, 0.497198f, 0.497285f, 0.497371f, 0.497458f, 0.497545f,
+0.497631f, 0.497718f, 0.497805f, 0.497891f, 0.497978f, 0.498065f, 0.498151f, 0.498238f, 0.498325f, 0.498411f, 0.498498f, 0.498585f, 0.498671f, 0.498758f, 0.498844f, 0.498931f, 0.499018f, 0.499104f, 0.499191f, 0.499277f,
+0.499364f, 0.49945f, 0.499537f, 0.499624f, 0.49971f, 0.499797f, 0.499883f, 0.49997f, 0.500056f, 0.500143f, 0.500229f, 0.500316f, 0.500402f, 0.500489f, 0.500575f, 0.500662f, 0.500748f, 0.500835f, 0.500921f, 0.501008f,
+0.501094f, 0.50118f, 0.501267f, 0.501353f, 0.50144f, 0.501526f, 0.501613f, 0.501699f, 0.501785f, 0.501872f, 0.501958f, 0.502045f, 0.502131f, 0.502217f, 0.502304f, 0.50239f, 0.502476f, 0.502563f, 0.502649f, 0.502735f,
+0.502822f, 0.502908f, 0.502994f, 0.503081f, 0.503167f, 0.503253f, 0.503339f, 0.503426f, 0.503512f, 0.503598f, 0.503685f, 0.503771f, 0.503857f, 0.503943f, 0.50403f, 0.504116f, 0.504202f, 0.504288f, 0.504374f, 0.504461f,
+0.504547f, 0.504633f, 0.504719f, 0.504805f, 0.504892f, 0.504978f, 0.505064f, 0.50515f, 0.505236f, 0.505322f, 0.505409f, 0.505495f, 0.505581f, 0.505667f, 0.505753f, 0.505839f, 0.505925f, 0.506011f, 0.506097f, 0.506184f,
+0.50627f, 0.506356f, 0.506442f, 0.506528f, 0.506614f, 0.5067f, 0.506786f, 0.506872f, 0.506958f, 0.507044f, 0.50713f, 0.507216f, 0.507302f, 0.507388f, 0.507474f, 0.50756f, 0.507646f, 0.507732f, 0.507818f, 0.507904f,
+0.50799f, 0.508076f, 0.508162f, 0.508248f, 0.508334f, 0.50842f, 0.508505f, 0.508591f, 0.508677f, 0.508763f, 0.508849f, 0.508935f, 0.509021f, 0.509107f, 0.509193f, 0.509278f, 0.509364f, 0.50945f, 0.509536f, 0.509622f,
+0.509708f, 0.509793f, 0.509879f, 0.509965f, 0.510051f, 0.510137f, 0.510222f, 0.510308f, 0.510394f, 0.51048f, 0.510566f, 0.510651f, 0.510737f, 0.510823f, 0.510909f, 0.510994f, 0.51108f, 0.511166f, 0.511251f, 0.511337f,
+0.511423f, 0.511509f, 0.511594f, 0.51168f, 0.511766f, 0.511851f, 0.511937f, 0.512023f, 0.512108f, 0.512194f, 0.51228f, 0.512365f, 0.512451f, 0.512536f, 0.512622f, 0.512708f, 0.512793f, 0.512879f, 0.512965f, 0.51305f,
+0.513136f, 0.513221f, 0.513307f, 0.513392f, 0.513478f, 0.513563f, 0.513649f, 0.513735f, 0.51382f, 0.513906f, 0.513991f, 0.514077f, 0.514162f, 0.514248f, 0.514333f, 0.514419f, 0.514504f, 0.51459f, 0.514675f, 0.51476f,
+0.514846f, 0.514931f, 0.515017f, 0.515102f, 0.515188f, 0.515273f, 0.515359f, 0.515444f, 0.515529f, 0.515615f, 0.5157f, 0.515786f, 0.515871f, 0.515956f, 0.516042f, 0.516127f, 0.516212f, 0.516298f, 0.516383f, 0.516468f,
+0.516554f, 0.516639f, 0.516724f, 0.51681f, 0.516895f, 0.51698f, 0.517066f, 0.517151f, 0.517236f, 0.517321f, 0.517407f, 0.517492f, 0.517577f, 0.517662f, 0.517748f, 0.517833f, 0.517918f, 0.518003f, 0.518089f, 0.518174f,
+0.518259f, 0.518344f, 0.518429f, 0.518514f, 0.5186f, 0.518685f, 0.51877f, 0.518855f, 0.51894f, 0.519025f, 0.519111f, 0.519196f, 0.519281f, 0.519366f, 0.519451f, 0.519536f, 0.519621f, 0.519706f, 0.519791f, 0.519877f,
+0.519962f, 0.520047f, 0.520132f, 0.520217f, 0.520302f, 0.520387f, 0.520472f, 0.520557f, 0.520642f, 0.520727f, 0.520812f, 0.520897f, 0.520982f, 0.521067f, 0.521152f, 0.521237f, 0.521322f, 0.521407f, 0.521492f, 0.521577f,
+0.521662f, 0.521747f, 0.521832f, 0.521917f, 0.522001f, 0.522086f, 0.522171f, 0.522256f, 0.522341f, 0.522426f, 0.522511f, 0.522596f, 0.522681f, 0.522765f, 0.52285f, 0.522935f, 0.52302f, 0.523105f, 0.52319f, 0.523274f,
+0.523359f, 0.523444f, 0.523529f, 0.523614f, 0.523699f, 0.523783f, 0.523868f, 0.523953f, 0.524038f, 0.524122f, 0.524207f, 0.524292f, 0.524377f, 0.524461f, 0.524546f, 0.524631f, 0.524716f, 0.5248f, 0.524885f, 0.52497f,
+0.525054f, 0.525139f, 0.525224f, 0.525308f, 0.525393f, 0.525478f, 0.525562f, 0.525647f, 0.525732f, 0.525816f, 0.525901f, 0.525985f, 0.52607f, 0.526155f, 0.526239f, 0.526324f, 0.526408f, 0.526493f, 0.526578f, 0.526662f,
+0.526747f, 0.526831f, 0.526916f, 0.527f, 0.527085f, 0.527169f, 0.527254f, 0.527338f, 0.527423f, 0.527508f, 0.527592f, 0.527676f, 0.527761f, 0.527845f, 0.52793f, 0.528014f, 0.528099f, 0.528183f, 0.528268f, 0.528352f,
+0.528437f, 0.528521f, 0.528605f, 0.52869f, 0.528774f, 0.528859f, 0.528943f, 0.529027f, 0.529112f, 0.529196f, 0.529281f, 0.529365f, 0.529449f, 0.529534f, 0.529618f, 0.529702f, 0.529787f, 0.529871f, 0.529955f, 0.53004f,
+0.530124f, 0.530208f, 0.530292f, 0.530377f, 0.530461f, 0.530545f, 0.53063f, 0.530714f, 0.530798f, 0.530882f, 0.530967f, 0.531051f, 0.531135f, 0.531219f, 0.531303f, 0.531388f, 0.531472f, 0.531556f, 0.53164f, 0.531724f,
+0.531809f, 0.531893f, 0.531977f, 0.532061f, 0.532145f, 0.532229f, 0.532313f, 0.532398f, 0.532482f, 0.532566f, 0.53265f, 0.532734f, 0.532818f, 0.532902f, 0.532986f, 0.53307f, 0.533154f, 0.533238f, 0.533323f, 0.533407f,
+0.533491f, 0.533575f, 0.533659f, 0.533743f, 0.533827f, 0.533911f, 0.533995f, 0.534079f, 0.534163f, 0.534247f, 0.534331f, 0.534415f, 0.534499f, 0.534583f, 0.534666f, 0.53475f, 0.534834f, 0.534918f, 0.535002f, 0.535086f,
+0.53517f, 0.535254f, 0.535338f, 0.535422f, 0.535506f, 0.535589f, 0.535673f, 0.535757f, 0.535841f, 0.535925f, 0.536009f, 0.536093f, 0.536176f, 0.53626f, 0.536344f, 0.536428f, 0.536512f, 0.536596f, 0.536679f, 0.536763f,
+0.536847f, 0.536931f, 0.537014f, 0.537098f, 0.537182f, 0.537266f, 0.537349f, 0.537433f, 0.537517f, 0.537601f, 0.537684f, 0.537768f, 0.537852f, 0.537935f, 0.538019f, 0.538103f, 0.538186f, 0.53827f, 0.538354f, 0.538437f,
+0.538521f, 0.538605f, 0.538688f, 0.538772f, 0.538856f, 0.538939f, 0.539023f, 0.539106f, 0.53919f, 0.539274f, 0.539357f, 0.539441f, 0.539524f, 0.539608f, 0.539691f, 0.539775f, 0.539858f, 0.539942f, 0.540026f, 0.540109f,
+0.540193f, 0.540276f, 0.54036f, 0.540443f, 0.540527f, 0.54061f, 0.540694f, 0.540777f, 0.54086f, 0.540944f, 0.541027f, 0.541111f, 0.541194f, 0.541278f, 0.541361f, 0.541444f, 0.541528f, 0.541611f, 0.541695f, 0.541778f,
+0.541861f, 0.541945f, 0.542028f, 0.542112f, 0.542195f, 0.542278f, 0.542362f, 0.542445f, 0.542528f, 0.542612f, 0.542695f, 0.542778f, 0.542862f, 0.542945f, 0.543028f, 0.543111f, 0.543195f, 0.543278f, 0.543361f, 0.543444f,
+0.543528f, 0.543611f, 0.543694f, 0.543777f, 0.543861f, 0.543944f, 0.544027f, 0.54411f, 0.544193f, 0.544277f, 0.54436f, 0.544443f, 0.544526f, 0.544609f, 0.544692f, 0.544776f, 0.544859f, 0.544942f, 0.545025f, 0.545108f,
+0.545191f, 0.545274f, 0.545357f, 0.545441f, 0.545524f, 0.545607f, 0.54569f, 0.545773f, 0.545856f, 0.545939f, 0.546022f, 0.546105f, 0.546188f, 0.546271f, 0.546354f, 0.546437f, 0.54652f, 0.546603f, 0.546686f, 0.546769f,
+0.546852f, 0.546935f, 0.547018f, 0.547101f, 0.547184f, 0.547267f, 0.54735f, 0.547433f, 0.547516f, 0.547599f, 0.547682f, 0.547764f, 0.547847f, 0.54793f, 0.548013f, 0.548096f, 0.548179f, 0.548262f, 0.548345f, 0.548427f,
+0.54851f, 0.548593f, 0.548676f, 0.548759f, 0.548842f, 0.548924f, 0.549007f, 0.54909f, 0.549173f, 0.549256f, 0.549338f, 0.549421f, 0.549504f, 0.549587f, 0.549669f, 0.549752f, 0.549835f, 0.549918f, 0.55f, 0.550083f,
+0.550166f, 0.550249f, 0.550331f, 0.550414f, 0.550497f, 0.550579f, 0.550662f, 0.550745f, 0.550827f, 0.55091f, 0.550993f, 0.551075f, 0.551158f, 0.55124f, 0.551323f, 0.551406f, 0.551488f, 0.551571f, 0.551653f, 0.551736f,
+0.551819f, 0.551901f, 0.551984f, 0.552066f, 0.552149f, 0.552231f, 0.552314f, 0.552396f, 0.552479f, 0.552561f, 0.552644f, 0.552726f, 0.552809f, 0.552891f, 0.552974f, 0.553056f, 0.553139f, 0.553221f, 0.553304f, 0.553386f,
+0.553469f, 0.553551f, 0.553634f, 0.553716f, 0.553798f, 0.553881f, 0.553963f, 0.554046f, 0.554128f, 0.55421f, 0.554293f, 0.554375f, 0.554457f, 0.55454f, 0.554622f, 0.554704f, 0.554787f, 0.554869f, 0.554951f, 0.555034f,
+0.555116f, 0.555198f, 0.555281f, 0.555363f, 0.555445f, 0.555527f, 0.55561f, 0.555692f, 0.555774f, 0.555856f, 0.555939f, 0.556021f, 0.556103f, 0.556185f, 0.556268f, 0.55635f, 0.556432f, 0.556514f, 0.556596f, 0.556678f,
+0.556761f, 0.556843f, 0.556925f, 0.557007f, 0.557089f, 0.557171f, 0.557253f, 0.557336f, 0.557418f, 0.5575f, 0.557582f, 0.557664f, 0.557746f, 0.557828f, 0.55791f, 0.557992f, 0.558074f, 0.558156f, 0.558238f, 0.55832f,
+0.558403f, 0.558485f, 0.558567f, 0.558649f, 0.558731f, 0.558813f, 0.558895f, 0.558977f, 0.559059f, 0.55914f, 0.559222f, 0.559304f, 0.559386f, 0.559468f, 0.55955f, 0.559632f, 0.559714f, 0.559796f, 0.559878f, 0.55996f,
+0.560042f, 0.560124f, 0.560205f, 0.560287f, 0.560369f, 0.560451f, 0.560533f, 0.560615f, 0.560697f, 0.560778f, 0.56086f, 0.560942f, 0.561024f, 0.561106f, 0.561187f, 0.561269f, 0.561351f, 0.561433f, 0.561515f, 0.561596f,
+0.561678f, 0.56176f, 0.561842f, 0.561923f, 0.562005f, 0.562087f, 0.562168f, 0.56225f, 0.562332f, 0.562414f, 0.562495f, 0.562577f, 0.562659f, 0.56274f, 0.562822f, 0.562904f, 0.562985f, 0.563067f, 0.563148f, 0.56323f,
+0.563312f, 0.563393f, 0.563475f, 0.563556f, 0.563638f, 0.56372f, 0.563801f, 0.563883f, 0.563964f, 0.564046f, 0.564127f, 0.564209f, 0.56429f, 0.564372f, 0.564454f, 0.564535f, 0.564617f, 0.564698f, 0.56478f, 0.564861f,
+0.564942f, 0.565024f, 0.565105f, 0.565187f, 0.565268f, 0.56535f, 0.565431f, 0.565513f, 0.565594f, 0.565675f, 0.565757f, 0.565838f, 0.56592f, 0.566001f, 0.566082f, 0.566164f, 0.566245f, 0.566327f, 0.566408f, 0.566489f,
+0.566571f, 0.566652f, 0.566733f, 0.566815f, 0.566896f, 0.566977f, 0.567058f, 0.56714f, 0.567221f, 0.567302f, 0.567384f, 0.567465f, 0.567546f, 0.567627f, 0.567709f, 0.56779f, 0.567871f, 0.567952f, 0.568033f, 0.568115f,
+0.568196f, 0.568277f, 0.568358f, 0.568439f, 0.568521f, 0.568602f, 0.568683f, 0.568764f, 0.568845f, 0.568926f, 0.569007f, 0.569089f, 0.56917f, 0.569251f, 0.569332f, 0.569413f, 0.569494f, 0.569575f, 0.569656f, 0.569737f,
+0.569818f, 0.569899f, 0.56998f, 0.570061f, 0.570142f, 0.570223f, 0.570304f, 0.570386f, 0.570467f, 0.570547f, 0.570628f, 0.570709f, 0.57079f, 0.570871f, 0.570952f, 0.571033f, 0.571114f, 0.571195f, 0.571276f, 0.571357f,
+0.571438f, 0.571519f, 0.5716f, 0.571681f, 0.571762f, 0.571842f, 0.571923f, 0.572004f, 0.572085f, 0.572166f, 0.572247f, 0.572328f, 0.572408f, 0.572489f, 0.57257f, 0.572651f, 0.572732f, 0.572812f, 0.572893f, 0.572974f,
+0.573055f, 0.573136f, 0.573216f, 0.573297f, 0.573378f, 0.573459f, 0.573539f, 0.57362f, 0.573701f, 0.573781f, 0.573862f, 0.573943f, 0.574024f, 0.574104f, 0.574185f, 0.574266f, 0.574346f, 0.574427f, 0.574508f, 0.574588f,
+0.574669f, 0.574749f, 0.57483f, 0.574911f, 0.574991f, 0.575072f, 0.575152f, 0.575233f, 0.575314f, 0.575394f, 0.575475f, 0.575555f, 0.575636f, 0.575716f, 0.575797f, 0.575878f, 0.575958f, 0.576039f, 0.576119f, 0.5762f,
+0.57628f, 0.576361f, 0.576441f, 0.576521f, 0.576602f, 0.576682f, 0.576763f, 0.576843f, 0.576924f, 0.577004f, 0.577085f, 0.577165f, 0.577245f, 0.577326f, 0.577406f, 0.577487f, 0.577567f, 0.577647f, 0.577728f, 0.577808f,
+0.577888f, 0.577969f, 0.578049f, 0.578129f, 0.57821f, 0.57829f, 0.57837f, 0.578451f, 0.578531f, 0.578611f, 0.578691f, 0.578772f, 0.578852f, 0.578932f, 0.579013f, 0.579093f, 0.579173f, 0.579253f, 0.579333f, 0.579414f,
+0.579494f, 0.579574f, 0.579654f, 0.579734f, 0.579815f, 0.579895f, 0.579975f, 0.580055f, 0.580135f, 0.580215f, 0.580296f, 0.580376f, 0.580456f, 0.580536f, 0.580616f, 0.580696f, 0.580776f, 0.580856f, 0.580936f, 0.581016f,
+0.581097f, 0.581177f, 0.581257f, 0.581337f, 0.581417f, 0.581497f, 0.581577f, 0.581657f, 0.581737f, 0.581817f, 0.581897f, 0.581977f, 0.582057f, 0.582137f, 0.582217f, 0.582297f, 0.582377f, 0.582457f, 0.582536f, 0.582616f,
+0.582696f, 0.582776f, 0.582856f, 0.582936f, 0.583016f, 0.583096f, 0.583176f, 0.583256f, 0.583335f, 0.583415f, 0.583495f, 0.583575f, 0.583655f, 0.583735f, 0.583814f, 0.583894f, 0.583974f, 0.584054f, 0.584134f, 0.584213f,
+0.584293f, 0.584373f, 0.584453f, 0.584533f, 0.584612f, 0.584692f, 0.584772f, 0.584851f, 0.584931f, 0.585011f, 0.585091f, 0.58517f, 0.58525f, 0.58533f, 0.585409f, 0.585489f, 0.585569f, 0.585648f, 0.585728f, 0.585808f,
+0.585887f, 0.585967f, 0.586046f, 0.586126f, 0.586206f, 0.586285f, 0.586365f, 0.586444f, 0.586524f, 0.586604f, 0.586683f, 0.586763f, 0.586842f, 0.586922f, 0.587001f, 0.587081f, 0.58716f, 0.58724f, 0.587319f, 0.587399f,
+0.587478f, 0.587558f, 0.587637f, 0.587717f, 0.587796f, 0.587876f, 0.587955f, 0.588035f, 0.588114f, 0.588193f, 0.588273f, 0.588352f, 0.588432f, 0.588511f, 0.58859f, 0.58867f, 0.588749f, 0.588829f, 0.588908f, 0.588987f,
+0.589067f, 0.589146f, 0.589225f, 0.589305f, 0.589384f, 0.589463f, 0.589543f, 0.589622f, 0.589701f, 0.58978f, 0.58986f, 0.589939f, 0.590018f, 0.590097f, 0.590177f, 0.590256f, 0.590335f, 0.590414f, 0.590494f, 0.590573f,
+0.590652f, 0.590731f, 0.59081f, 0.590889f, 0.590969f, 0.591048f, 0.591127f, 0.591206f, 0.591285f, 0.591364f, 0.591443f, 0.591523f, 0.591602f, 0.591681f, 0.59176f, 0.591839f, 0.591918f, 0.591997f, 0.592076f, 0.592155f,
+0.592234f, 0.592313f, 0.592392f, 0.592471f, 0.59255f, 0.592629f, 0.592708f, 0.592787f, 0.592866f, 0.592945f, 0.593024f, 0.593103f, 0.593182f, 0.593261f, 0.59334f, 0.593419f, 0.593498f, 0.593577f, 0.593656f, 0.593735f,
+0.593814f, 0.593893f, 0.593972f, 0.59405f, 0.594129f, 0.594208f, 0.594287f, 0.594366f, 0.594445f, 0.594524f, 0.594602f, 0.594681f, 0.59476f, 0.594839f, 0.594918f, 0.594997f, 0.595075f, 0.595154f, 0.595233f, 0.595312f,
+0.59539f, 0.595469f, 0.595548f, 0.595627f, 0.595705f, 0.595784f, 0.595863f, 0.595941f, 0.59602f, 0.596099f, 0.596178f, 0.596256f, 0.596335f, 0.596414f, 0.596492f, 0.596571f, 0.596649f, 0.596728f, 0.596807f, 0.596885f,
+0.596964f, 0.597043f, 0.597121f, 0.5972f, 0.597278f, 0.597357f, 0.597435f, 0.597514f, 0.597593f, 0.597671f, 0.59775f, 0.597828f, 0.597907f, 0.597985f, 0.598064f, 0.598142f, 0.598221f, 0.598299f, 0.598378f, 0.598456f,
+0.598535f, 0.598613f, 0.598692f, 0.59877f, 0.598848f, 0.598927f, 0.599005f, 0.599084f, 0.599162f, 0.59924f, 0.599319f, 0.599397f, 0.599476f, 0.599554f, 0.599632f, 0.599711f, 0.599789f, 0.599867f, 0.599946f, 0.600024f,
+0.600102f, 0.600181f, 0.600259f, 0.600337f, 0.600416f, 0.600494f, 0.600572f, 0.60065f, 0.600729f, 0.600807f, 0.600885f, 0.600963f, 0.601042f, 0.60112f, 0.601198f, 0.601276f, 0.601354f, 0.601433f, 0.601511f, 0.601589f,
+0.601667f, 0.601745f, 0.601823f, 0.601902f, 0.60198f, 0.602058f, 0.602136f, 0.602214f, 0.602292f, 0.60237f, 0.602448f, 0.602526f, 0.602605f, 0.602683f, 0.602761f, 0.602839f, 0.602917f, 0.602995f, 0.603073f, 0.603151f,
+0.603229f, 0.603307f, 0.603385f, 0.603463f, 0.603541f, 0.603619f, 0.603697f, 0.603775f, 0.603853f, 0.603931f, 0.604009f, 0.604087f, 0.604164f, 0.604242f, 0.60432f, 0.604398f, 0.604476f, 0.604554f, 0.604632f, 0.60471f,
+0.604788f, 0.604866f, 0.604943f, 0.605021f, 0.605099f, 0.605177f, 0.605255f, 0.605333f, 0.60541f, 0.605488f, 0.605566f, 0.605644f, 0.605721f, 0.605799f, 0.605877f, 0.605955f, 0.606033f, 0.60611f, 0.606188f, 0.606266f,
+0.606343f, 0.606421f, 0.606499f, 0.606577f, 0.606654f, 0.606732f, 0.60681f, 0.606887f, 0.606965f, 0.607043f, 0.60712f, 0.607198f, 0.607275f, 0.607353f, 0.607431f, 0.607508f, 0.607586f, 0.607664f, 0.607741f, 0.607819f,
+0.607896f, 0.607974f, 0.608051f, 0.608129f, 0.608206f, 0.608284f, 0.608361f, 0.608439f, 0.608517f, 0.608594f, 0.608672f, 0.608749f, 0.608826f, 0.608904f, 0.608981f, 0.609059f, 0.609136f, 0.609214f, 0.609291f, 0.609369f,
+0.609446f, 0.609523f, 0.609601f, 0.609678f, 0.609756f, 0.609833f, 0.60991f, 0.609988f, 0.610065f, 0.610142f, 0.61022f, 0.610297f, 0.610374f, 0.610452f, 0.610529f, 0.610606f, 0.610684f, 0.610761f, 0.610838f, 0.610916f,
+0.610993f, 0.61107f, 0.611147f, 0.611225f, 0.611302f, 0.611379f, 0.611456f, 0.611533f, 0.611611f, 0.611688f, 0.611765f, 0.611842f, 0.611919f, 0.611997f, 0.612074f, 0.612151f, 0.612228f, 0.612305f, 0.612382f, 0.612459f,
+0.612537f, 0.612614f, 0.612691f, 0.612768f, 0.612845f, 0.612922f, 0.612999f, 0.613076f, 0.613153f, 0.61323f, 0.613307f, 0.613384f, 0.613461f, 0.613538f, 0.613615f, 0.613692f, 0.613769f, 0.613846f, 0.613923f, 0.614f,
+0.614077f, 0.614154f, 0.614231f, 0.614308f, 0.614385f, 0.614462f, 0.614539f, 0.614616f, 0.614693f, 0.61477f, 0.614847f, 0.614923f, 0.615f, 0.615077f, 0.615154f, 0.615231f, 0.615308f, 0.615385f, 0.615461f, 0.615538f,
+0.615615f, 0.615692f, 0.615769f, 0.615845f, 0.615922f, 0.615999f, 0.616076f, 0.616152f, 0.616229f, 0.616306f, 0.616383f, 0.616459f, 0.616536f, 0.616613f, 0.61669f, 0.616766f, 0.616843f, 0.61692f, 0.616996f, 0.617073f,
+0.61715f, 0.617226f, 0.617303f, 0.61738f, 0.617456f, 0.617533f, 0.617609f, 0.617686f, 0.617763f, 0.617839f, 0.617916f, 0.617992f, 0.618069f, 0.618145f, 0.618222f, 0.618299f, 0.618375f, 0.618452f, 0.618528f, 0.618605f,
+0.618681f, 0.618758f, 0.618834f, 0.618911f, 0.618987f, 0.619064f, 0.61914f, 0.619217f, 0.619293f, 0.619369f, 0.619446f, 0.619522f, 0.619599f, 0.619675f, 0.619751f, 0.619828f, 0.619904f, 0.619981f, 0.620057f, 0.620133f,
+0.62021f, 0.620286f, 0.620362f, 0.620439f, 0.620515f, 0.620591f, 0.620668f, 0.620744f, 0.62082f, 0.620897f, 0.620973f, 0.621049f, 0.621125f, 0.621202f, 0.621278f, 0.621354f, 0.62143f, 0.621507f, 0.621583f, 0.621659f,
+0.621735f, 0.621811f, 0.621888f, 0.621964f, 0.62204f, 0.622116f, 0.622192f, 0.622268f, 0.622344f, 0.622421f, 0.622497f, 0.622573f, 0.622649f, 0.622725f, 0.622801f, 0.622877f, 0.622953f, 0.623029f, 0.623105f, 0.623181f,
+0.623258f, 0.623334f, 0.62341f, 0.623486f, 0.623562f, 0.623638f, 0.623714f, 0.62379f, 0.623866f, 0.623942f, 0.624018f, 0.624094f, 0.624169f, 0.624245f, 0.624321f, 0.624397f, 0.624473f, 0.624549f, 0.624625f, 0.624701f,
+0.624777f, 0.624853f, 0.624929f, 0.625004f, 0.62508f, 0.625156f, 0.625232f, 0.625308f, 0.625384f, 0.62546f, 0.625535f, 0.625611f, 0.625687f, 0.625763f, 0.625838f, 0.625914f, 0.62599f, 0.626066f, 0.626142f, 0.626217f,
+0.626293f, 0.626369f, 0.626444f, 0.62652f, 0.626596f, 0.626672f, 0.626747f, 0.626823f, 0.626899f, 0.626974f, 0.62705f, 0.627126f, 0.627201f, 0.627277f, 0.627353f, 0.627428f, 0.627504f, 0.627579f, 0.627655f, 0.627731f,
+0.627806f, 0.627882f, 0.627957f, 0.628033f, 0.628108f, 0.628184f, 0.628259f, 0.628335f, 0.62841f, 0.628486f, 0.628561f, 0.628637f, 0.628712f, 0.628788f, 0.628863f, 0.628939f, 0.629014f, 0.62909f, 0.629165f, 0.629241f,
+0.629316f, 0.629392f, 0.629467f, 0.629542f, 0.629618f, 0.629693f, 0.629768f, 0.629844f, 0.629919f, 0.629995f, 0.63007f, 0.630145f, 0.630221f, 0.630296f, 0.630371f, 0.630447f, 0.630522f, 0.630597f, 0.630672f, 0.630748f,
+0.630823f, 0.630898f, 0.630973f, 0.631049f, 0.631124f, 0.631199f, 0.631274f, 0.63135f, 0.631425f, 0.6315f, 0.631575f, 0.63165f, 0.631726f, 0.631801f, 0.631876f, 0.631951f, 0.632026f, 0.632101f, 0.632176f, 0.632252f,
+0.632327f, 0.632402f, 0.632477f, 0.632552f, 0.632627f, 0.632702f, 0.632777f, 0.632852f, 0.632927f, 0.633002f, 0.633077f, 0.633152f, 0.633227f, 0.633302f, 0.633377f, 0.633452f, 0.633527f, 0.633602f, 0.633677f, 0.633752f,
+0.633827f, 0.633902f, 0.633977f, 0.634052f, 0.634127f, 0.634202f, 0.634277f, 0.634352f, 0.634427f, 0.634502f, 0.634576f, 0.634651f, 0.634726f, 0.634801f, 0.634876f, 0.634951f, 0.635026f, 0.6351f, 0.635175f, 0.63525f,
+0.635325f, 0.6354f, 0.635474f, 0.635549f, 0.635624f, 0.635699f, 0.635773f, 0.635848f, 0.635923f, 0.635998f, 0.636072f, 0.636147f, 0.636222f, 0.636296f, 0.636371f, 0.636446f, 0.63652f, 0.636595f, 0.63667f, 0.636744f,
+0.636819f, 0.636894f, 0.636968f, 0.637043f, 0.637118f, 0.637192f, 0.637267f, 0.637341f, 0.637416f, 0.63749f, 0.637565f, 0.63764f, 0.637714f, 0.637789f, 0.637863f, 0.637938f, 0.638012f, 0.638087f, 0.638161f, 0.638236f,
+0.63831f, 0.638385f, 0.638459f, 0.638534f, 0.638608f, 0.638683f, 0.638757f, 0.638831f, 0.638906f, 0.63898f, 0.639055f, 0.639129f, 0.639203f, 0.639278f, 0.639352f, 0.639427f, 0.639501f, 0.639575f, 0.63965f, 0.639724f,
+0.639798f, 0.639873f, 0.639947f, 0.640021f, 0.640095f, 0.64017f, 0.640244f, 0.640318f, 0.640393f, 0.640467f, 0.640541f, 0.640615f, 0.64069f, 0.640764f, 0.640838f, 0.640912f, 0.640986f, 0.641061f, 0.641135f, 0.641209f,
+0.641283f, 0.641357f, 0.641431f, 0.641506f, 0.64158f, 0.641654f, 0.641728f, 0.641802f, 0.641876f, 0.64195f, 0.642024f, 0.642098f, 0.642172f, 0.642246f, 0.642321f, 0.642395f, 0.642469f, 0.642543f, 0.642617f, 0.642691f,
+0.642765f, 0.642839f, 0.642913f, 0.642987f, 0.643061f, 0.643135f, 0.643209f, 0.643283f, 0.643356f, 0.64343f, 0.643504f, 0.643578f, 0.643652f, 0.643726f, 0.6438f, 0.643874f, 0.643948f, 0.644022f, 0.644095f, 0.644169f,
+0.644243f, 0.644317f, 0.644391f, 0.644465f, 0.644538f, 0.644612f, 0.644686f, 0.64476f, 0.644834f, 0.644907f, 0.644981f, 0.645055f, 0.645129f, 0.645202f, 0.645276f, 0.64535f, 0.645424f, 0.645497f, 0.645571f, 0.645645f,
+0.645718f, 0.645792f, 0.645866f, 0.645939f, 0.646013f, 0.646087f, 0.64616f, 0.646234f, 0.646308f, 0.646381f, 0.646455f, 0.646528f, 0.646602f, 0.646676f, 0.646749f, 0.646823f, 0.646896f, 0.64697f, 0.647043f, 0.647117f,
+0.64719f, 0.647264f, 0.647337f, 0.647411f, 0.647484f, 0.647558f, 0.647631f, 0.647705f, 0.647778f, 0.647852f, 0.647925f, 0.647999f, 0.648072f, 0.648146f, 0.648219f, 0.648292f, 0.648366f, 0.648439f, 0.648513f, 0.648586f,
+0.648659f, 0.648733f, 0.648806f, 0.648879f, 0.648953f, 0.649026f, 0.649099f, 0.649173f, 0.649246f, 0.649319f, 0.649393f, 0.649466f, 0.649539f, 0.649612f, 0.649686f, 0.649759f, 0.649832f, 0.649905f, 0.649978f, 0.650052f,
+0.650125f, 0.650198f, 0.650271f, 0.650344f, 0.650418f, 0.650491f, 0.650564f, 0.650637f, 0.65071f, 0.650783f, 0.650857f, 0.65093f, 0.651003f, 0.651076f, 0.651149f, 0.651222f, 0.651295f, 0.651368f, 0.651441f, 0.651514f,
+0.651587f, 0.65166f, 0.651733f, 0.651806f, 0.651879f, 0.651952f, 0.652025f, 0.652098f, 0.652171f, 0.652244f, 0.652317f, 0.65239f, 0.652463f, 0.652536f, 0.652609f, 0.652682f, 0.652755f, 0.652828f, 0.652901f, 0.652974f,
+0.653046f, 0.653119f, 0.653192f, 0.653265f, 0.653338f, 0.653411f, 0.653484f, 0.653556f, 0.653629f, 0.653702f, 0.653775f, 0.653848f, 0.65392f, 0.653993f, 0.654066f, 0.654139f, 0.654211f, 0.654284f, 0.654357f, 0.65443f,
+0.654502f, 0.654575f, 0.654648f, 0.65472f, 0.654793f, 0.654866f, 0.654939f, 0.655011f, 0.655084f, 0.655156f, 0.655229f, 0.655302f, 0.655374f, 0.655447f, 0.65552f, 0.655592f, 0.655665f, 0.655737f, 0.65581f, 0.655882f,
+0.655955f, 0.656028f, 0.6561f, 0.656173f, 0.656245f, 0.656318f, 0.65639f, 0.656463f, 0.656535f, 0.656608f, 0.65668f, 0.656753f, 0.656825f, 0.656898f, 0.65697f, 0.657042f, 0.657115f, 0.657187f, 0.65726f, 0.657332f,
+0.657404f, 0.657477f, 0.657549f, 0.657622f, 0.657694f, 0.657766f, 0.657839f, 0.657911f, 0.657983f, 0.658056f, 0.658128f, 0.6582f, 0.658273f, 0.658345f, 0.658417f, 0.658489f, 0.658562f, 0.658634f, 0.658706f, 0.658778f,
+0.658851f, 0.658923f, 0.658995f, 0.659067f, 0.659139f, 0.659212f, 0.659284f, 0.659356f, 0.659428f, 0.6595f, 0.659572f, 0.659645f, 0.659717f, 0.659789f, 0.659861f, 0.659933f, 0.660005f, 0.660077f, 0.660149f, 0.660221f,
+0.660293f, 0.660366f, 0.660438f, 0.66051f, 0.660582f, 0.660654f, 0.660726f, 0.660798f, 0.66087f, 0.660942f, 0.661014f, 0.661086f, 0.661158f, 0.66123f, 0.661302f, 0.661373f, 0.661445f, 0.661517f, 0.661589f, 0.661661f,
+0.661733f, 0.661805f, 0.661877f, 0.661949f, 0.662021f, 0.662092f, 0.662164f, 0.662236f, 0.662308f, 0.66238f, 0.662452f, 0.662523f, 0.662595f, 0.662667f, 0.662739f, 0.662811f, 0.662882f, 0.662954f, 0.663026f, 0.663098f,
+0.663169f, 0.663241f, 0.663313f, 0.663385f, 0.663456f, 0.663528f, 0.6636f, 0.663671f, 0.663743f, 0.663815f, 0.663886f, 0.663958f, 0.66403f, 0.664101f, 0.664173f, 0.664244f, 0.664316f, 0.664388f, 0.664459f, 0.664531f,
+0.664602f, 0.664674f, 0.664746f, 0.664817f, 0.664889f, 0.66496f, 0.665032f, 0.665103f, 0.665175f, 0.665246f, 0.665318f, 0.665389f, 0.665461f, 0.665532f, 0.665604f, 0.665675f, 0.665746f, 0.665818f, 0.665889f, 0.665961f,
+0.666032f, 0.666104f, 0.666175f, 0.666246f, 0.666318f, 0.666389f, 0.66646f, 0.666532f, 0.666603f, 0.666674f, 0.666746f, 0.666817f, 0.666888f, 0.66696f, 0.667031f, 0.667102f, 0.667173f, 0.667245f, 0.667316f, 0.667387f,
+0.667459f, 0.66753f, 0.667601f, 0.667672f, 0.667743f, 0.667815f, 0.667886f, 0.667957f, 0.668028f, 0.668099f, 0.66817f, 0.668242f, 0.668313f, 0.668384f, 0.668455f, 0.668526f, 0.668597f, 0.668668f, 0.668739f, 0.668811f,
+0.668882f, 0.668953f, 0.669024f, 0.669095f, 0.669166f, 0.669237f, 0.669308f, 0.669379f, 0.66945f, 0.669521f, 0.669592f, 0.669663f, 0.669734f, 0.669805f, 0.669876f, 0.669947f, 0.670018f, 0.670089f, 0.67016f, 0.67023f,
+0.670301f, 0.670372f, 0.670443f, 0.670514f, 0.670585f, 0.670656f, 0.670727f, 0.670797f, 0.670868f, 0.670939f, 0.67101f, 0.671081f, 0.671152f, 0.671222f, 0.671293f, 0.671364f, 0.671435f, 0.671506f, 0.671576f, 0.671647f,
+0.671718f, 0.671789f, 0.671859f, 0.67193f, 0.672001f, 0.672071f, 0.672142f, 0.672213f, 0.672283f, 0.672354f, 0.672425f, 0.672495f, 0.672566f, 0.672637f, 0.672707f, 0.672778f, 0.672849f, 0.672919f, 0.67299f, 0.67306f,
+0.673131f, 0.673201f, 0.673272f, 0.673343f, 0.673413f, 0.673484f, 0.673554f, 0.673625f, 0.673695f, 0.673766f, 0.673836f, 0.673907f, 0.673977f, 0.674048f, 0.674118f, 0.674188f, 0.674259f, 0.674329f, 0.6744f, 0.67447f,
+0.674541f, 0.674611f, 0.674681f, 0.674752f, 0.674822f, 0.674893f, 0.674963f, 0.675033f, 0.675104f, 0.675174f, 0.675244f, 0.675315f, 0.675385f, 0.675455f, 0.675525f, 0.675596f, 0.675666f, 0.675736f, 0.675807f, 0.675877f,
+0.675947f, 0.676017f, 0.676087f, 0.676158f, 0.676228f, 0.676298f, 0.676368f, 0.676438f, 0.676509f, 0.676579f, 0.676649f, 0.676719f, 0.676789f, 0.676859f, 0.676929f, 0.677f, 0.67707f, 0.67714f, 0.67721f, 0.67728f,
+0.67735f, 0.67742f, 0.67749f, 0.67756f, 0.67763f, 0.6777f, 0.67777f, 0.67784f, 0.67791f, 0.67798f, 0.67805f, 0.67812f, 0.67819f, 0.67826f, 0.67833f, 0.6784f, 0.67847f, 0.67854f, 0.67861f, 0.67868f,
+0.67875f, 0.67882f, 0.678889f, 0.678959f, 0.679029f, 0.679099f, 0.679169f, 0.679239f, 0.679309f, 0.679378f, 0.679448f, 0.679518f, 0.679588f, 0.679658f, 0.679727f, 0.679797f, 0.679867f, 0.679937f, 0.680006f, 0.680076f,
+0.680146f, 0.680216f, 0.680285f, 0.680355f, 0.680425f, 0.680495f, 0.680564f, 0.680634f, 0.680704f, 0.680773f, 0.680843f, 0.680912f, 0.680982f, 0.681052f, 0.681121f, 0.681191f, 0.681261f, 0.68133f, 0.6814f, 0.681469f,
+0.681539f, 0.681608f, 0.681678f, 0.681748f, 0.681817f, 0.681887f, 0.681956f, 0.682026f, 0.682095f, 0.682165f, 0.682234f, 0.682304f, 0.682373f, 0.682442f, 0.682512f, 0.682581f, 0.682651f, 0.68272f, 0.68279f, 0.682859f,
+0.682928f, 0.682998f, 0.683067f, 0.683137f, 0.683206f, 0.683275f, 0.683345f, 0.683414f, 0.683483f, 0.683553f, 0.683622f, 0.683691f, 0.68376f, 0.68383f, 0.683899f, 0.683968f, 0.684038f, 0.684107f, 0.684176f, 0.684245f,
+0.684314f, 0.684384f, 0.684453f, 0.684522f, 0.684591f, 0.68466f, 0.68473f, 0.684799f, 0.684868f, 0.684937f, 0.685006f, 0.685075f, 0.685145f, 0.685214f, 0.685283f, 0.685352f, 0.685421f, 0.68549f, 0.685559f, 0.685628f,
+0.685697f, 0.685766f, 0.685835f, 0.685904f, 0.685973f, 0.686042f, 0.686111f, 0.68618f, 0.686249f, 0.686318f, 0.686387f, 0.686456f, 0.686525f, 0.686594f, 0.686663f, 0.686732f, 0.686801f, 0.68687f, 0.686939f, 0.687008f,
+0.687076f, 0.687145f, 0.687214f, 0.687283f, 0.687352f, 0.687421f, 0.68749f, 0.687558f, 0.687627f, 0.687696f, 0.687765f, 0.687834f, 0.687902f, 0.687971f, 0.68804f, 0.688109f, 0.688177f, 0.688246f, 0.688315f, 0.688384f,
+0.688452f, 0.688521f, 0.68859f, 0.688658f, 0.688727f, 0.688796f, 0.688864f, 0.688933f, 0.689002f, 0.68907f, 0.689139f, 0.689208f, 0.689276f, 0.689345f, 0.689413f, 0.689482f, 0.689551f, 0.689619f, 0.689688f, 0.689756f,
+0.689825f, 0.689893f, 0.689962f, 0.69003f, 0.690099f, 0.690167f, 0.690236f, 0.690304f, 0.690373f, 0.690441f, 0.69051f, 0.690578f, 0.690647f, 0.690715f, 0.690783f, 0.690852f, 0.69092f, 0.690989f, 0.691057f, 0.691125f,
+0.691194f, 0.691262f, 0.691331f, 0.691399f, 0.691467f, 0.691536f, 0.691604f, 0.691672f, 0.69174f, 0.691809f, 0.691877f, 0.691945f, 0.692014f, 0.692082f, 0.69215f, 0.692218f, 0.692287f, 0.692355f, 0.692423f, 0.692491f,
+0.692559f, 0.692628f, 0.692696f, 0.692764f, 0.692832f, 0.6929f, 0.692968f, 0.693037f, 0.693105f, 0.693173f, 0.693241f, 0.693309f, 0.693377f, 0.693445f, 0.693513f, 0.693581f, 0.693649f, 0.693717f, 0.693785f, 0.693853f,
+0.693922f, 0.69399f, 0.694058f, 0.694126f, 0.694194f, 0.694261f, 0.694329f, 0.694397f, 0.694465f, 0.694533f, 0.694601f, 0.694669f, 0.694737f, 0.694805f, 0.694873f, 0.694941f, 0.695009f, 0.695077f, 0.695144f, 0.695212f,
+0.69528f, 0.695348f, 0.695416f, 0.695484f, 0.695551f, 0.695619f, 0.695687f, 0.695755f, 0.695823f, 0.69589f, 0.695958f, 0.696026f, 0.696094f, 0.696161f, 0.696229f, 0.696297f, 0.696365f, 0.696432f, 0.6965f, 0.696568f,
+0.696635f, 0.696703f, 0.696771f, 0.696838f, 0.696906f, 0.696974f, 0.697041f, 0.697109f, 0.697176f, 0.697244f, 0.697312f, 0.697379f, 0.697447f, 0.697514f, 0.697582f, 0.69765f, 0.697717f, 0.697785f, 0.697852f, 0.69792f,
+0.697987f, 0.698055f, 0.698122f, 0.69819f, 0.698257f, 0.698325f, 0.698392f, 0.698459f, 0.698527f, 0.698594f, 0.698662f, 0.698729f, 0.698796f, 0.698864f, 0.698931f, 0.698999f, 0.699066f, 0.699133f, 0.699201f, 0.699268f,
+0.699335f, 0.699403f, 0.69947f, 0.699537f, 0.699605f, 0.699672f, 0.699739f, 0.699806f, 0.699874f, 0.699941f, 0.700008f, 0.700075f, 0.700143f, 0.70021f, 0.700277f, 0.700344f, 0.700411f, 0.700479f, 0.700546f, 0.700613f,
+0.70068f, 0.700747f, 0.700814f, 0.700882f, 0.700949f, 0.701016f, 0.701083f, 0.70115f, 0.701217f, 0.701284f, 0.701351f, 0.701418f, 0.701485f, 0.701552f, 0.701619f, 0.701686f, 0.701753f, 0.70182f, 0.701887f, 0.701954f,
+0.702021f, 0.702088f, 0.702155f, 0.702222f, 0.702289f, 0.702356f, 0.702423f, 0.70249f, 0.702557f, 0.702624f, 0.702691f, 0.702758f, 0.702825f, 0.702891f, 0.702958f, 0.703025f, 0.703092f, 0.703159f, 0.703226f, 0.703292f,
+0.703359f, 0.703426f, 0.703493f, 0.70356f, 0.703626f, 0.703693f, 0.70376f, 0.703827f, 0.703893f, 0.70396f, 0.704027f, 0.704094f, 0.70416f, 0.704227f, 0.704294f, 0.70436f, 0.704427f, 0.704494f, 0.70456f, 0.704627f,
+0.704694f, 0.70476f, 0.704827f, 0.704893f, 0.70496f, 0.705027f, 0.705093f, 0.70516f, 0.705226f, 0.705293f, 0.705359f, 0.705426f, 0.705492f, 0.705559f, 0.705625f, 0.705692f, 0.705758f, 0.705825f, 0.705891f, 0.705958f,
+0.706024f, 0.706091f, 0.706157f, 0.706224f, 0.70629f, 0.706356f, 0.706423f, 0.706489f, 0.706556f, 0.706622f, 0.706688f, 0.706755f, 0.706821f, 0.706887f, 0.706954f, 0.70702f, 0.707086f, 0.707153f, 0.707219f, 0.707285f,
+0.707352f, 0.707418f, 0.707484f, 0.70755f, 0.707617f, 0.707683f, 0.707749f, 0.707815f, 0.707881f, 0.707948f, 0.708014f, 0.70808f, 0.708146f, 0.708212f, 0.708279f, 0.708345f, 0.708411f, 0.708477f, 0.708543f, 0.708609f,
+0.708675f, 0.708741f, 0.708807f, 0.708874f, 0.70894f, 0.709006f, 0.709072f, 0.709138f, 0.709204f, 0.70927f, 0.709336f, 0.709402f, 0.709468f, 0.709534f, 0.7096f, 0.709666f, 0.709732f, 0.709798f, 0.709864f, 0.70993f,
+0.709995f, 0.710061f, 0.710127f, 0.710193f, 0.710259f, 0.710325f, 0.710391f, 0.710457f, 0.710523f, 0.710588f, 0.710654f, 0.71072f, 0.710786f, 0.710852f, 0.710917f, 0.710983f, 0.711049f, 0.711115f, 0.711181f, 0.711246f,
+0.711312f, 0.711378f, 0.711444f, 0.711509f, 0.711575f, 0.711641f, 0.711706f, 0.711772f, 0.711838f, 0.711903f, 0.711969f, 0.712035f, 0.7121f, 0.712166f, 0.712232f, 0.712297f, 0.712363f, 0.712428f, 0.712494f, 0.71256f,
+0.712625f, 0.712691f, 0.712756f, 0.712822f, 0.712887f, 0.712953f, 0.713018f, 0.713084f, 0.713149f, 0.713215f, 0.71328f, 0.713346f, 0.713411f, 0.713477f, 0.713542f, 0.713608f, 0.713673f, 0.713739f, 0.713804f, 0.713869f,
+0.713935f, 0.714f, 0.714066f, 0.714131f, 0.714196f, 0.714262f, 0.714327f, 0.714392f, 0.714458f, 0.714523f, 0.714588f, 0.714654f, 0.714719f, 0.714784f, 0.714849f, 0.714915f, 0.71498f, 0.715045f, 0.71511f, 0.715176f,
+0.715241f, 0.715306f, 0.715371f, 0.715436f, 0.715502f, 0.715567f, 0.715632f, 0.715697f, 0.715762f, 0.715827f, 0.715892f, 0.715958f, 0.716023f, 0.716088f, 0.716153f, 0.716218f, 0.716283f, 0.716348f, 0.716413f, 0.716478f,
+0.716543f, 0.716608f, 0.716673f, 0.716738f, 0.716803f, 0.716868f, 0.716933f, 0.716998f, 0.717063f, 0.717128f, 0.717193f, 0.717258f, 0.717323f, 0.717388f, 0.717453f, 0.717518f, 0.717583f, 0.717647f, 0.717712f, 0.717777f,
+0.717842f, 0.717907f, 0.717972f, 0.718037f, 0.718101f, 0.718166f, 0.718231f, 0.718296f, 0.718361f, 0.718425f, 0.71849f, 0.718555f, 0.71862f, 0.718684f, 0.718749f, 0.718814f, 0.718879f, 0.718943f, 0.719008f, 0.719073f,
+0.719137f, 0.719202f, 0.719267f, 0.719331f, 0.719396f, 0.719461f, 0.719525f, 0.71959f, 0.719654f, 0.719719f, 0.719784f, 0.719848f, 0.719913f, 0.719977f, 0.720042f, 0.720106f, 0.720171f, 0.720236f, 0.7203f, 0.720365f,
+0.720429f, 0.720494f, 0.720558f, 0.720622f, 0.720687f, 0.720751f, 0.720816f, 0.72088f, 0.720945f, 0.721009f, 0.721074f, 0.721138f, 0.721202f, 0.721267f, 0.721331f, 0.721395f, 0.72146f, 0.721524f, 0.721588f, 0.721653f,
+0.721717f, 0.721781f, 0.721846f, 0.72191f, 0.721974f, 0.722039f, 0.722103f, 0.722167f, 0.722231f, 0.722296f, 0.72236f, 0.722424f, 0.722488f, 0.722552f, 0.722617f, 0.722681f, 0.722745f, 0.722809f, 0.722873f, 0.722937f,
+0.723002f, 0.723066f, 0.72313f, 0.723194f, 0.723258f, 0.723322f, 0.723386f, 0.72345f, 0.723514f, 0.723578f, 0.723643f, 0.723707f, 0.723771f, 0.723835f, 0.723899f, 0.723963f, 0.724027f, 0.724091f, 0.724155f, 0.724219f,
+0.724283f, 0.724346f, 0.72441f, 0.724474f, 0.724538f, 0.724602f, 0.724666f, 0.72473f, 0.724794f, 0.724858f, 0.724922f, 0.724985f, 0.725049f, 0.725113f, 0.725177f, 0.725241f, 0.725305f, 0.725368f, 0.725432f, 0.725496f,
+0.72556f, 0.725624f, 0.725687f, 0.725751f, 0.725815f, 0.725879f, 0.725942f, 0.726006f, 0.72607f, 0.726133f, 0.726197f, 0.726261f, 0.726324f, 0.726388f, 0.726452f, 0.726515f, 0.726579f, 0.726643f, 0.726706f, 0.72677f,
+0.726833f, 0.726897f, 0.726961f, 0.727024f, 0.727088f, 0.727151f, 0.727215f, 0.727278f, 0.727342f, 0.727405f, 0.727469f, 0.727532f, 0.727596f, 0.727659f, 0.727723f, 0.727786f, 0.72785f, 0.727913f, 0.727977f, 0.72804f,
+0.728103f, 0.728167f, 0.72823f, 0.728294f, 0.728357f, 0.72842f, 0.728484f, 0.728547f, 0.72861f, 0.728674f, 0.728737f, 0.7288f, 0.728864f, 0.728927f, 0.72899f, 0.729054f, 0.729117f, 0.72918f, 0.729243f, 0.729307f,
+0.72937f, 0.729433f, 0.729496f, 0.72956f, 0.729623f, 0.729686f, 0.729749f, 0.729812f, 0.729875f, 0.729939f, 0.730002f, 0.730065f, 0.730128f, 0.730191f, 0.730254f, 0.730317f, 0.73038f, 0.730443f, 0.730507f, 0.73057f,
+0.730633f, 0.730696f, 0.730759f, 0.730822f, 0.730885f, 0.730948f, 0.731011f, 0.731074f, 0.731137f, 0.7312f, 0.731263f, 0.731326f, 0.731389f, 0.731451f, 0.731514f, 0.731577f, 0.73164f, 0.731703f, 0.731766f, 0.731829f,
+0.731892f, 0.731955f, 0.732017f, 0.73208f, 0.732143f, 0.732206f, 0.732269f, 0.732332f, 0.732394f, 0.732457f, 0.73252f, 0.732583f, 0.732645f, 0.732708f, 0.732771f, 0.732834f, 0.732896f, 0.732959f, 0.733022f, 0.733085f,
+0.733147f, 0.73321f, 0.733273f, 0.733335f, 0.733398f, 0.73346f, 0.733523f, 0.733586f, 0.733648f, 0.733711f, 0.733774f, 0.733836f, 0.733899f, 0.733961f, 0.734024f, 0.734086f, 0.734149f, 0.734211f, 0.734274f, 0.734336f,
+0.734399f, 0.734461f, 0.734524f, 0.734586f, 0.734649f, 0.734711f, 0.734774f, 0.734836f, 0.734899f, 0.734961f, 0.735024f, 0.735086f, 0.735148f, 0.735211f, 0.735273f, 0.735335f, 0.735398f, 0.73546f, 0.735522f, 0.735585f,
+0.735647f, 0.735709f, 0.735772f, 0.735834f, 0.735896f, 0.735959f, 0.736021f, 0.736083f, 0.736145f, 0.736208f, 0.73627f, 0.736332f, 0.736394f, 0.736456f, 0.736519f, 0.736581f, 0.736643f, 0.736705f, 0.736767f, 0.736829f,
+0.736892f, 0.736954f, 0.737016f, 0.737078f, 0.73714f, 0.737202f, 0.737264f, 0.737326f, 0.737388f, 0.73745f, 0.737512f, 0.737574f, 0.737636f, 0.737699f, 0.737761f, 0.737823f, 0.737884f, 0.737946f, 0.738008f, 0.73807f,
+0.738132f, 0.738194f, 0.738256f, 0.738318f, 0.73838f, 0.738442f, 0.738504f, 0.738566f, 0.738628f, 0.73869f, 0.738751f, 0.738813f, 0.738875f, 0.738937f, 0.738999f, 0.739061f, 0.739122f, 0.739184f, 0.739246f, 0.739308f,
+0.739369f, 0.739431f, 0.739493f, 0.739555f, 0.739616f, 0.739678f, 0.73974f, 0.739802f, 0.739863f, 0.739925f, 0.739987f, 0.740048f, 0.74011f, 0.740172f, 0.740233f, 0.740295f, 0.740356f, 0.740418f, 0.74048f, 0.740541f,
+0.740603f, 0.740664f, 0.740726f, 0.740788f, 0.740849f, 0.740911f, 0.740972f, 0.741034f, 0.741095f, 0.741157f, 0.741218f, 0.74128f, 0.741341f, 0.741403f, 0.741464f, 0.741525f, 0.741587f, 0.741648f, 0.74171f, 0.741771f,
+0.741833f, 0.741894f, 0.741955f, 0.742017f, 0.742078f, 0.742139f, 0.742201f, 0.742262f, 0.742323f, 0.742385f, 0.742446f, 0.742507f, 0.742569f, 0.74263f, 0.742691f, 0.742752f, 0.742814f, 0.742875f, 0.742936f, 0.742997f,
+0.743059f, 0.74312f, 0.743181f, 0.743242f, 0.743303f, 0.743364f, 0.743426f, 0.743487f, 0.743548f, 0.743609f, 0.74367f, 0.743731f, 0.743792f, 0.743853f, 0.743915f, 0.743976f, 0.744037f, 0.744098f, 0.744159f, 0.74422f,
+0.744281f, 0.744342f, 0.744403f, 0.744464f, 0.744525f, 0.744586f, 0.744647f, 0.744708f, 0.744769f, 0.74483f, 0.744891f, 0.744951f, 0.745012f, 0.745073f, 0.745134f, 0.745195f, 0.745256f, 0.745317f, 0.745378f, 0.745439f,
+0.745499f, 0.74556f, 0.745621f, 0.745682f, 0.745743f, 0.745803f, 0.745864f, 0.745925f, 0.745986f, 0.746047f, 0.746107f, 0.746168f, 0.746229f, 0.746289f, 0.74635f, 0.746411f, 0.746472f, 0.746532f, 0.746593f, 0.746654f,
+0.746714f, 0.746775f, 0.746836f, 0.746896f, 0.746957f, 0.747017f, 0.747078f, 0.747139f, 0.747199f, 0.74726f, 0.74732f, 0.747381f, 0.747441f, 0.747502f, 0.747562f, 0.747623f, 0.747683f, 0.747744f, 0.747804f, 0.747865f,
+0.747925f, 0.747986f, 0.748046f, 0.748107f, 0.748167f, 0.748228f, 0.748288f, 0.748348f, 0.748409f, 0.748469f, 0.748529f, 0.74859f, 0.74865f, 0.748711f, 0.748771f, 0.748831f, 0.748892f, 0.748952f, 0.749012f, 0.749072f,
+0.749133f, 0.749193f, 0.749253f, 0.749314f, 0.749374f, 0.749434f, 0.749494f, 0.749554f, 0.749615f, 0.749675f, 0.749735f, 0.749795f, 0.749855f, 0.749916f, 0.749976f, 0.750036f, 0.750096f, 0.750156f, 0.750216f, 0.750276f,
+0.750336f, 0.750396f, 0.750457f, 0.750517f, 0.750577f, 0.750637f, 0.750697f, 0.750757f, 0.750817f, 0.750877f, 0.750937f, 0.750997f, 0.751057f, 0.751117f, 0.751177f, 0.751237f, 0.751297f, 0.751356f, 0.751416f, 0.751476f,
+0.751536f, 0.751596f, 0.751656f, 0.751716f, 0.751776f, 0.751836f, 0.751895f, 0.751955f, 0.752015f, 0.752075f, 0.752135f, 0.752195f, 0.752254f, 0.752314f, 0.752374f, 0.752434f, 0.752493f, 0.752553f, 0.752613f, 0.752673f,
+0.752732f, 0.752792f, 0.752852f, 0.752911f, 0.752971f, 0.753031f, 0.75309f, 0.75315f, 0.75321f, 0.753269f, 0.753329f, 0.753389f, 0.753448f, 0.753508f, 0.753567f, 0.753627f, 0.753687f, 0.753746f, 0.753806f, 0.753865f,
+0.753925f, 0.753984f, 0.754044f, 0.754103f, 0.754163f, 0.754222f, 0.754282f, 0.754341f, 0.754401f, 0.75446f, 0.754519f, 0.754579f, 0.754638f, 0.754698f, 0.754757f, 0.754817f, 0.754876f, 0.754935f, 0.754995f, 0.755054f,
+0.755113f, 0.755173f, 0.755232f, 0.755291f, 0.755351f, 0.75541f, 0.755469f, 0.755528f, 0.755588f, 0.755647f, 0.755706f, 0.755765f, 0.755825f, 0.755884f, 0.755943f, 0.756002f, 0.756061f, 0.756121f, 0.75618f, 0.756239f,
+0.756298f, 0.756357f, 0.756416f, 0.756476f, 0.756535f, 0.756594f, 0.756653f, 0.756712f, 0.756771f, 0.75683f, 0.756889f, 0.756948f, 0.757007f, 0.757066f, 0.757125f, 0.757184f, 0.757243f, 0.757302f, 0.757361f, 0.75742f,
+0.757479f, 0.757538f, 0.757597f, 0.757656f, 0.757715f, 0.757774f, 0.757833f, 0.757892f, 0.757951f, 0.758009f, 0.758068f, 0.758127f, 0.758186f, 0.758245f, 0.758304f, 0.758362f, 0.758421f, 0.75848f, 0.758539f, 0.758598f,
+0.758656f, 0.758715f, 0.758774f, 0.758833f, 0.758891f, 0.75895f, 0.759009f, 0.759068f, 0.759126f, 0.759185f, 0.759244f, 0.759302f, 0.759361f, 0.75942f, 0.759478f, 0.759537f, 0.759596f, 0.759654f, 0.759713f, 0.759771f,
+0.75983f, 0.759888f, 0.759947f, 0.760006f, 0.760064f, 0.760123f, 0.760181f, 0.76024f, 0.760298f, 0.760357f, 0.760415f, 0.760474f, 0.760532f, 0.760591f, 0.760649f, 0.760708f, 0.760766f, 0.760824f, 0.760883f, 0.760941f,
+0.761f, 0.761058f, 0.761116f, 0.761175f, 0.761233f, 0.761291f, 0.76135f, 0.761408f, 0.761466f, 0.761525f, 0.761583f, 0.761641f, 0.7617f, 0.761758f, 0.761816f, 0.761874f, 0.761933f, 0.761991f, 0.762049f, 0.762107f,
+0.762165f, 0.762224f, 0.762282f, 0.76234f, 0.762398f, 0.762456f, 0.762514f, 0.762573f, 0.762631f, 0.762689f, 0.762747f, 0.762805f, 0.762863f, 0.762921f, 0.762979f, 0.763037f, 0.763095f, 0.763153f, 0.763211f, 0.763269f,
+0.763327f, 0.763385f, 0.763443f, 0.763501f, 0.763559f, 0.763617f, 0.763675f, 0.763733f, 0.763791f, 0.763849f, 0.763907f, 0.763965f, 0.764023f, 0.764081f, 0.764139f, 0.764196f, 0.764254f, 0.764312f, 0.76437f, 0.764428f,
+0.764486f, 0.764544f, 0.764601f, 0.764659f, 0.764717f, 0.764775f, 0.764832f, 0.76489f, 0.764948f, 0.765006f, 0.765063f, 0.765121f, 0.765179f, 0.765236f, 0.765294f, 0.765352f, 0.76541f, 0.765467f, 0.765525f, 0.765582f,
+0.76564f, 0.765698f, 0.765755f, 0.765813f, 0.765871f, 0.765928f, 0.765986f, 0.766043f, 0.766101f, 0.766158f, 0.766216f, 0.766273f, 0.766331f, 0.766388f, 0.766446f, 0.766503f, 0.766561f, 0.766618f, 0.766676f, 0.766733f,
+0.766791f, 0.766848f, 0.766906f, 0.766963f, 0.76702f, 0.767078f, 0.767135f, 0.767192f, 0.76725f, 0.767307f, 0.767365f, 0.767422f, 0.767479f, 0.767537f, 0.767594f, 0.767651f, 0.767708f, 0.767766f, 0.767823f, 0.76788f,
+0.767937f, 0.767995f, 0.768052f, 0.768109f, 0.768166f, 0.768224f, 0.768281f, 0.768338f, 0.768395f, 0.768452f, 0.768509f, 0.768567f, 0.768624f, 0.768681f, 0.768738f, 0.768795f, 0.768852f, 0.768909f, 0.768966f, 0.769023f,
+0.76908f, 0.769137f, 0.769194f, 0.769251f, 0.769308f, 0.769365f, 0.769422f, 0.769479f, 0.769536f, 0.769593f, 0.76965f, 0.769707f, 0.769764f, 0.769821f, 0.769878f, 0.769935f, 0.769992f, 0.770049f, 0.770106f, 0.770163f,
+0.770219f, 0.770276f, 0.770333f, 0.77039f, 0.770447f, 0.770504f, 0.77056f, 0.770617f, 0.770674f, 0.770731f, 0.770787f, 0.770844f, 0.770901f, 0.770958f, 0.771014f, 0.771071f, 0.771128f, 0.771185f, 0.771241f, 0.771298f,
+0.771355f, 0.771411f, 0.771468f, 0.771525f, 0.771581f, 0.771638f, 0.771694f, 0.771751f, 0.771808f, 0.771864f, 0.771921f, 0.771977f, 0.772034f, 0.77209f, 0.772147f, 0.772203f, 0.77226f, 0.772316f, 0.772373f, 0.772429f,
+0.772486f, 0.772542f, 0.772599f, 0.772655f, 0.772712f, 0.772768f, 0.772825f, 0.772881f, 0.772937f, 0.772994f, 0.77305f, 0.773107f, 0.773163f, 0.773219f, 0.773276f, 0.773332f, 0.773388f, 0.773445f, 0.773501f, 0.773557f,
+0.773613f, 0.77367f, 0.773726f, 0.773782f, 0.773838f, 0.773895f, 0.773951f, 0.774007f, 0.774063f, 0.77412f, 0.774176f, 0.774232f, 0.774288f, 0.774344f, 0.7744f, 0.774456f, 0.774513f, 0.774569f, 0.774625f, 0.774681f,
+0.774737f, 0.774793f, 0.774849f, 0.774905f, 0.774961f, 0.775017f, 0.775073f, 0.775129f, 0.775185f, 0.775241f, 0.775297f, 0.775353f, 0.775409f, 0.775465f, 0.775521f, 0.775577f, 0.775633f, 0.775689f, 0.775745f, 0.775801f,
+0.775857f, 0.775913f, 0.775969f, 0.776024f, 0.77608f, 0.776136f, 0.776192f, 0.776248f, 0.776304f, 0.776359f, 0.776415f, 0.776471f, 0.776527f, 0.776582f, 0.776638f, 0.776694f, 0.77675f, 0.776805f, 0.776861f, 0.776917f,
+0.776973f, 0.777028f, 0.777084f, 0.77714f, 0.777195f, 0.777251f, 0.777307f, 0.777362f, 0.777418f, 0.777473f, 0.777529f, 0.777585f, 0.77764f, 0.777696f, 0.777751f, 0.777807f, 0.777862f, 0.777918f, 0.777974f, 0.778029f,
+0.778085f, 0.77814f, 0.778196f, 0.778251f, 0.778306f, 0.778362f, 0.778417f, 0.778473f, 0.778528f, 0.778584f, 0.778639f, 0.778694f, 0.77875f, 0.778805f, 0.778861f, 0.778916f, 0.778971f, 0.779027f, 0.779082f, 0.779137f,
+0.779193f, 0.779248f, 0.779303f, 0.779359f, 0.779414f, 0.779469f, 0.779524f, 0.77958f, 0.779635f, 0.77969f, 0.779745f, 0.7798f, 0.779856f, 0.779911f, 0.779966f, 0.780021f, 0.780076f, 0.780131f, 0.780187f, 0.780242f,
+0.780297f, 0.780352f, 0.780407f, 0.780462f, 0.780517f, 0.780572f, 0.780627f, 0.780682f, 0.780737f, 0.780792f, 0.780847f, 0.780902f, 0.780957f, 0.781012f, 0.781067f, 0.781122f, 0.781177f, 0.781232f, 0.781287f, 0.781342f,
+0.781397f, 0.781452f, 0.781507f, 0.781562f, 0.781617f, 0.781672f, 0.781726f, 0.781781f, 0.781836f, 0.781891f, 0.781946f, 0.782001f, 0.782055f, 0.78211f, 0.782165f, 0.78222f, 0.782274f, 0.782329f, 0.782384f, 0.782439f,
+0.782493f, 0.782548f, 0.782603f, 0.782658f, 0.782712f, 0.782767f, 0.782822f, 0.782876f, 0.782931f, 0.782986f, 0.78304f, 0.783095f, 0.783149f, 0.783204f, 0.783259f, 0.783313f, 0.783368f, 0.783422f, 0.783477f, 0.783531f,
+0.783586f, 0.78364f, 0.783695f, 0.783749f, 0.783804f, 0.783858f, 0.783913f, 0.783967f, 0.784022f, 0.784076f, 0.784131f, 0.784185f, 0.784239f, 0.784294f, 0.784348f, 0.784403f, 0.784457f, 0.784511f, 0.784566f, 0.78462f,
+0.784674f, 0.784729f, 0.784783f, 0.784837f, 0.784892f, 0.784946f, 0.785f, 0.785054f, 0.785109f, 0.785163f, 0.785217f, 0.785271f, 0.785326f, 0.78538f, 0.785434f, 0.785488f, 0.785542f, 0.785597f, 0.785651f, 0.785705f,
+0.785759f, 0.785813f, 0.785867f, 0.785921f, 0.785975f, 0.786029f, 0.786084f, 0.786138f, 0.786192f, 0.786246f, 0.7863f, 0.786354f, 0.786408f, 0.786462f, 0.786516f, 0.78657f, 0.786624f, 0.786678f, 0.786732f, 0.786786f,
+0.78684f, 0.786894f, 0.786947f, 0.787001f, 0.787055f, 0.787109f, 0.787163f, 0.787217f, 0.787271f, 0.787325f, 0.787378f, 0.787432f, 0.787486f, 0.78754f, 0.787594f, 0.787648f, 0.787701f, 0.787755f, 0.787809f, 0.787863f,
+0.787916f, 0.78797f, 0.788024f, 0.788077f, 0.788131f, 0.788185f, 0.788239f, 0.788292f, 0.788346f, 0.7884f, 0.788453f, 0.788507f, 0.78856f, 0.788614f, 0.788668f, 0.788721f, 0.788775f, 0.788828f, 0.788882f, 0.788936f,
+0.788989f, 0.789043f, 0.789096f, 0.78915f, 0.789203f, 0.789257f, 0.78931f, 0.789364f, 0.789417f, 0.789471f, 0.789524f, 0.789577f, 0.789631f, 0.789684f, 0.789738f, 0.789791f, 0.789844f, 0.789898f, 0.789951f, 0.790005f,
+0.790058f, 0.790111f, 0.790165f, 0.790218f, 0.790271f, 0.790325f, 0.790378f, 0.790431f, 0.790484f, 0.790538f, 0.790591f, 0.790644f, 0.790697f, 0.790751f, 0.790804f, 0.790857f, 0.79091f, 0.790963f, 0.791016f, 0.79107f,
+0.791123f, 0.791176f, 0.791229f, 0.791282f, 0.791335f, 0.791388f, 0.791441f, 0.791495f, 0.791548f, 0.791601f, 0.791654f, 0.791707f, 0.79176f, 0.791813f, 0.791866f, 0.791919f, 0.791972f, 0.792025f, 0.792078f, 0.792131f,
+0.792184f, 0.792237f, 0.79229f, 0.792342f, 0.792395f, 0.792448f, 0.792501f, 0.792554f, 0.792607f, 0.79266f, 0.792713f, 0.792765f, 0.792818f, 0.792871f, 0.792924f, 0.792977f, 0.79303f, 0.793082f, 0.793135f, 0.793188f,
+0.793241f, 0.793293f, 0.793346f, 0.793399f, 0.793452f, 0.793504f, 0.793557f, 0.79361f, 0.793662f, 0.793715f, 0.793768f, 0.79382f, 0.793873f, 0.793925f, 0.793978f, 0.794031f, 0.794083f, 0.794136f, 0.794188f, 0.794241f,
+0.794294f, 0.794346f, 0.794399f, 0.794451f, 0.794504f, 0.794556f, 0.794609f, 0.794661f, 0.794714f, 0.794766f, 0.794819f, 0.794871f, 0.794923f, 0.794976f, 0.795028f, 0.795081f, 0.795133f, 0.795185f, 0.795238f, 0.79529f,
+0.795343f, 0.795395f, 0.795447f, 0.7955f, 0.795552f, 0.795604f, 0.795656f, 0.795709f, 0.795761f, 0.795813f, 0.795866f, 0.795918f, 0.79597f, 0.796022f, 0.796074f, 0.796127f, 0.796179f, 0.796231f, 0.796283f, 0.796335f,
+0.796388f, 0.79644f, 0.796492f, 0.796544f, 0.796596f, 0.796648f, 0.7967f, 0.796752f, 0.796804f, 0.796857f, 0.796909f, 0.796961f, 0.797013f, 0.797065f, 0.797117f, 0.797169f, 0.797221f, 0.797273f, 0.797325f, 0.797377f,
+0.797429f, 0.797481f, 0.797532f, 0.797584f, 0.797636f, 0.797688f, 0.79774f, 0.797792f, 0.797844f, 0.797896f, 0.797948f, 0.797999f, 0.798051f, 0.798103f, 0.798155f, 0.798207f, 0.798259f, 0.79831f, 0.798362f, 0.798414f,
+0.798466f, 0.798517f, 0.798569f, 0.798621f, 0.798673f, 0.798724f, 0.798776f, 0.798828f, 0.798879f, 0.798931f, 0.798983f, 0.799034f, 0.799086f, 0.799138f, 0.799189f, 0.799241f, 0.799292f, 0.799344f, 0.799395f, 0.799447f,
+0.799499f, 0.79955f, 0.799602f, 0.799653f, 0.799705f, 0.799756f, 0.799808f, 0.799859f, 0.799911f, 0.799962f, 0.800014f, 0.800065f, 0.800117f, 0.800168f, 0.800219f, 0.800271f, 0.800322f, 0.800374f, 0.800425f, 0.800476f,
+0.800528f, 0.800579f, 0.80063f, 0.800682f, 0.800733f, 0.800784f, 0.800836f, 0.800887f, 0.800938f, 0.800989f, 0.801041f, 0.801092f, 0.801143f, 0.801194f, 0.801246f, 0.801297f, 0.801348f, 0.801399f, 0.80145f, 0.801501f,
+0.801553f, 0.801604f, 0.801655f, 0.801706f, 0.801757f, 0.801808f, 0.801859f, 0.80191f, 0.801962f, 0.802013f, 0.802064f, 0.802115f, 0.802166f, 0.802217f, 0.802268f, 0.802319f, 0.80237f, 0.802421f, 0.802472f, 0.802523f,
+0.802574f, 0.802625f, 0.802675f, 0.802726f, 0.802777f, 0.802828f, 0.802879f, 0.80293f, 0.802981f, 0.803032f, 0.803083f, 0.803133f, 0.803184f, 0.803235f, 0.803286f, 0.803337f, 0.803388f, 0.803438f, 0.803489f, 0.80354f,
+0.803591f, 0.803641f, 0.803692f, 0.803743f, 0.803793f, 0.803844f, 0.803895f, 0.803946f, 0.803996f, 0.804047f, 0.804098f, 0.804148f, 0.804199f, 0.804249f, 0.8043f, 0.804351f, 0.804401f, 0.804452f, 0.804502f, 0.804553f,
+0.804604f, 0.804654f, 0.804705f, 0.804755f, 0.804806f, 0.804856f, 0.804907f, 0.804957f, 0.805008f, 0.805058f, 0.805108f, 0.805159f, 0.805209f, 0.80526f, 0.80531f, 0.805361f, 0.805411f, 0.805461f, 0.805512f, 0.805562f,
+0.805612f, 0.805663f, 0.805713f, 0.805763f, 0.805814f, 0.805864f, 0.805914f, 0.805965f, 0.806015f, 0.806065f, 0.806115f, 0.806166f, 0.806216f, 0.806266f, 0.806316f, 0.806366f, 0.806417f, 0.806467f, 0.806517f, 0.806567f,
+0.806617f, 0.806667f, 0.806718f, 0.806768f, 0.806818f, 0.806868f, 0.806918f, 0.806968f, 0.807018f, 0.807068f, 0.807118f, 0.807168f, 0.807218f, 0.807268f, 0.807318f, 0.807368f, 0.807418f, 0.807468f, 0.807518f, 0.807568f,
+0.807618f, 0.807668f, 0.807718f, 0.807768f, 0.807818f, 0.807868f, 0.807918f, 0.807967f, 0.808017f, 0.808067f, 0.808117f, 0.808167f, 0.808217f, 0.808267f, 0.808316f, 0.808366f, 0.808416f, 0.808466f, 0.808515f, 0.808565f,
+0.808615f, 0.808665f, 0.808714f, 0.808764f, 0.808814f, 0.808863f, 0.808913f, 0.808963f, 0.809013f, 0.809062f, 0.809112f, 0.809161f, 0.809211f, 0.809261f, 0.80931f, 0.80936f, 0.809409f, 0.809459f, 0.809509f, 0.809558f,
+0.809608f, 0.809657f, 0.809707f, 0.809756f, 0.809806f, 0.809855f, 0.809905f, 0.809954f, 0.810004f, 0.810053f, 0.810103f, 0.810152f, 0.810201f, 0.810251f, 0.8103f, 0.81035f, 0.810399f, 0.810448f, 0.810498f, 0.810547f,
+0.810596f, 0.810646f, 0.810695f, 0.810744f, 0.810794f, 0.810843f, 0.810892f, 0.810941f, 0.810991f, 0.81104f, 0.811089f, 0.811138f, 0.811188f, 0.811237f, 0.811286f, 0.811335f, 0.811384f, 0.811434f, 0.811483f, 0.811532f,
+0.811581f, 0.81163f, 0.811679f, 0.811728f, 0.811777f, 0.811826f, 0.811876f, 0.811925f, 0.811974f, 0.812023f, 0.812072f, 0.812121f, 0.81217f, 0.812219f, 0.812268f, 0.812317f, 0.812366f, 0.812415f, 0.812464f, 0.812513f,
+0.812562f, 0.81261f, 0.812659f, 0.812708f, 0.812757f, 0.812806f, 0.812855f, 0.812904f, 0.812953f, 0.813001f, 0.81305f, 0.813099f, 0.813148f, 0.813197f, 0.813245f, 0.813294f, 0.813343f, 0.813392f, 0.813441f, 0.813489f,
+0.813538f, 0.813587f, 0.813635f, 0.813684f, 0.813733f, 0.813781f, 0.81383f, 0.813879f, 0.813927f, 0.813976f, 0.814025f, 0.814073f, 0.814122f, 0.814171f, 0.814219f, 0.814268f, 0.814316f, 0.814365f, 0.814413f, 0.814462f,
+0.81451f, 0.814559f, 0.814607f, 0.814656f, 0.814704f, 0.814753f, 0.814801f, 0.81485f, 0.814898f, 0.814947f, 0.814995f, 0.815043f, 0.815092f, 0.81514f, 0.815189f, 0.815237f, 0.815285f, 0.815334f, 0.815382f, 0.81543f,
+0.815479f, 0.815527f, 0.815575f, 0.815624f, 0.815672f, 0.81572f, 0.815768f, 0.815817f, 0.815865f, 0.815913f, 0.815961f, 0.81601f, 0.816058f, 0.816106f, 0.816154f, 0.816202f, 0.81625f, 0.816299f, 0.816347f, 0.816395f,
+0.816443f, 0.816491f, 0.816539f, 0.816587f, 0.816635f, 0.816683f, 0.816731f, 0.816779f, 0.816827f, 0.816875f, 0.816924f, 0.816972f, 0.817019f, 0.817067f, 0.817115f, 0.817163f, 0.817211f, 0.817259f, 0.817307f, 0.817355f,
+0.817403f, 0.817451f, 0.817499f, 0.817547f, 0.817595f, 0.817642f, 0.81769f, 0.817738f, 0.817786f, 0.817834f, 0.817882f, 0.817929f, 0.817977f, 0.818025f, 0.818073f, 0.81812f, 0.818168f, 0.818216f, 0.818264f, 0.818311f,
+0.818359f, 0.818407f, 0.818454f, 0.818502f, 0.81855f, 0.818597f, 0.818645f, 0.818693f, 0.81874f, 0.818788f, 0.818836f, 0.818883f, 0.818931f, 0.818978f, 0.819026f, 0.819073f, 0.819121f, 0.819169f, 0.819216f, 0.819264f,
+0.819311f, 0.819359f, 0.819406f, 0.819453f, 0.819501f, 0.819548f, 0.819596f, 0.819643f, 0.819691f, 0.819738f, 0.819785f, 0.819833f, 0.81988f, 0.819928f, 0.819975f, 0.820022f, 0.82007f, 0.820117f, 0.820164f, 0.820212f,
+0.820259f, 0.820306f, 0.820353f, 0.820401f, 0.820448f, 0.820495f, 0.820542f, 0.82059f, 0.820637f, 0.820684f, 0.820731f, 0.820778f, 0.820826f, 0.820873f, 0.82092f, 0.820967f, 0.821014f, 0.821061f, 0.821108f, 0.821155f,
+0.821203f, 0.82125f, 0.821297f, 0.821344f, 0.821391f, 0.821438f, 0.821485f, 0.821532f, 0.821579f, 0.821626f, 0.821673f, 0.82172f, 0.821767f, 0.821814f, 0.821861f, 0.821908f, 0.821955f, 0.822002f, 0.822048f, 0.822095f,
+0.822142f, 0.822189f, 0.822236f, 0.822283f, 0.82233f, 0.822376f, 0.822423f, 0.82247f, 0.822517f, 0.822564f, 0.82261f, 0.822657f, 0.822704f, 0.822751f, 0.822797f, 0.822844f, 0.822891f, 0.822938f, 0.822984f, 0.823031f,
+0.823078f, 0.823124f, 0.823171f, 0.823218f, 0.823264f, 0.823311f, 0.823358f, 0.823404f, 0.823451f, 0.823497f, 0.823544f, 0.82359f, 0.823637f, 0.823684f, 0.82373f, 0.823777f, 0.823823f, 0.82387f, 0.823916f, 0.823963f,
+0.824009f, 0.824055f, 0.824102f, 0.824148f, 0.824195f, 0.824241f, 0.824288f, 0.824334f, 0.82438f, 0.824427f, 0.824473f, 0.824519f, 0.824566f, 0.824612f, 0.824659f, 0.824705f, 0.824751f, 0.824797f, 0.824844f, 0.82489f,
+0.824936f, 0.824982f, 0.825029f, 0.825075f, 0.825121f, 0.825167f, 0.825214f, 0.82526f, 0.825306f, 0.825352f, 0.825398f, 0.825444f, 0.825491f, 0.825537f, 0.825583f, 0.825629f, 0.825675f, 0.825721f, 0.825767f, 0.825813f,
+0.825859f, 0.825905f, 0.825951f, 0.825997f, 0.826043f, 0.826089f, 0.826135f, 0.826181f, 0.826227f, 0.826273f, 0.826319f, 0.826365f, 0.826411f, 0.826457f, 0.826503f, 0.826549f, 0.826595f, 0.826641f, 0.826687f, 0.826732f,
+0.826778f, 0.826824f, 0.82687f, 0.826916f, 0.826962f, 0.827007f, 0.827053f, 0.827099f, 0.827145f, 0.82719f, 0.827236f, 0.827282f, 0.827328f, 0.827373f, 0.827419f, 0.827465f, 0.82751f, 0.827556f, 0.827602f, 0.827647f,
+0.827693f, 0.827739f, 0.827784f, 0.82783f, 0.827876f, 0.827921f, 0.827967f, 0.828012f, 0.828058f, 0.828103f, 0.828149f, 0.828194f, 0.82824f, 0.828285f, 0.828331f, 0.828376f, 0.828422f, 0.828467f, 0.828513f, 0.828558f,
+0.828604f, 0.828649f, 0.828695f, 0.82874f, 0.828785f, 0.828831f, 0.828876f, 0.828921f, 0.828967f, 0.829012f, 0.829057f, 0.829103f, 0.829148f, 0.829193f, 0.829239f, 0.829284f, 0.829329f, 0.829374f, 0.82942f, 0.829465f,
+0.82951f, 0.829555f, 0.829601f, 0.829646f, 0.829691f, 0.829736f, 0.829781f, 0.829826f, 0.829872f, 0.829917f, 0.829962f, 0.830007f, 0.830052f, 0.830097f, 0.830142f, 0.830187f, 0.830232f, 0.830277f, 0.830322f, 0.830368f,
+0.830413f, 0.830458f, 0.830503f, 0.830548f, 0.830592f, 0.830637f, 0.830682f, 0.830727f, 0.830772f, 0.830817f, 0.830862f, 0.830907f, 0.830952f, 0.830997f, 0.831042f, 0.831087f, 0.831131f, 0.831176f, 0.831221f, 0.831266f,
+0.831311f, 0.831355f, 0.8314f, 0.831445f, 0.83149f, 0.831535f, 0.831579f, 0.831624f, 0.831669f, 0.831714f, 0.831758f, 0.831803f, 0.831848f, 0.831892f, 0.831937f, 0.831982f, 0.832026f, 0.832071f, 0.832115f, 0.83216f,
+0.832205f, 0.832249f, 0.832294f, 0.832338f, 0.832383f, 0.832428f, 0.832472f, 0.832517f, 0.832561f, 0.832606f, 0.83265f, 0.832695f, 0.832739f, 0.832784f, 0.832828f, 0.832872f, 0.832917f, 0.832961f, 0.833006f, 0.83305f,
+0.833095f, 0.833139f, 0.833183f, 0.833228f, 0.833272f, 0.833316f, 0.833361f, 0.833405f, 0.833449f, 0.833494f, 0.833538f, 0.833582f, 0.833626f, 0.833671f, 0.833715f, 0.833759f, 0.833803f, 0.833848f, 0.833892f, 0.833936f,
+0.83398f, 0.834024f, 0.834069f, 0.834113f, 0.834157f, 0.834201f, 0.834245f, 0.834289f, 0.834333f, 0.834377f, 0.834421f, 0.834465f, 0.83451f, 0.834554f, 0.834598f, 0.834642f, 0.834686f, 0.83473f, 0.834774f, 0.834818f,
+0.834862f, 0.834906f, 0.83495f, 0.834993f, 0.835037f, 0.835081f, 0.835125f, 0.835169f, 0.835213f, 0.835257f, 0.835301f, 0.835345f, 0.835389f, 0.835432f, 0.835476f, 0.83552f, 0.835564f, 0.835608f, 0.835651f, 0.835695f,
+0.835739f, 0.835783f, 0.835826f, 0.83587f, 0.835914f, 0.835958f, 0.836001f, 0.836045f, 0.836089f, 0.836132f, 0.836176f, 0.83622f, 0.836263f, 0.836307f, 0.836351f, 0.836394f, 0.836438f, 0.836481f, 0.836525f, 0.836568f,
+0.836612f, 0.836656f, 0.836699f, 0.836743f, 0.836786f, 0.83683f, 0.836873f, 0.836917f, 0.83696f, 0.837004f, 0.837047f, 0.83709f, 0.837134f, 0.837177f, 0.837221f, 0.837264f, 0.837307f, 0.837351f, 0.837394f, 0.837438f,
+0.837481f, 0.837524f, 0.837568f, 0.837611f, 0.837654f, 0.837697f, 0.837741f, 0.837784f, 0.837827f, 0.837871f, 0.837914f, 0.837957f, 0.838f, 0.838043f, 0.838087f, 0.83813f, 0.838173f, 0.838216f, 0.838259f, 0.838302f,
+0.838346f, 0.838389f, 0.838432f, 0.838475f, 0.838518f, 0.838561f, 0.838604f, 0.838647f, 0.83869f, 0.838733f, 0.838776f, 0.838819f, 0.838862f, 0.838905f, 0.838948f, 0.838991f, 0.839034f, 0.839077f, 0.83912f, 0.839163f,
+0.839206f, 0.839249f, 0.839292f, 0.839335f, 0.839378f, 0.839421f, 0.839463f, 0.839506f, 0.839549f, 0.839592f, 0.839635f, 0.839678f, 0.83972f, 0.839763f, 0.839806f, 0.839849f, 0.839891f, 0.839934f, 0.839977f, 0.84002f,
+0.840062f, 0.840105f, 0.840148f, 0.84019f, 0.840233f, 0.840276f, 0.840318f, 0.840361f, 0.840404f, 0.840446f, 0.840489f, 0.840531f, 0.840574f, 0.840617f, 0.840659f, 0.840702f, 0.840744f, 0.840787f, 0.840829f, 0.840872f,
+0.840914f, 0.840957f, 0.840999f, 0.841042f, 0.841084f, 0.841127f, 0.841169f, 0.841212f, 0.841254f, 0.841296f, 0.841339f, 0.841381f, 0.841424f, 0.841466f, 0.841508f, 0.841551f, 0.841593f, 0.841635f, 0.841678f, 0.84172f,
+0.841762f, 0.841805f, 0.841847f, 0.841889f, 0.841931f, 0.841974f, 0.842016f, 0.842058f, 0.8421f, 0.842142f, 0.842185f, 0.842227f, 0.842269f, 0.842311f, 0.842353f, 0.842395f, 0.842437f, 0.84248f, 0.842522f, 0.842564f,
+0.842606f, 0.842648f, 0.84269f, 0.842732f, 0.842774f, 0.842816f, 0.842858f, 0.8429f, 0.842942f, 0.842984f, 0.843026f, 0.843068f, 0.84311f, 0.843152f, 0.843194f, 0.843236f, 0.843278f, 0.84332f, 0.843362f, 0.843403f,
+0.843445f, 0.843487f, 0.843529f, 0.843571f, 0.843613f, 0.843654f, 0.843696f, 0.843738f, 0.84378f, 0.843822f, 0.843863f, 0.843905f, 0.843947f, 0.843989f, 0.84403f, 0.844072f, 0.844114f, 0.844155f, 0.844197f, 0.844239f,
+0.84428f, 0.844322f, 0.844364f, 0.844405f, 0.844447f, 0.844489f, 0.84453f, 0.844572f, 0.844613f, 0.844655f, 0.844696f, 0.844738f, 0.844779f, 0.844821f, 0.844863f, 0.844904f, 0.844945f, 0.844987f, 0.845028f, 0.84507f,
+0.845111f, 0.845153f, 0.845194f, 0.845236f, 0.845277f, 0.845318f, 0.84536f, 0.845401f, 0.845443f, 0.845484f, 0.845525f, 0.845567f, 0.845608f, 0.845649f, 0.84569f, 0.845732f, 0.845773f, 0.845814f, 0.845856f, 0.845897f,
+0.845938f, 0.845979f, 0.84602f, 0.846062f, 0.846103f, 0.846144f, 0.846185f, 0.846226f, 0.846268f, 0.846309f, 0.84635f, 0.846391f, 0.846432f, 0.846473f, 0.846514f, 0.846555f, 0.846596f, 0.846637f, 0.846678f, 0.846719f,
+0.84676f, 0.846801f, 0.846842f, 0.846883f, 0.846924f, 0.846965f, 0.847006f, 0.847047f, 0.847088f, 0.847129f, 0.84717f, 0.847211f, 0.847252f, 0.847293f, 0.847334f, 0.847375f, 0.847415f, 0.847456f, 0.847497f, 0.847538f,
+0.847579f, 0.847619f, 0.84766f, 0.847701f, 0.847742f, 0.847783f, 0.847823f, 0.847864f, 0.847905f, 0.847945f, 0.847986f, 0.848027f, 0.848068f, 0.848108f, 0.848149f, 0.84819f, 0.84823f, 0.848271f, 0.848311f, 0.848352f,
+0.848393f, 0.848433f, 0.848474f, 0.848514f, 0.848555f, 0.848595f, 0.848636f, 0.848676f, 0.848717f, 0.848757f, 0.848798f, 0.848838f, 0.848879f, 0.848919f, 0.84896f, 0.849f, 0.849041f, 0.849081f, 0.849122f, 0.849162f,
+0.849202f, 0.849243f, 0.849283f, 0.849323f, 0.849364f, 0.849404f, 0.849444f, 0.849485f, 0.849525f, 0.849565f, 0.849606f, 0.849646f, 0.849686f, 0.849726f, 0.849767f, 0.849807f, 0.849847f, 0.849887f, 0.849927f, 0.849968f,
+0.850008f, 0.850048f, 0.850088f, 0.850128f, 0.850168f, 0.850208f, 0.850249f, 0.850289f, 0.850329f, 0.850369f, 0.850409f, 0.850449f, 0.850489f, 0.850529f, 0.850569f, 0.850609f, 0.850649f, 0.850689f, 0.850729f, 0.850769f,
+0.850809f, 0.850849f, 0.850889f, 0.850929f, 0.850969f, 0.851008f, 0.851048f, 0.851088f, 0.851128f, 0.851168f, 0.851208f, 0.851248f, 0.851288f, 0.851327f, 0.851367f, 0.851407f, 0.851447f, 0.851487f, 0.851526f, 0.851566f,
+0.851606f, 0.851645f, 0.851685f, 0.851725f, 0.851765f, 0.851804f, 0.851844f, 0.851884f, 0.851923f, 0.851963f, 0.852003f, 0.852042f, 0.852082f, 0.852121f, 0.852161f, 0.852201f, 0.85224f, 0.85228f, 0.852319f, 0.852359f,
+0.852398f, 0.852438f, 0.852477f, 0.852517f, 0.852556f, 0.852596f, 0.852635f, 0.852675f, 0.852714f, 0.852754f, 0.852793f, 0.852832f, 0.852872f, 0.852911f, 0.852951f, 0.85299f, 0.853029f, 0.853069f, 0.853108f, 0.853147f,
+0.853187f, 0.853226f, 0.853265f, 0.853305f, 0.853344f, 0.853383f, 0.853422f, 0.853462f, 0.853501f, 0.85354f, 0.853579f, 0.853618f, 0.853658f, 0.853697f, 0.853736f, 0.853775f, 0.853814f, 0.853853f, 0.853893f, 0.853932f,
+0.853971f, 0.85401f, 0.854049f, 0.854088f, 0.854127f, 0.854166f, 0.854205f, 0.854244f, 0.854283f, 0.854322f, 0.854361f, 0.8544f, 0.854439f, 0.854478f, 0.854517f, 0.854556f, 0.854595f, 0.854634f, 0.854673f, 0.854712f,
+0.854751f, 0.854789f, 0.854828f, 0.854867f, 0.854906f, 0.854945f, 0.854984f, 0.855022f, 0.855061f, 0.8551f, 0.855139f, 0.855178f, 0.855216f, 0.855255f, 0.855294f, 0.855333f, 0.855371f, 0.85541f, 0.855449f, 0.855487f,
+0.855526f, 0.855565f, 0.855603f, 0.855642f, 0.855681f, 0.855719f, 0.855758f, 0.855796f, 0.855835f, 0.855874f, 0.855912f, 0.855951f, 0.855989f, 0.856028f, 0.856066f, 0.856105f, 0.856143f, 0.856182f, 0.85622f, 0.856259f,
+0.856297f, 0.856336f, 0.856374f, 0.856413f, 0.856451f, 0.856489f, 0.856528f, 0.856566f, 0.856605f, 0.856643f, 0.856681f, 0.85672f, 0.856758f, 0.856796f, 0.856835f, 0.856873f, 0.856911f, 0.856949f, 0.856988f, 0.857026f,
+0.857064f, 0.857102f, 0.857141f, 0.857179f, 0.857217f, 0.857255f, 0.857293f, 0.857332f, 0.85737f, 0.857408f, 0.857446f, 0.857484f, 0.857522f, 0.85756f, 0.857598f, 0.857636f, 0.857675f, 0.857713f, 0.857751f, 0.857789f,
+0.857827f, 0.857865f, 0.857903f, 0.857941f, 0.857979f, 0.858017f, 0.858055f, 0.858093f, 0.858131f, 0.858168f, 0.858206f, 0.858244f, 0.858282f, 0.85832f, 0.858358f, 0.858396f, 0.858434f, 0.858472f, 0.858509f, 0.858547f,
+0.858585f, 0.858623f, 0.858661f, 0.858698f, 0.858736f, 0.858774f, 0.858812f, 0.858849f, 0.858887f, 0.858925f, 0.858963f, 0.859f, 0.859038f, 0.859076f, 0.859113f, 0.859151f, 0.859189f, 0.859226f, 0.859264f, 0.859301f,
+0.859339f, 0.859377f, 0.859414f, 0.859452f, 0.859489f, 0.859527f, 0.859564f, 0.859602f, 0.859639f, 0.859677f, 0.859714f, 0.859752f, 0.859789f, 0.859827f, 0.859864f, 0.859902f, 0.859939f, 0.859977f, 0.860014f, 0.860051f,
+0.860089f, 0.860126f, 0.860163f, 0.860201f, 0.860238f, 0.860275f, 0.860313f, 0.86035f, 0.860387f, 0.860425f, 0.860462f, 0.860499f, 0.860536f, 0.860574f, 0.860611f, 0.860648f, 0.860685f, 0.860723f, 0.86076f, 0.860797f,
+0.860834f, 0.860871f, 0.860908f, 0.860945f, 0.860983f, 0.86102f, 0.861057f, 0.861094f, 0.861131f, 0.861168f, 0.861205f, 0.861242f, 0.861279f, 0.861316f, 0.861353f, 0.86139f, 0.861427f, 0.861464f, 0.861501f, 0.861538f,
+0.861575f, 0.861612f, 0.861649f, 0.861686f, 0.861723f, 0.86176f, 0.861797f, 0.861833f, 0.86187f, 0.861907f, 0.861944f, 0.861981f, 0.862018f, 0.862054f, 0.862091f, 0.862128f, 0.862165f, 0.862202f, 0.862238f, 0.862275f,
+0.862312f, 0.862349f, 0.862385f, 0.862422f, 0.862459f, 0.862495f, 0.862532f, 0.862569f, 0.862605f, 0.862642f, 0.862679f, 0.862715f, 0.862752f, 0.862788f, 0.862825f, 0.862861f, 0.862898f, 0.862935f, 0.862971f, 0.863008f,
+0.863044f, 0.863081f, 0.863117f, 0.863154f, 0.86319f, 0.863227f, 0.863263f, 0.863299f, 0.863336f, 0.863372f, 0.863409f, 0.863445f, 0.863482f, 0.863518f, 0.863554f, 0.863591f, 0.863627f, 0.863663f, 0.8637f, 0.863736f,
+0.863772f, 0.863809f, 0.863845f, 0.863881f, 0.863917f, 0.863954f, 0.86399f, 0.864026f, 0.864062f, 0.864098f, 0.864135f, 0.864171f, 0.864207f, 0.864243f, 0.864279f, 0.864315f, 0.864352f, 0.864388f, 0.864424f, 0.86446f,
+0.864496f, 0.864532f, 0.864568f, 0.864604f, 0.86464f, 0.864676f, 0.864712f, 0.864748f, 0.864784f, 0.86482f, 0.864856f, 0.864892f, 0.864928f, 0.864964f, 0.865f, 0.865036f, 0.865072f, 0.865108f, 0.865144f, 0.865179f,
+0.865215f, 0.865251f, 0.865287f, 0.865323f, 0.865359f, 0.865394f, 0.86543f, 0.865466f, 0.865502f, 0.865538f, 0.865573f, 0.865609f, 0.865645f, 0.865681f, 0.865716f, 0.865752f, 0.865788f, 0.865823f, 0.865859f, 0.865895f,
+0.86593f, 0.865966f, 0.866002f, 0.866037f, 0.866073f, 0.866108f, 0.866144f, 0.86618f, 0.866215f, 0.866251f, 0.866286f, 0.866322f, 0.866357f, 0.866393f, 0.866428f, 0.866464f, 0.866499f, 0.866535f, 0.86657f, 0.866606f,
+0.866641f, 0.866676f, 0.866712f, 0.866747f, 0.866783f, 0.866818f, 0.866853f, 0.866889f, 0.866924f, 0.866959f, 0.866995f, 0.86703f, 0.867065f, 0.867101f, 0.867136f, 0.867171f, 0.867206f, 0.867242f, 0.867277f, 0.867312f,
+0.867347f, 0.867383f, 0.867418f, 0.867453f, 0.867488f, 0.867523f, 0.867558f, 0.867594f, 0.867629f, 0.867664f, 0.867699f, 0.867734f, 0.867769f, 0.867804f, 0.867839f, 0.867874f, 0.867909f, 0.867944f, 0.867979f, 0.868014f,
+0.868049f, 0.868084f, 0.868119f, 0.868154f, 0.868189f, 0.868224f, 0.868259f, 0.868294f, 0.868329f, 0.868364f, 0.868399f, 0.868434f, 0.868468f, 0.868503f, 0.868538f, 0.868573f, 0.868608f, 0.868643f, 0.868677f, 0.868712f,
+0.868747f, 0.868782f, 0.868817f, 0.868851f, 0.868886f, 0.868921f, 0.868955f, 0.86899f, 0.869025f, 0.86906f, 0.869094f, 0.869129f, 0.869164f, 0.869198f, 0.869233f, 0.869267f, 0.869302f, 0.869337f, 0.869371f, 0.869406f,
+0.86944f, 0.869475f, 0.869509f, 0.869544f, 0.869578f, 0.869613f, 0.869647f, 0.869682f, 0.869716f, 0.869751f, 0.869785f, 0.86982f, 0.869854f, 0.869889f, 0.869923f, 0.869957f, 0.869992f, 0.870026f, 0.870061f, 0.870095f,
+0.870129f, 0.870164f, 0.870198f, 0.870232f, 0.870266f, 0.870301f, 0.870335f, 0.870369f, 0.870404f, 0.870438f, 0.870472f, 0.870506f, 0.87054f, 0.870575f, 0.870609f, 0.870643f, 0.870677f, 0.870711f, 0.870745f, 0.87078f,
+0.870814f, 0.870848f, 0.870882f, 0.870916f, 0.87095f, 0.870984f, 0.871018f, 0.871052f, 0.871086f, 0.87112f, 0.871154f, 0.871188f, 0.871222f, 0.871256f, 0.87129f, 0.871324f, 0.871358f, 0.871392f, 0.871426f, 0.87146f,
+0.871494f, 0.871528f, 0.871562f, 0.871596f, 0.871629f, 0.871663f, 0.871697f, 0.871731f, 0.871765f, 0.871799f, 0.871832f, 0.871866f, 0.8719f, 0.871934f, 0.871967f, 0.872001f, 0.872035f, 0.872069f, 0.872102f, 0.872136f,
+0.87217f, 0.872203f, 0.872237f, 0.872271f, 0.872304f, 0.872338f, 0.872372f, 0.872405f, 0.872439f, 0.872472f, 0.872506f, 0.87254f, 0.872573f, 0.872607f, 0.87264f, 0.872674f, 0.872707f, 0.872741f, 0.872774f, 0.872808f,
+0.872841f, 0.872875f, 0.872908f, 0.872941f, 0.872975f, 0.873008f, 0.873042f, 0.873075f, 0.873108f, 0.873142f, 0.873175f, 0.873209f, 0.873242f, 0.873275f, 0.873309f, 0.873342f, 0.873375f, 0.873408f, 0.873442f, 0.873475f,
+0.873508f, 0.873541f, 0.873575f, 0.873608f, 0.873641f, 0.873674f, 0.873707f, 0.873741f, 0.873774f, 0.873807f, 0.87384f, 0.873873f, 0.873906f, 0.873939f, 0.873973f, 0.874006f, 0.874039f, 0.874072f, 0.874105f, 0.874138f,
+0.874171f, 0.874204f, 0.874237f, 0.87427f, 0.874303f, 0.874336f, 0.874369f, 0.874402f, 0.874435f, 0.874468f, 0.874501f, 0.874533f, 0.874566f, 0.874599f, 0.874632f, 0.874665f, 0.874698f, 0.874731f, 0.874763f, 0.874796f,
+0.874829f, 0.874862f, 0.874895f, 0.874927f, 0.87496f, 0.874993f, 0.875026f, 0.875058f, 0.875091f, 0.875124f, 0.875157f, 0.875189f, 0.875222f, 0.875255f, 0.875287f, 0.87532f, 0.875353f, 0.875385f, 0.875418f, 0.87545f,
+0.875483f, 0.875516f, 0.875548f, 0.875581f, 0.875613f, 0.875646f, 0.875678f, 0.875711f, 0.875743f, 0.875776f, 0.875808f, 0.875841f, 0.875873f, 0.875906f, 0.875938f, 0.875971f, 0.876003f, 0.876035f, 0.876068f, 0.8761f,
+0.876132f, 0.876165f, 0.876197f, 0.87623f, 0.876262f, 0.876294f, 0.876326f, 0.876359f, 0.876391f, 0.876423f, 0.876456f, 0.876488f, 0.87652f, 0.876552f, 0.876585f, 0.876617f, 0.876649f, 0.876681f, 0.876713f, 0.876745f,
+0.876778f, 0.87681f, 0.876842f, 0.876874f, 0.876906f, 0.876938f, 0.87697f, 0.877002f, 0.877034f, 0.877066f, 0.877098f, 0.877131f, 0.877163f, 0.877195f, 0.877227f, 0.877259f, 0.87729f, 0.877322f, 0.877354f, 0.877386f,
+0.877418f, 0.87745f, 0.877482f, 0.877514f, 0.877546f, 0.877578f, 0.87761f, 0.877641f, 0.877673f, 0.877705f, 0.877737f, 0.877769f, 0.877801f, 0.877832f, 0.877864f, 0.877896f, 0.877928f, 0.877959f, 0.877991f, 0.878023f,
+0.878055f, 0.878086f, 0.878118f, 0.87815f, 0.878181f, 0.878213f, 0.878245f, 0.878276f, 0.878308f, 0.878339f, 0.878371f, 0.878403f, 0.878434f, 0.878466f, 0.878497f, 0.878529f, 0.87856f, 0.878592f, 0.878623f, 0.878655f,
+0.878686f, 0.878718f, 0.878749f, 0.878781f, 0.878812f, 0.878844f, 0.878875f, 0.878907f, 0.878938f, 0.878969f, 0.879001f, 0.879032f, 0.879063f, 0.879095f, 0.879126f, 0.879157f, 0.879189f, 0.87922f, 0.879251f, 0.879283f,
+0.879314f, 0.879345f, 0.879376f, 0.879408f, 0.879439f, 0.87947f, 0.879501f, 0.879533f, 0.879564f, 0.879595f, 0.879626f, 0.879657f, 0.879688f, 0.879719f, 0.879751f, 0.879782f, 0.879813f, 0.879844f, 0.879875f, 0.879906f,
+0.879937f, 0.879968f, 0.879999f, 0.88003f, 0.880061f, 0.880092f, 0.880123f, 0.880154f, 0.880185f, 0.880216f, 0.880247f, 0.880278f, 0.880309f, 0.88034f, 0.880371f, 0.880401f, 0.880432f, 0.880463f, 0.880494f, 0.880525f,
+0.880556f, 0.880586f, 0.880617f, 0.880648f, 0.880679f, 0.88071f, 0.88074f, 0.880771f, 0.880802f, 0.880833f, 0.880863f, 0.880894f, 0.880925f, 0.880955f, 0.880986f, 0.881017f, 0.881047f, 0.881078f, 0.881109f, 0.881139f,
+0.88117f, 0.8812f, 0.881231f, 0.881262f, 0.881292f, 0.881323f, 0.881353f, 0.881384f, 0.881414f, 0.881445f, 0.881475f, 0.881506f, 0.881536f, 0.881567f, 0.881597f, 0.881628f, 0.881658f, 0.881688f, 0.881719f, 0.881749f,
+0.88178f, 0.88181f, 0.88184f, 0.881871f, 0.881901f, 0.881931f, 0.881962f, 0.881992f, 0.882022f, 0.882053f, 0.882083f, 0.882113f, 0.882143f, 0.882174f, 0.882204f, 0.882234f, 0.882264f, 0.882295f, 0.882325f, 0.882355f,
+0.882385f, 0.882415f, 0.882445f, 0.882475f, 0.882506f, 0.882536f, 0.882566f, 0.882596f, 0.882626f, 0.882656f, 0.882686f, 0.882716f, 0.882746f, 0.882776f, 0.882806f, 0.882836f, 0.882866f, 0.882896f, 0.882926f, 0.882956f,
+0.882986f, 0.883016f, 0.883046f, 0.883076f, 0.883106f, 0.883136f, 0.883165f, 0.883195f, 0.883225f, 0.883255f, 0.883285f, 0.883315f, 0.883344f, 0.883374f, 0.883404f, 0.883434f, 0.883464f, 0.883493f, 0.883523f, 0.883553f,
+0.883583f, 0.883612f, 0.883642f, 0.883672f, 0.883701f, 0.883731f, 0.883761f, 0.88379f, 0.88382f, 0.883849f, 0.883879f, 0.883909f, 0.883938f, 0.883968f, 0.883997f, 0.884027f, 0.884057f, 0.884086f, 0.884116f, 0.884145f,
+0.884175f, 0.884204f, 0.884234f, 0.884263f, 0.884292f, 0.884322f, 0.884351f, 0.884381f, 0.88441f, 0.88444f, 0.884469f, 0.884498f, 0.884528f, 0.884557f, 0.884586f, 0.884616f, 0.884645f, 0.884674f, 0.884704f, 0.884733f,
+0.884762f, 0.884792f, 0.884821f, 0.88485f, 0.884879f, 0.884908f, 0.884938f, 0.884967f, 0.884996f, 0.885025f, 0.885054f, 0.885084f, 0.885113f, 0.885142f, 0.885171f, 0.8852f, 0.885229f, 0.885258f, 0.885287f, 0.885316f,
+0.885345f, 0.885374f, 0.885404f, 0.885433f, 0.885462f, 0.885491f, 0.88552f, 0.885549f, 0.885577f, 0.885606f, 0.885635f, 0.885664f, 0.885693f, 0.885722f, 0.885751f, 0.88578f, 0.885809f, 0.885838f, 0.885867f, 0.885895f,
+0.885924f, 0.885953f, 0.885982f, 0.886011f, 0.886039f, 0.886068f, 0.886097f, 0.886126f, 0.886154f, 0.886183f, 0.886212f, 0.886241f, 0.886269f, 0.886298f, 0.886327f, 0.886355f, 0.886384f, 0.886413f, 0.886441f, 0.88647f,
+0.886499f, 0.886527f, 0.886556f, 0.886584f, 0.886613f, 0.886641f, 0.88667f, 0.886699f, 0.886727f, 0.886756f, 0.886784f, 0.886813f, 0.886841f, 0.886869f, 0.886898f, 0.886926f, 0.886955f, 0.886983f, 0.887012f, 0.88704f,
+0.887068f, 0.887097f, 0.887125f, 0.887154f, 0.887182f, 0.88721f, 0.887239f, 0.887267f, 0.887295f, 0.887323f, 0.887352f, 0.88738f, 0.887408f, 0.887436f, 0.887465f, 0.887493f, 0.887521f, 0.887549f, 0.887577f, 0.887606f,
+0.887634f, 0.887662f, 0.88769f, 0.887718f, 0.887746f, 0.887774f, 0.887803f, 0.887831f, 0.887859f, 0.887887f, 0.887915f, 0.887943f, 0.887971f, 0.887999f, 0.888027f, 0.888055f, 0.888083f, 0.888111f, 0.888139f, 0.888167f,
+0.888195f, 0.888223f, 0.888251f, 0.888279f, 0.888306f, 0.888334f, 0.888362f, 0.88839f, 0.888418f, 0.888446f, 0.888474f, 0.888501f, 0.888529f, 0.888557f, 0.888585f, 0.888613f, 0.88864f, 0.888668f, 0.888696f, 0.888724f,
+0.888751f, 0.888779f, 0.888807f, 0.888834f, 0.888862f, 0.88889f, 0.888917f, 0.888945f, 0.888973f, 0.889f, 0.889028f, 0.889055f, 0.889083f, 0.889111f, 0.889138f, 0.889166f, 0.889193f, 0.889221f, 0.889248f, 0.889276f,
+0.889303f, 0.889331f, 0.889358f, 0.889386f, 0.889413f, 0.889441f, 0.889468f, 0.889496f, 0.889523f, 0.88955f, 0.889578f, 0.889605f, 0.889632f, 0.88966f, 0.889687f, 0.889714f, 0.889742f, 0.889769f, 0.889796f, 0.889824f,
+0.889851f, 0.889878f, 0.889905f, 0.889933f, 0.88996f, 0.889987f, 0.890014f, 0.890042f, 0.890069f, 0.890096f, 0.890123f, 0.89015f, 0.890177f, 0.890204f, 0.890232f, 0.890259f, 0.890286f, 0.890313f, 0.89034f, 0.890367f,
+0.890394f, 0.890421f, 0.890448f, 0.890475f, 0.890502f, 0.890529f, 0.890556f, 0.890583f, 0.89061f, 0.890637f, 0.890664f, 0.890691f, 0.890718f, 0.890745f, 0.890772f, 0.890798f, 0.890825f, 0.890852f, 0.890879f, 0.890906f,
+0.890933f, 0.89096f, 0.890986f, 0.891013f, 0.89104f, 0.891067f, 0.891093f, 0.89112f, 0.891147f, 0.891174f, 0.8912f, 0.891227f, 0.891254f, 0.89128f, 0.891307f, 0.891334f, 0.89136f, 0.891387f, 0.891414f, 0.89144f,
+0.891467f, 0.891494f, 0.89152f, 0.891547f, 0.891573f, 0.8916f, 0.891626f, 0.891653f, 0.891679f, 0.891706f, 0.891732f, 0.891759f, 0.891785f, 0.891812f, 0.891838f, 0.891865f, 0.891891f, 0.891917f, 0.891944f, 0.89197f,
+0.891997f, 0.892023f, 0.892049f, 0.892076f, 0.892102f, 0.892128f, 0.892155f, 0.892181f, 0.892207f, 0.892234f, 0.89226f, 0.892286f, 0.892312f, 0.892339f, 0.892365f, 0.892391f, 0.892417f, 0.892443f, 0.89247f, 0.892496f,
+0.892522f, 0.892548f, 0.892574f, 0.8926f, 0.892626f, 0.892652f, 0.892679f, 0.892705f, 0.892731f, 0.892757f, 0.892783f, 0.892809f, 0.892835f, 0.892861f, 0.892887f, 0.892913f, 0.892939f, 0.892965f, 0.892991f, 0.893017f,
+0.893043f, 0.893069f, 0.893094f, 0.89312f, 0.893146f, 0.893172f, 0.893198f, 0.893224f, 0.89325f, 0.893276f, 0.893301f, 0.893327f, 0.893353f, 0.893379f, 0.893405f, 0.89343f, 0.893456f, 0.893482f, 0.893508f, 0.893533f,
+0.893559f, 0.893585f, 0.89361f, 0.893636f, 0.893662f, 0.893687f, 0.893713f, 0.893739f, 0.893764f, 0.89379f, 0.893815f, 0.893841f, 0.893867f, 0.893892f, 0.893918f, 0.893943f, 0.893969f, 0.893994f, 0.89402f, 0.894045f,
+0.894071f, 0.894096f, 0.894122f, 0.894147f, 0.894173f, 0.894198f, 0.894223f, 0.894249f, 0.894274f, 0.8943f, 0.894325f, 0.89435f, 0.894376f, 0.894401f, 0.894426f, 0.894452f, 0.894477f, 0.894502f, 0.894528f, 0.894553f,
+0.894578f, 0.894603f, 0.894629f, 0.894654f, 0.894679f, 0.894704f, 0.894729f, 0.894755f, 0.89478f, 0.894805f, 0.89483f, 0.894855f, 0.89488f, 0.894905f, 0.89493f, 0.894956f, 0.894981f, 0.895006f, 0.895031f, 0.895056f,
+0.895081f, 0.895106f, 0.895131f, 0.895156f, 0.895181f, 0.895206f, 0.895231f, 0.895256f, 0.895281f, 0.895306f, 0.895331f, 0.895356f, 0.89538f, 0.895405f, 0.89543f, 0.895455f, 0.89548f, 0.895505f, 0.89553f, 0.895554f,
+0.895579f, 0.895604f, 0.895629f, 0.895654f, 0.895678f, 0.895703f, 0.895728f, 0.895753f, 0.895777f, 0.895802f, 0.895827f, 0.895851f, 0.895876f, 0.895901f, 0.895925f, 0.89595f, 0.895975f, 0.895999f, 0.896024f, 0.896048f,
+0.896073f, 0.896098f, 0.896122f, 0.896147f, 0.896171f, 0.896196f, 0.89622f, 0.896245f, 0.896269f, 0.896294f, 0.896318f, 0.896343f, 0.896367f, 0.896392f, 0.896416f, 0.89644f, 0.896465f, 0.896489f, 0.896514f, 0.896538f,
+0.896562f, 0.896587f, 0.896611f, 0.896635f, 0.89666f, 0.896684f, 0.896708f, 0.896733f, 0.896757f, 0.896781f, 0.896805f, 0.89683f, 0.896854f, 0.896878f, 0.896902f, 0.896926f, 0.896951f, 0.896975f, 0.896999f, 0.897023f,
+0.897047f, 0.897071f, 0.897095f, 0.89712f, 0.897144f, 0.897168f, 0.897192f, 0.897216f, 0.89724f, 0.897264f, 0.897288f, 0.897312f, 0.897336f, 0.89736f, 0.897384f, 0.897408f, 0.897432f, 0.897456f, 0.89748f, 0.897504f,
+0.897528f, 0.897552f, 0.897575f, 0.897599f, 0.897623f, 0.897647f, 0.897671f, 0.897695f, 0.897718f, 0.897742f, 0.897766f, 0.89779f, 0.897814f, 0.897837f, 0.897861f, 0.897885f, 0.897909f, 0.897932f, 0.897956f, 0.89798f,
+0.898003f, 0.898027f, 0.898051f, 0.898074f, 0.898098f, 0.898122f, 0.898145f, 0.898169f, 0.898193f, 0.898216f, 0.89824f, 0.898263f, 0.898287f, 0.89831f, 0.898334f, 0.898357f, 0.898381f, 0.898404f, 0.898428f, 0.898451f,
+0.898475f, 0.898498f, 0.898522f, 0.898545f, 0.898569f, 0.898592f, 0.898615f, 0.898639f, 0.898662f, 0.898685f, 0.898709f, 0.898732f, 0.898755f, 0.898779f, 0.898802f, 0.898825f, 0.898849f, 0.898872f, 0.898895f, 0.898918f,
+0.898942f, 0.898965f, 0.898988f, 0.899011f, 0.899034f, 0.899058f, 0.899081f, 0.899104f, 0.899127f, 0.89915f, 0.899173f, 0.899196f, 0.89922f, 0.899243f, 0.899266f, 0.899289f, 0.899312f, 0.899335f, 0.899358f, 0.899381f,
+0.899404f, 0.899427f, 0.89945f, 0.899473f, 0.899496f, 0.899519f, 0.899542f, 0.899565f, 0.899588f, 0.899611f, 0.899633f, 0.899656f, 0.899679f, 0.899702f, 0.899725f, 0.899748f, 0.899771f, 0.899793f, 0.899816f, 0.899839f,
+0.899862f, 0.899885f, 0.899907f, 0.89993f, 0.899953f, 0.899976f, 0.899998f, 0.900021f, 0.900044f, 0.900066f, 0.900089f, 0.900112f, 0.900134f, 0.900157f, 0.90018f, 0.900202f, 0.900225f, 0.900247f, 0.90027f, 0.900293f,
+0.900315f, 0.900338f, 0.90036f, 0.900383f, 0.900405f, 0.900428f, 0.90045f, 0.900473f, 0.900495f, 0.900518f, 0.90054f, 0.900563f, 0.900585f, 0.900607f, 0.90063f, 0.900652f, 0.900675f, 0.900697f, 0.900719f, 0.900742f,
+0.900764f, 0.900786f, 0.900809f, 0.900831f, 0.900853f, 0.900875f, 0.900898f, 0.90092f, 0.900942f, 0.900964f, 0.900987f, 0.901009f, 0.901031f, 0.901053f, 0.901075f, 0.901098f, 0.90112f, 0.901142f, 0.901164f, 0.901186f,
+0.901208f, 0.90123f, 0.901252f, 0.901274f, 0.901296f, 0.901319f, 0.901341f, 0.901363f, 0.901385f, 0.901407f, 0.901429f, 0.901451f, 0.901473f, 0.901495f, 0.901516f, 0.901538f, 0.90156f, 0.901582f, 0.901604f, 0.901626f,
+0.901648f, 0.90167f, 0.901692f, 0.901714f, 0.901735f, 0.901757f, 0.901779f, 0.901801f, 0.901823f, 0.901844f, 0.901866f, 0.901888f, 0.90191f, 0.901931f, 0.901953f, 0.901975f, 0.901996f, 0.902018f, 0.90204f, 0.902062f,
+0.902083f, 0.902105f, 0.902126f, 0.902148f, 0.90217f, 0.902191f, 0.902213f, 0.902234f, 0.902256f, 0.902278f, 0.902299f, 0.902321f, 0.902342f, 0.902364f, 0.902385f, 0.902407f, 0.902428f, 0.90245f, 0.902471f, 0.902492f,
+0.902514f, 0.902535f, 0.902557f, 0.902578f, 0.902599f, 0.902621f, 0.902642f, 0.902664f, 0.902685f, 0.902706f, 0.902728f, 0.902749f, 0.90277f, 0.902791f, 0.902813f, 0.902834f, 0.902855f, 0.902876f, 0.902898f, 0.902919f,
+0.90294f, 0.902961f, 0.902982f, 0.903004f, 0.903025f, 0.903046f, 0.903067f, 0.903088f, 0.903109f, 0.90313f, 0.903151f, 0.903173f, 0.903194f, 0.903215f, 0.903236f, 0.903257f, 0.903278f, 0.903299f, 0.90332f, 0.903341f,
+0.903362f, 0.903383f, 0.903404f, 0.903425f, 0.903446f, 0.903466f, 0.903487f, 0.903508f, 0.903529f, 0.90355f, 0.903571f, 0.903592f, 0.903613f, 0.903633f, 0.903654f, 0.903675f, 0.903696f, 0.903717f, 0.903737f, 0.903758f,
+0.903779f, 0.9038f, 0.90382f, 0.903841f, 0.903862f, 0.903882f, 0.903903f, 0.903924f, 0.903944f, 0.903965f, 0.903986f, 0.904006f, 0.904027f, 0.904048f, 0.904068f, 0.904089f, 0.904109f, 0.90413f, 0.90415f, 0.904171f,
+0.904191f, 0.904212f, 0.904232f, 0.904253f, 0.904273f, 0.904294f, 0.904314f, 0.904335f, 0.904355f, 0.904376f, 0.904396f, 0.904416f, 0.904437f, 0.904457f, 0.904478f, 0.904498f, 0.904518f, 0.904539f, 0.904559f, 0.904579f,
+0.9046f, 0.90462f, 0.90464f, 0.90466f, 0.904681f, 0.904701f, 0.904721f, 0.904741f, 0.904761f, 0.904782f, 0.904802f, 0.904822f, 0.904842f, 0.904862f, 0.904882f, 0.904903f, 0.904923f, 0.904943f, 0.904963f, 0.904983f,
+0.905003f, 0.905023f, 0.905043f, 0.905063f, 0.905083f, 0.905103f, 0.905123f, 0.905143f, 0.905163f, 0.905183f, 0.905203f, 0.905223f, 0.905243f, 0.905263f, 0.905283f, 0.905303f, 0.905323f, 0.905342f, 0.905362f, 0.905382f,
+0.905402f, 0.905422f, 0.905442f, 0.905461f, 0.905481f, 0.905501f, 0.905521f, 0.905541f, 0.90556f, 0.90558f, 0.9056f, 0.90562f, 0.905639f, 0.905659f, 0.905679f, 0.905698f, 0.905718f, 0.905738f, 0.905757f, 0.905777f,
+0.905796f, 0.905816f, 0.905836f, 0.905855f, 0.905875f, 0.905894f, 0.905914f, 0.905933f, 0.905953f, 0.905973f, 0.905992f, 0.906012f, 0.906031f, 0.90605f, 0.90607f, 0.906089f, 0.906109f, 0.906128f, 0.906148f, 0.906167f,
+0.906186f, 0.906206f, 0.906225f, 0.906244f, 0.906264f, 0.906283f, 0.906302f, 0.906322f, 0.906341f, 0.90636f, 0.90638f, 0.906399f, 0.906418f, 0.906437f, 0.906457f, 0.906476f, 0.906495f, 0.906514f, 0.906533f, 0.906553f,
+0.906572f, 0.906591f, 0.90661f, 0.906629f, 0.906648f, 0.906667f, 0.906686f, 0.906706f, 0.906725f, 0.906744f, 0.906763f, 0.906782f, 0.906801f, 0.90682f, 0.906839f, 0.906858f, 0.906877f, 0.906896f, 0.906915f, 0.906934f,
+0.906953f, 0.906972f, 0.90699f, 0.907009f, 0.907028f, 0.907047f, 0.907066f, 0.907085f, 0.907104f, 0.907122f, 0.907141f, 0.90716f, 0.907179f, 0.907198f, 0.907216f, 0.907235f, 0.907254f, 0.907273f, 0.907291f, 0.90731f,
+0.907329f, 0.907348f, 0.907366f, 0.907385f, 0.907404f, 0.907422f, 0.907441f, 0.90746f, 0.907478f, 0.907497f, 0.907515f, 0.907534f, 0.907552f, 0.907571f, 0.90759f, 0.907608f, 0.907627f, 0.907645f, 0.907664f, 0.907682f,
+0.907701f, 0.907719f, 0.907738f, 0.907756f, 0.907774f, 0.907793f, 0.907811f, 0.90783f, 0.907848f, 0.907866f, 0.907885f, 0.907903f, 0.907921f, 0.90794f, 0.907958f, 0.907976f, 0.907995f, 0.908013f, 0.908031f, 0.90805f,
+0.908068f, 0.908086f, 0.908104f, 0.908122f, 0.908141f, 0.908159f, 0.908177f, 0.908195f, 0.908213f, 0.908232f, 0.90825f, 0.908268f, 0.908286f, 0.908304f, 0.908322f, 0.90834f, 0.908358f, 0.908376f, 0.908394f, 0.908412f,
+0.90843f, 0.908448f, 0.908466f, 0.908484f, 0.908502f, 0.90852f, 0.908538f, 0.908556f, 0.908574f, 0.908592f, 0.90861f, 0.908628f, 0.908646f, 0.908664f, 0.908682f, 0.908699f, 0.908717f, 0.908735f, 0.908753f, 0.908771f,
+0.908789f, 0.908806f, 0.908824f, 0.908842f, 0.90886f, 0.908877f, 0.908895f, 0.908913f, 0.90893f, 0.908948f, 0.908966f, 0.908984f, 0.909001f, 0.909019f, 0.909036f, 0.909054f, 0.909072f, 0.909089f, 0.909107f, 0.909124f,
+0.909142f, 0.90916f, 0.909177f, 0.909195f, 0.909212f, 0.90923f, 0.909247f, 0.909265f, 0.909282f, 0.9093f, 0.909317f, 0.909335f, 0.909352f, 0.909369f, 0.909387f, 0.909404f, 0.909422f, 0.909439f, 0.909456f, 0.909474f,
+0.909491f, 0.909508f, 0.909526f, 0.909543f, 0.90956f, 0.909578f, 0.909595f, 0.909612f, 0.909629f, 0.909647f, 0.909664f, 0.909681f, 0.909698f, 0.909715f, 0.909733f, 0.90975f, 0.909767f, 0.909784f, 0.909801f, 0.909818f,
+0.909835f, 0.909853f, 0.90987f, 0.909887f, 0.909904f, 0.909921f, 0.909938f, 0.909955f, 0.909972f, 0.909989f, 0.910006f, 0.910023f, 0.91004f, 0.910057f, 0.910074f, 0.910091f, 0.910108f, 0.910125f, 0.910141f, 0.910158f,
+0.910175f, 0.910192f, 0.910209f, 0.910226f, 0.910243f, 0.91026f, 0.910276f, 0.910293f, 0.91031f, 0.910327f, 0.910343f, 0.91036f, 0.910377f, 0.910394f, 0.91041f, 0.910427f, 0.910444f, 0.910461f, 0.910477f, 0.910494f,
+0.910511f, 0.910527f, 0.910544f, 0.91056f, 0.910577f, 0.910594f, 0.91061f, 0.910627f, 0.910643f, 0.91066f, 0.910676f, 0.910693f, 0.91071f, 0.910726f, 0.910743f, 0.910759f, 0.910776f, 0.910792f, 0.910808f, 0.910825f,
+0.910841f, 0.910858f, 0.910874f, 0.910891f, 0.910907f, 0.910923f, 0.91094f, 0.910956f, 0.910972f, 0.910989f, 0.911005f, 0.911021f, 0.911038f, 0.911054f, 0.91107f, 0.911086f, 0.911103f, 0.911119f, 0.911135f, 0.911151f,
+0.911167f, 0.911184f, 0.9112f, 0.911216f, 0.911232f, 0.911248f, 0.911264f, 0.911281f, 0.911297f, 0.911313f, 0.911329f, 0.911345f, 0.911361f, 0.911377f, 0.911393f, 0.911409f, 0.911425f, 0.911441f, 0.911457f, 0.911473f,
+0.911489f, 0.911505f, 0.911521f, 0.911537f, 0.911553f, 0.911569f, 0.911585f, 0.911601f, 0.911616f, 0.911632f, 0.911648f, 0.911664f, 0.91168f, 0.911696f, 0.911711f, 0.911727f, 0.911743f, 0.911759f, 0.911775f, 0.91179f,
+0.911806f, 0.911822f, 0.911838f, 0.911853f, 0.911869f, 0.911885f, 0.9119f, 0.911916f, 0.911932f, 0.911947f, 0.911963f, 0.911979f, 0.911994f, 0.91201f, 0.912025f, 0.912041f, 0.912056f, 0.912072f, 0.912088f, 0.912103f,
+0.912119f, 0.912134f, 0.91215f, 0.912165f, 0.912181f, 0.912196f, 0.912211f, 0.912227f, 0.912242f, 0.912258f, 0.912273f, 0.912288f, 0.912304f, 0.912319f, 0.912335f, 0.91235f, 0.912365f, 0.912381f, 0.912396f, 0.912411f,
+0.912426f, 0.912442f, 0.912457f, 0.912472f, 0.912488f, 0.912503f, 0.912518f, 0.912533f, 0.912548f, 0.912564f, 0.912579f, 0.912594f, 0.912609f, 0.912624f, 0.912639f, 0.912654f, 0.91267f, 0.912685f, 0.9127f, 0.912715f,
+0.91273f, 0.912745f, 0.91276f, 0.912775f, 0.91279f, 0.912805f, 0.91282f, 0.912835f, 0.91285f, 0.912865f, 0.91288f, 0.912895f, 0.91291f, 0.912925f, 0.912939f, 0.912954f, 0.912969f, 0.912984f, 0.912999f, 0.913014f,
+0.913029f, 0.913043f, 0.913058f, 0.913073f, 0.913088f, 0.913103f, 0.913117f, 0.913132f, 0.913147f, 0.913162f, 0.913176f, 0.913191f, 0.913206f, 0.91322f, 0.913235f, 0.91325f, 0.913264f, 0.913279f, 0.913294f, 0.913308f,
+0.913323f, 0.913337f, 0.913352f, 0.913366f, 0.913381f, 0.913396f, 0.91341f, 0.913425f, 0.913439f, 0.913454f, 0.913468f, 0.913483f, 0.913497f, 0.913512f, 0.913526f, 0.91354f, 0.913555f, 0.913569f, 0.913584f, 0.913598f,
+0.913612f, 0.913627f, 0.913641f, 0.913655f, 0.91367f, 0.913684f, 0.913698f, 0.913713f, 0.913727f, 0.913741f, 0.913755f, 0.91377f, 0.913784f, 0.913798f, 0.913812f, 0.913827f, 0.913841f, 0.913855f, 0.913869f, 0.913883f,
+0.913897f, 0.913912f, 0.913926f, 0.91394f, 0.913954f, 0.913968f, 0.913982f, 0.913996f, 0.91401f, 0.914024f, 0.914038f, 0.914052f, 0.914066f, 0.91408f, 0.914094f, 0.914108f, 0.914122f, 0.914136f, 0.91415f, 0.914164f,
+0.914178f, 0.914192f, 0.914206f, 0.91422f, 0.914233f, 0.914247f, 0.914261f, 0.914275f, 0.914289f, 0.914303f, 0.914316f, 0.91433f, 0.914344f, 0.914358f, 0.914371f, 0.914385f, 0.914399f, 0.914413f, 0.914426f, 0.91444f,
+0.914454f, 0.914467f, 0.914481f, 0.914495f, 0.914508f, 0.914522f, 0.914536f, 0.914549f, 0.914563f, 0.914576f, 0.91459f, 0.914604f, 0.914617f, 0.914631f, 0.914644f, 0.914658f, 0.914671f, 0.914685f, 0.914698f, 0.914712f,
+0.914725f, 0.914738f, 0.914752f, 0.914765f, 0.914779f, 0.914792f, 0.914806f, 0.914819f, 0.914832f, 0.914846f, 0.914859f, 0.914872f, 0.914886f, 0.914899f, 0.914912f, 0.914926f, 0.914939f, 0.914952f, 0.914965f, 0.914979f,
+0.914992f, 0.915005f, 0.915018f, 0.915031f, 0.915045f, 0.915058f, 0.915071f, 0.915084f, 0.915097f, 0.91511f, 0.915123f, 0.915137f, 0.91515f, 0.915163f, 0.915176f, 0.915189f, 0.915202f, 0.915215f, 0.915228f, 0.915241f,
+0.915254f, 0.915267f, 0.91528f, 0.915293f, 0.915306f, 0.915319f, 0.915332f, 0.915345f, 0.915357f, 0.91537f, 0.915383f, 0.915396f, 0.915409f, 0.915422f, 0.915435f, 0.915448f, 0.91546f, 0.915473f, 0.915486f, 0.915499f,
+0.915511f, 0.915524f, 0.915537f, 0.91555f, 0.915562f, 0.915575f, 0.915588f, 0.915601f, 0.915613f, 0.915626f, 0.915639f, 0.915651f, 0.915664f, 0.915676f, 0.915689f, 0.915702f, 0.915714f, 0.915727f, 0.915739f, 0.915752f,
+0.915764f, 0.915777f, 0.91579f, 0.915802f, 0.915815f, 0.915827f, 0.915839f, 0.915852f, 0.915864f, 0.915877f, 0.915889f, 0.915902f, 0.915914f, 0.915926f, 0.915939f, 0.915951f, 0.915964f, 0.915976f, 0.915988f, 0.916001f,
+0.916013f, 0.916025f, 0.916037f, 0.91605f, 0.916062f, 0.916074f, 0.916086f, 0.916099f, 0.916111f, 0.916123f, 0.916135f, 0.916148f, 0.91616f, 0.916172f, 0.916184f, 0.916196f, 0.916208f, 0.91622f, 0.916232f, 0.916245f,
+0.916257f, 0.916269f, 0.916281f, 0.916293f, 0.916305f, 0.916317f, 0.916329f, 0.916341f, 0.916353f, 0.916365f, 0.916377f, 0.916389f, 0.916401f, 0.916413f, 0.916425f, 0.916437f, 0.916448f, 0.91646f, 0.916472f, 0.916484f,
+0.916496f, 0.916508f, 0.91652f, 0.916531f, 0.916543f, 0.916555f, 0.916567f, 0.916579f, 0.91659f, 0.916602f, 0.916614f, 0.916626f, 0.916637f, 0.916649f, 0.916661f, 0.916672f, 0.916684f, 0.916696f, 0.916707f, 0.916719f,
+0.916731f, 0.916742f, 0.916754f, 0.916765f, 0.916777f, 0.916788f, 0.9168f, 0.916812f, 0.916823f, 0.916835f, 0.916846f, 0.916858f, 0.916869f, 0.916881f, 0.916892f, 0.916903f, 0.916915f, 0.916926f, 0.916938f, 0.916949f,
+0.916961f, 0.916972f, 0.916983f, 0.916995f, 0.917006f, 0.917017f, 0.917029f, 0.91704f, 0.917051f, 0.917063f, 0.917074f, 0.917085f, 0.917096f, 0.917108f, 0.917119f, 0.91713f, 0.917141f, 0.917153f, 0.917164f, 0.917175f,
+0.917186f, 0.917197f, 0.917208f, 0.917219f, 0.917231f, 0.917242f, 0.917253f, 0.917264f, 0.917275f, 0.917286f, 0.917297f, 0.917308f, 0.917319f, 0.91733f, 0.917341f, 0.917352f, 0.917363f, 0.917374f, 0.917385f, 0.917396f,
+0.917407f, 0.917418f, 0.917429f, 0.91744f, 0.917451f, 0.917461f, 0.917472f, 0.917483f, 0.917494f, 0.917505f, 0.917516f, 0.917526f, 0.917537f, 0.917548f, 0.917559f, 0.91757f, 0.91758f, 0.917591f, 0.917602f, 0.917612f,
+0.917623f, 0.917634f, 0.917645f, 0.917655f, 0.917666f, 0.917677f, 0.917687f, 0.917698f, 0.917708f, 0.917719f, 0.91773f, 0.91774f, 0.917751f, 0.917761f, 0.917772f, 0.917782f, 0.917793f, 0.917803f, 0.917814f, 0.917824f,
+0.917835f, 0.917845f, 0.917856f, 0.917866f, 0.917877f, 0.917887f, 0.917897f, 0.917908f, 0.917918f, 0.917929f, 0.917939f, 0.917949f, 0.91796f, 0.91797f, 0.91798f, 0.917991f, 0.918001f, 0.918011f, 0.918021f, 0.918032f,
+0.918042f, 0.918052f, 0.918062f, 0.918073f, 0.918083f, 0.918093f, 0.918103f, 0.918113f, 0.918124f, 0.918134f, 0.918144f, 0.918154f, 0.918164f, 0.918174f, 0.918184f, 0.918194f, 0.918204f, 0.918214f, 0.918224f, 0.918234f,
+0.918244f, 0.918254f, 0.918264f, 0.918274f, 0.918284f, 0.918294f, 0.918304f, 0.918314f, 0.918324f, 0.918334f, 0.918344f, 0.918354f, 0.918364f, 0.918374f, 0.918384f, 0.918393f, 0.918403f, 0.918413f, 0.918423f, 0.918433f,
+0.918442f, 0.918452f, 0.918462f, 0.918472f, 0.918481f, 0.918491f, 0.918501f, 0.918511f, 0.91852f, 0.91853f, 0.91854f, 0.918549f, 0.918559f, 0.918569f, 0.918578f, 0.918588f, 0.918597f, 0.918607f, 0.918617f, 0.918626f,
+0.918636f, 0.918645f, 0.918655f, 0.918664f, 0.918674f, 0.918683f, 0.918693f, 0.918702f, 0.918712f, 0.918721f, 0.918731f, 0.91874f, 0.91875f, 0.918759f, 0.918768f, 0.918778f, 0.918787f, 0.918796f, 0.918806f, 0.918815f,
+0.918824f, 0.918834f, 0.918843f, 0.918852f, 0.918862f, 0.918871f, 0.91888f, 0.918889f, 0.918899f, 0.918908f, 0.918917f, 0.918926f, 0.918935f, 0.918945f, 0.918954f, 0.918963f, 0.918972f, 0.918981f, 0.91899f, 0.918999f,
+0.919009f, 0.919018f, 0.919027f, 0.919036f, 0.919045f, 0.919054f, 0.919063f, 0.919072f, 0.919081f, 0.91909f, 0.919099f, 0.919108f, 0.919117f, 0.919126f, 0.919135f, 0.919144f, 0.919153f, 0.919161f, 0.91917f, 0.919179f,
+0.919188f, 0.919197f, 0.919206f, 0.919215f, 0.919223f, 0.919232f, 0.919241f, 0.91925f, 0.919259f, 0.919267f, 0.919276f, 0.919285f, 0.919294f, 0.919302f, 0.919311f, 0.91932f, 0.919328f, 0.919337f, 0.919346f, 0.919354f,
+0.919363f, 0.919372f, 0.91938f, 0.919389f, 0.919397f, 0.919406f, 0.919415f, 0.919423f, 0.919432f, 0.91944f, 0.919449f, 0.919457f, 0.919466f, 0.919474f, 0.919483f, 0.919491f, 0.9195f, 0.919508f, 0.919517f, 0.919525f,
+0.919533f, 0.919542f, 0.91955f, 0.919559f, 0.919567f, 0.919575f, 0.919584f, 0.919592f, 0.9196f, 0.919609f, 0.919617f, 0.919625f, 0.919633f, 0.919642f, 0.91965f, 0.919658f, 0.919666f, 0.919675f, 0.919683f, 0.919691f,
+0.919699f, 0.919707f, 0.919715f, 0.919724f, 0.919732f, 0.91974f, 0.919748f, 0.919756f, 0.919764f, 0.919772f, 0.91978f, 0.919788f, 0.919796f, 0.919804f, 0.919812f, 0.91982f, 0.919828f, 0.919836f, 0.919844f, 0.919852f,
+0.91986f, 0.919868f, 0.919876f, 0.919884f, 0.919892f, 0.9199f, 0.919908f, 0.919916f, 0.919923f, 0.919931f, 0.919939f, 0.919947f, 0.919955f, 0.919963f, 0.91997f, 0.919978f, 0.919986f, 0.919994f, 0.920001f, 0.920009f,
+0.920017f, 0.920025f, 0.920032f, 0.92004f, 0.920048f, 0.920055f, 0.920063f, 0.920071f, 0.920078f, 0.920086f, 0.920093f, 0.920101f, 0.920109f, 0.920116f, 0.920124f, 0.920131f, 0.920139f, 0.920146f, 0.920154f, 0.920161f,
+0.920169f, 0.920176f, 0.920184f, 0.920191f, 0.920199f, 0.920206f, 0.920213f, 0.920221f, 0.920228f, 0.920236f, 0.920243f, 0.92025f, 0.920258f, 0.920265f, 0.920272f, 0.92028f, 0.920287f, 0.920294f, 0.920302f, 0.920309f,
+0.920316f, 0.920323f, 0.920331f, 0.920338f, 0.920345f, 0.920352f, 0.920359f, 0.920367f, 0.920374f, 0.920381f, 0.920388f, 0.920395f, 0.920402f, 0.920409f, 0.920417f, 0.920424f, 0.920431f, 0.920438f, 0.920445f, 0.920452f,
+0.920459f, 0.920466f, 0.920473f, 0.92048f, 0.920487f, 0.920494f, 0.920501f, 0.920508f, 0.920515f, 0.920522f, 0.920529f, 0.920535f, 0.920542f, 0.920549f, 0.920556f, 0.920563f, 0.92057f, 0.920577f, 0.920583f, 0.92059f,
+0.920597f, 0.920604f, 0.920611f, 0.920617f, 0.920624f, 0.920631f, 0.920638f, 0.920644f, 0.920651f, 0.920658f, 0.920664f, 0.920671f, 0.920678f, 0.920684f, 0.920691f, 0.920698f, 0.920704f, 0.920711f, 0.920717f, 0.920724f,
+0.920731f, 0.920737f, 0.920744f, 0.92075f, 0.920757f, 0.920763f, 0.92077f, 0.920776f, 0.920783f, 0.920789f, 0.920796f, 0.920802f, 0.920809f, 0.920815f, 0.920821f, 0.920828f, 0.920834f, 0.92084f, 0.920847f, 0.920853f,
+0.92086f, 0.920866f, 0.920872f, 0.920878f, 0.920885f, 0.920891f, 0.920897f, 0.920904f, 0.92091f, 0.920916f, 0.920922f, 0.920928f, 0.920935f, 0.920941f, 0.920947f, 0.920953f, 0.920959f, 0.920966f, 0.920972f, 0.920978f,
+0.920984f, 0.92099f, 0.920996f, 0.921002f, 0.921008f, 0.921014f, 0.92102f, 0.921026f, 0.921032f, 0.921038f, 0.921044f, 0.92105f, 0.921056f, 0.921062f, 0.921068f, 0.921074f, 0.92108f, 0.921086f, 0.921092f, 0.921098f,
+0.921104f, 0.921109f, 0.921115f, 0.921121f, 0.921127f, 0.921133f, 0.921139f, 0.921144f, 0.92115f, 0.921156f, 0.921162f, 0.921168f, 0.921173f, 0.921179f, 0.921185f, 0.92119f, 0.921196f, 0.921202f, 0.921207f, 0.921213f,
+0.921219f, 0.921224f, 0.92123f, 0.921236f, 0.921241f, 0.921247f, 0.921252f, 0.921258f, 0.921264f, 0.921269f, 0.921275f, 0.92128f, 0.921286f, 0.921291f, 0.921297f, 0.921302f, 0.921308f, 0.921313f, 0.921318f, 0.921324f,
+0.921329f, 0.921335f, 0.92134f, 0.921346f, 0.921351f, 0.921356f, 0.921362f, 0.921367f, 0.921372f, 0.921378f, 0.921383f, 0.921388f, 0.921393f, 0.921399f, 0.921404f, 0.921409f, 0.921414f, 0.92142f, 0.921425f, 0.92143f,
+0.921435f, 0.92144f, 0.921446f, 0.921451f, 0.921456f, 0.921461f, 0.921466f, 0.921471f, 0.921476f, 0.921481f, 0.921487f, 0.921492f, 0.921497f, 0.921502f, 0.921507f, 0.921512f, 0.921517f, 0.921522f, 0.921527f, 0.921532f,
+0.921537f, 0.921542f, 0.921546f, 0.921551f, 0.921556f, 0.921561f, 0.921566f, 0.921571f, 0.921576f, 0.921581f, 0.921586f, 0.92159f, 0.921595f, 0.9216f, 0.921605f, 0.92161f, 0.921614f, 0.921619f, 0.921624f, 0.921629f,
+0.921633f, 0.921638f, 0.921643f, 0.921647f, 0.921652f, 0.921657f, 0.921661f, 0.921666f, 0.921671f, 0.921675f, 0.92168f, 0.921685f, 0.921689f, 0.921694f, 0.921698f, 0.921703f, 0.921707f, 0.921712f, 0.921716f, 0.921721f,
+0.921725f, 0.92173f, 0.921734f, 0.921739f, 0.921743f, 0.921748f, 0.921752f, 0.921757f, 0.921761f, 0.921765f, 0.92177f, 0.921774f, 0.921779f, 0.921783f, 0.921787f, 0.921792f, 0.921796f, 0.9218f, 0.921804f, 0.921809f,
+0.921813f, 0.921817f, 0.921822f, 0.921826f, 0.92183f, 0.921834f, 0.921838f, 0.921843f, 0.921847f, 0.921851f, 0.921855f, 0.921859f, 0.921863f, 0.921867f, 0.921872f, 0.921876f, 0.92188f, 0.921884f, 0.921888f, 0.921892f,
+0.921896f, 0.9219f, 0.921904f, 0.921908f, 0.921912f, 0.921916f, 0.92192f, 0.921924f, 0.921928f, 0.921932f, 0.921936f, 0.92194f, 0.921944f, 0.921947f, 0.921951f, 0.921955f, 0.921959f, 0.921963f, 0.921967f, 0.92197f,
+0.921974f, 0.921978f, 0.921982f, 0.921986f, 0.921989f, 0.921993f, 0.921997f, 0.922001f, 0.922004f, 0.922008f, 0.922012f, 0.922015f, 0.922019f, 0.922023f, 0.922026f, 0.92203f, 0.922034f, 0.922037f, 0.922041f, 0.922044f,
+0.922048f, 0.922052f, 0.922055f, 0.922059f, 0.922062f, 0.922066f, 0.922069f, 0.922073f, 0.922076f, 0.92208f, 0.922083f, 0.922087f, 0.92209f, 0.922093f, 0.922097f, 0.9221f, 0.922104f, 0.922107f, 0.92211f, 0.922114f,
+0.922117f, 0.92212f, 0.922124f, 0.922127f, 0.92213f, 0.922134f, 0.922137f, 0.92214f, 0.922143f, 0.922147f, 0.92215f, 0.922153f, 0.922156f, 0.92216f, 0.922163f, 0.922166f, 0.922169f, 0.922172f, 0.922175f, 0.922179f,
+0.922182f, 0.922185f, 0.922188f, 0.922191f, 0.922194f, 0.922197f, 0.9222f, 0.922203f, 0.922206f, 0.922209f, 0.922212f, 0.922215f, 0.922218f, 0.922221f, 0.922224f, 0.922227f, 0.92223f, 0.922233f, 0.922236f, 0.922239f,
+0.922242f, 0.922244f, 0.922247f, 0.92225f, 0.922253f, 0.922256f, 0.922259f, 0.922261f, 0.922264f, 0.922267f, 0.92227f, 0.922273f, 0.922275f, 0.922278f, 0.922281f, 0.922284f, 0.922286f, 0.922289f, 0.922292f, 0.922294f,
+0.922297f, 0.9223f, 0.922302f, 0.922305f, 0.922307f, 0.92231f, 0.922313f, 0.922315f, 0.922318f, 0.92232f, 0.922323f, 0.922325f, 0.922328f, 0.92233f, 0.922333f, 0.922335f, 0.922338f, 0.92234f, 0.922343f, 0.922345f,
+0.922348f, 0.92235f, 0.922352f, 0.922355f, 0.922357f, 0.92236f, 0.922362f, 0.922364f, 0.922367f, 0.922369f, 0.922371f, 0.922374f, 0.922376f, 0.922378f, 0.92238f, 0.922383f, 0.922385f, 0.922387f, 0.922389f, 0.922392f,
+0.922394f, 0.922396f, 0.922398f, 0.9224f, 0.922402f, 0.922405f, 0.922407f, 0.922409f, 0.922411f, 0.922413f, 0.922415f, 0.922417f, 0.922419f, 0.922421f, 0.922423f, 0.922425f, 0.922427f, 0.922429f, 0.922431f, 0.922433f,
+0.922435f, 0.922437f, 0.922439f, 0.922441f, 0.922443f, 0.922445f, 0.922447f, 0.922449f, 0.922451f, 0.922452f, 0.922454f, 0.922456f, 0.922458f, 0.92246f, 0.922462f, 0.922463f, 0.922465f, 0.922467f, 0.922469f, 0.92247f,
+0.922472f, 0.922474f, 0.922476f, 0.922477f, 0.922479f, 0.922481f, 0.922482f, 0.922484f, 0.922486f, 0.922487f, 0.922489f, 0.922491f, 0.922492f, 0.922494f, 0.922495f, 0.922497f, 0.922498f, 0.9225f, 0.922501f, 0.922503f,
+0.922504f, 0.922506f, 0.922507f, 0.922509f, 0.92251f, 0.922512f, 0.922513f, 0.922515f, 0.922516f, 0.922518f, 0.922519f, 0.92252f, 0.922522f, 0.922523f, 0.922524f, 0.922526f, 0.922527f, 0.922528f, 0.92253f, 0.922531f,
+0.922532f, 0.922533f, 0.922535f, 0.922536f, 0.922537f, 0.922538f, 0.92254f, 0.922541f, 0.922542f, 0.922543f, 0.922544f, 0.922545f, 0.922547f, 0.922548f, 0.922549f, 0.92255f, 0.922551f, 0.922552f, 0.922553f, 0.922554f,
+0.922555f, 0.922556f, 0.922557f, 0.922558f, 0.922559f, 0.92256f, 0.922561f, 0.922562f, 0.922563f, 0.922564f, 0.922565f, 0.922566f, 0.922567f, 0.922568f, 0.922569f, 0.92257f, 0.92257f, 0.922571f, 0.922572f, 0.922573f,
+0.922574f, 0.922575f, 0.922575f, 0.922576f, 0.922577f, 0.922578f, 0.922578f, 0.922579f, 0.92258f, 0.922581f, 0.922581f, 0.922582f, 0.922583f, 0.922583f, 0.922584f, 0.922585f, 0.922585f, 0.922586f, 0.922587f, 0.922587f,
+0.922588f, 0.922588f, 0.922589f, 0.922589f, 0.92259f, 0.92259f, 0.922591f, 0.922592f, 0.922592f, 0.922592f, 0.922593f, 0.922593f, 0.922594f, 0.922594f, 0.922595f, 0.922595f, 0.922596f, 0.922596f, 0.922596f, 0.922597f,
+0.922597f, 0.922597f, 0.922598f, 0.922598f, 0.922598f, 0.922599f, 0.922599f, 0.922599f, 0.922599f, 0.9226f, 0.9226f, 0.9226f, 0.9226f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922602f, 0.922602f,
+0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f,
+0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.9226f, 0.9226f, 0.9226f, 0.9226f, 0.922599f, 0.922599f, 0.922599f, 0.922599f, 0.922598f, 0.922598f, 0.922598f,
+0.922597f, 0.922597f, 0.922597f, 0.922596f, 0.922596f, 0.922596f, 0.922595f, 0.922595f, 0.922594f, 0.922594f, 0.922593f, 0.922593f, 0.922593f, 0.922592f, 0.922592f, 0.922591f, 0.922591f, 0.92259f, 0.922589f, 0.922589f,
+0.922588f, 0.922588f, 0.922587f, 0.922587f, 0.922586f, 0.922585f, 0.922585f, 0.922584f, 0.922583f, 0.922583f, 0.922582f, 0.922581f, 0.922581f, 0.92258f, 0.922579f, 0.922579f, 0.922578f, 0.922577f, 0.922576f, 0.922575f,
+0.922575f, 0.922574f, 0.922573f, 0.922572f, 0.922571f, 0.922571f, 0.92257f, 0.922569f, 0.922568f, 0.922567f, 0.922566f, 0.922565f, 0.922564f, 0.922563f, 0.922562f, 0.922561f, 0.92256f, 0.922559f, 0.922558f, 0.922557f,
+0.922556f, 0.922555f, 0.922554f, 0.922553f, 0.922552f, 0.922551f, 0.92255f, 0.922549f, 0.922548f, 0.922547f, 0.922546f, 0.922544f, 0.922543f, 0.922542f, 0.922541f, 0.92254f, 0.922538f, 0.922537f, 0.922536f, 0.922535f,
+0.922534f, 0.922532f, 0.922531f, 0.92253f, 0.922528f, 0.922527f, 0.922526f, 0.922524f, 0.922523f, 0.922522f, 0.92252f, 0.922519f, 0.922518f, 0.922516f, 0.922515f, 0.922513f, 0.922512f, 0.92251f, 0.922509f, 0.922508f,
+0.922506f, 0.922505f, 0.922503f, 0.922502f, 0.9225f, 0.922498f, 0.922497f, 0.922495f, 0.922494f, 0.922492f, 0.922491f, 0.922489f, 0.922487f, 0.922486f, 0.922484f, 0.922482f, 0.922481f, 0.922479f, 0.922477f, 0.922476f,
+0.922474f, 0.922472f, 0.922471f, 0.922469f, 0.922467f, 0.922465f, 0.922463f, 0.922462f, 0.92246f, 0.922458f, 0.922456f, 0.922454f, 0.922453f, 0.922451f, 0.922449f, 0.922447f, 0.922445f, 0.922443f, 0.922441f, 0.922439f,
+0.922437f, 0.922435f, 0.922433f, 0.922431f, 0.922429f, 0.922427f, 0.922425f, 0.922423f, 0.922421f, 0.922419f, 0.922417f, 0.922415f, 0.922413f, 0.922411f, 0.922409f, 0.922407f, 0.922405f, 0.922403f, 0.9224f, 0.922398f,
+0.922396f, 0.922394f, 0.922392f, 0.92239f, 0.922387f, 0.922385f, 0.922383f, 0.922381f, 0.922378f, 0.922376f, 0.922374f, 0.922371f, 0.922369f, 0.922367f, 0.922365f, 0.922362f, 0.92236f, 0.922357f, 0.922355f, 0.922353f,
+0.92235f, 0.922348f, 0.922345f, 0.922343f, 0.922341f, 0.922338f, 0.922336f, 0.922333f, 0.922331f, 0.922328f, 0.922326f, 0.922323f, 0.922321f, 0.922318f, 0.922315f, 0.922313f, 0.92231f, 0.922308f, 0.922305f, 0.922302f,
+0.9223f, 0.922297f, 0.922295f, 0.922292f, 0.922289f, 0.922287f, 0.922284f, 0.922281f, 0.922278f, 0.922276f, 0.922273f, 0.92227f, 0.922267f, 0.922265f, 0.922262f, 0.922259f, 0.922256f, 0.922253f, 0.922251f, 0.922248f,
+0.922245f, 0.922242f, 0.922239f, 0.922236f, 0.922233f, 0.92223f, 0.922227f, 0.922224f, 0.922222f, 0.922219f, 0.922216f, 0.922213f, 0.92221f, 0.922207f, 0.922204f, 0.922201f, 0.922198f, 0.922194f, 0.922191f, 0.922188f,
+0.922185f, 0.922182f, 0.922179f, 0.922176f, 0.922173f, 0.92217f, 0.922166f, 0.922163f, 0.92216f, 0.922157f, 0.922154f, 0.92215f, 0.922147f, 0.922144f, 0.922141f, 0.922138f, 0.922134f, 0.922131f, 0.922128f, 0.922124f,
+0.922121f, 0.922118f, 0.922114f, 0.922111f, 0.922108f, 0.922104f, 0.922101f, 0.922097f, 0.922094f, 0.922091f, 0.922087f, 0.922084f, 0.92208f, 0.922077f, 0.922073f, 0.92207f, 0.922066f, 0.922063f, 0.922059f, 0.922056f,
+0.922052f, 0.922049f, 0.922045f, 0.922042f, 0.922038f, 0.922034f, 0.922031f, 0.922027f, 0.922023f, 0.92202f, 0.922016f, 0.922012f, 0.922009f, 0.922005f, 0.922001f, 0.921998f, 0.921994f, 0.92199f, 0.921986f, 0.921983f,
+0.921979f, 0.921975f, 0.921971f, 0.921967f, 0.921964f, 0.92196f, 0.921956f, 0.921952f, 0.921948f, 0.921944f, 0.92194f, 0.921937f, 0.921933f, 0.921929f, 0.921925f, 0.921921f, 0.921917f, 0.921913f, 0.921909f, 0.921905f,
+0.921901f, 0.921897f, 0.921893f, 0.921889f, 0.921885f, 0.921881f, 0.921877f, 0.921873f, 0.921868f, 0.921864f, 0.92186f, 0.921856f, 0.921852f, 0.921848f, 0.921844f, 0.921839f, 0.921835f, 0.921831f, 0.921827f, 0.921823f,
+0.921818f, 0.921814f, 0.92181f, 0.921806f, 0.921801f, 0.921797f, 0.921793f, 0.921788f, 0.921784f, 0.92178f, 0.921775f, 0.921771f, 0.921767f, 0.921762f, 0.921758f, 0.921753f, 0.921749f, 0.921745f, 0.92174f, 0.921736f,
+0.921731f, 0.921727f, 0.921722f, 0.921718f, 0.921713f, 0.921709f, 0.921704f, 0.9217f, 0.921695f, 0.921691f, 0.921686f, 0.921681f, 0.921677f, 0.921672f, 0.921668f, 0.921663f, 0.921658f, 0.921654f, 0.921649f, 0.921644f,
+0.92164f, 0.921635f, 0.92163f, 0.921625f, 0.921621f, 0.921616f, 0.921611f, 0.921606f, 0.921602f, 0.921597f, 0.921592f, 0.921587f, 0.921582f, 0.921577f, 0.921573f, 0.921568f, 0.921563f, 0.921558f, 0.921553f, 0.921548f,
+0.921543f, 0.921538f, 0.921533f, 0.921528f, 0.921523f, 0.921518f, 0.921513f, 0.921508f, 0.921503f, 0.921498f, 0.921493f, 0.921488f, 0.921483f, 0.921478f, 0.921473f, 0.921468f, 0.921463f, 0.921458f, 0.921453f, 0.921448f,
+0.921442f, 0.921437f, 0.921432f, 0.921427f, 0.921422f, 0.921416f, 0.921411f, 0.921406f, 0.921401f, 0.921395f, 0.92139f, 0.921385f, 0.92138f, 0.921374f, 0.921369f, 0.921364f, 0.921358f, 0.921353f, 0.921348f, 0.921342f,
+0.921337f, 0.921332f, 0.921326f, 0.921321f, 0.921315f, 0.92131f, 0.921304f, 0.921299f, 0.921293f, 0.921288f, 0.921282f, 0.921277f, 0.921271f, 0.921266f, 0.92126f, 0.921255f, 0.921249f, 0.921244f, 0.921238f, 0.921232f,
+0.921227f, 0.921221f, 0.921216f, 0.92121f, 0.921204f, 0.921199f, 0.921193f, 0.921187f, 0.921182f, 0.921176f, 0.92117f, 0.921164f, 0.921159f, 0.921153f, 0.921147f, 0.921141f, 0.921136f, 0.92113f, 0.921124f, 0.921118f,
+0.921112f, 0.921106f, 0.921101f, 0.921095f, 0.921089f, 0.921083f, 0.921077f, 0.921071f, 0.921065f, 0.921059f, 0.921053f, 0.921047f, 0.921041f, 0.921035f, 0.921029f, 0.921023f, 0.921017f, 0.921011f, 0.921005f, 0.920999f,
+0.920993f, 0.920987f, 0.920981f, 0.920975f, 0.920969f, 0.920963f, 0.920956f, 0.92095f, 0.920944f, 0.920938f, 0.920932f, 0.920926f, 0.920919f, 0.920913f, 0.920907f, 0.920901f, 0.920894f, 0.920888f, 0.920882f, 0.920876f,
+0.920869f, 0.920863f, 0.920857f, 0.92085f, 0.920844f, 0.920838f, 0.920831f, 0.920825f, 0.920819f, 0.920812f, 0.920806f, 0.920799f, 0.920793f, 0.920786f, 0.92078f, 0.920773f, 0.920767f, 0.920761f, 0.920754f, 0.920747f,
+0.920741f, 0.920734f, 0.920728f, 0.920721f, 0.920715f, 0.920708f, 0.920702f, 0.920695f, 0.920688f, 0.920682f, 0.920675f, 0.920668f, 0.920662f, 0.920655f, 0.920648f, 0.920642f, 0.920635f, 0.920628f, 0.920622f, 0.920615f,
+0.920608f, 0.920601f, 0.920595f, 0.920588f, 0.920581f, 0.920574f, 0.920567f, 0.92056f, 0.920554f, 0.920547f, 0.92054f, 0.920533f, 0.920526f, 0.920519f, 0.920512f, 0.920505f, 0.920498f, 0.920491f, 0.920485f, 0.920478f,
+0.920471f, 0.920464f, 0.920457f, 0.92045f, 0.920443f, 0.920435f, 0.920428f, 0.920421f, 0.920414f, 0.920407f, 0.9204f, 0.920393f, 0.920386f, 0.920379f, 0.920372f, 0.920364f, 0.920357f, 0.92035f, 0.920343f, 0.920336f,
+0.920329f, 0.920321f, 0.920314f, 0.920307f, 0.9203f, 0.920292f, 0.920285f, 0.920278f, 0.92027f, 0.920263f, 0.920256f, 0.920248f, 0.920241f, 0.920234f, 0.920226f, 0.920219f, 0.920212f, 0.920204f, 0.920197f, 0.920189f,
+0.920182f, 0.920174f, 0.920167f, 0.920159f, 0.920152f, 0.920145f, 0.920137f, 0.920129f, 0.920122f, 0.920114f, 0.920107f, 0.920099f, 0.920092f, 0.920084f, 0.920077f, 0.920069f, 0.920061f, 0.920054f, 0.920046f, 0.920038f,
+0.920031f, 0.920023f, 0.920015f, 0.920008f, 0.92f, 0.919992f, 0.919984f, 0.919977f, 0.919969f, 0.919961f, 0.919953f, 0.919946f, 0.919938f, 0.91993f, 0.919922f, 0.919914f, 0.919906f, 0.919899f, 0.919891f, 0.919883f,
+0.919875f, 0.919867f, 0.919859f, 0.919851f, 0.919843f, 0.919835f, 0.919827f, 0.919819f, 0.919811f, 0.919803f, 0.919795f, 0.919787f, 0.919779f, 0.919771f, 0.919763f, 0.919755f, 0.919747f, 0.919739f, 0.919731f, 0.919723f,
+0.919715f, 0.919706f, 0.919698f, 0.91969f, 0.919682f, 0.919674f, 0.919666f, 0.919657f, 0.919649f, 0.919641f, 0.919633f, 0.919624f, 0.919616f, 0.919608f, 0.9196f, 0.919591f, 0.919583f, 0.919575f, 0.919566f, 0.919558f,
+0.91955f, 0.919541f, 0.919533f, 0.919525f, 0.919516f, 0.919508f, 0.919499f, 0.919491f, 0.919482f, 0.919474f, 0.919466f, 0.919457f, 0.919449f, 0.91944f, 0.919432f, 0.919423f, 0.919415f, 0.919406f, 0.919397f, 0.919389f,
+0.91938f, 0.919372f, 0.919363f, 0.919354f, 0.919346f, 0.919337f, 0.919329f, 0.91932f, 0.919311f, 0.919303f, 0.919294f, 0.919285f, 0.919276f, 0.919268f, 0.919259f, 0.91925f, 0.919241f, 0.919233f, 0.919224f, 0.919215f,
+0.919206f, 0.919197f, 0.919189f, 0.91918f, 0.919171f, 0.919162f, 0.919153f, 0.919144f, 0.919135f, 0.919126f, 0.919118f, 0.919109f, 0.9191f, 0.919091f, 0.919082f, 0.919073f, 0.919064f, 0.919055f, 0.919046f, 0.919037f,
+0.919028f, 0.919019f, 0.91901f, 0.919f, 0.918991f, 0.918982f, 0.918973f, 0.918964f, 0.918955f, 0.918946f, 0.918937f, 0.918928f, 0.918918f, 0.918909f, 0.9189f, 0.918891f, 0.918882f, 0.918872f, 0.918863f, 0.918854f,
+0.918845f, 0.918835f, 0.918826f, 0.918817f, 0.918807f, 0.918798f, 0.918789f, 0.918779f, 0.91877f, 0.918761f, 0.918751f, 0.918742f, 0.918732f, 0.918723f, 0.918714f, 0.918704f, 0.918695f, 0.918685f, 0.918676f, 0.918666f,
+0.918657f, 0.918647f, 0.918638f, 0.918628f, 0.918619f, 0.918609f, 0.9186f, 0.91859f, 0.918581f, 0.918571f, 0.918561f, 0.918552f, 0.918542f, 0.918532f, 0.918523f, 0.918513f, 0.918503f, 0.918494f, 0.918484f, 0.918474f,
+0.918465f, 0.918455f, 0.918445f, 0.918435f, 0.918426f, 0.918416f, 0.918406f, 0.918396f, 0.918386f, 0.918377f, 0.918367f, 0.918357f, 0.918347f, 0.918337f, 0.918327f, 0.918317f, 0.918308f, 0.918298f, 0.918288f, 0.918278f,
+0.918268f, 0.918258f, 0.918248f, 0.918238f, 0.918228f, 0.918218f, 0.918208f, 0.918198f, 0.918188f, 0.918178f, 0.918168f, 0.918158f, 0.918148f, 0.918137f, 0.918127f, 0.918117f, 0.918107f, 0.918097f, 0.918087f, 0.918077f,
+0.918066f, 0.918056f, 0.918046f, 0.918036f, 0.918026f, 0.918015f, 0.918005f, 0.917995f, 0.917985f, 0.917974f, 0.917964f, 0.917954f, 0.917943f, 0.917933f, 0.917923f, 0.917912f, 0.917902f, 0.917892f, 0.917881f, 0.917871f,
+0.917861f, 0.91785f, 0.91784f, 0.917829f, 0.917819f, 0.917808f, 0.917798f, 0.917787f, 0.917777f, 0.917766f, 0.917756f, 0.917745f, 0.917735f, 0.917724f, 0.917714f, 0.917703f, 0.917693f, 0.917682f, 0.917671f, 0.917661f,
+0.91765f, 0.91764f, 0.917629f, 0.917618f, 0.917608f, 0.917597f, 0.917586f, 0.917575f, 0.917565f, 0.917554f, 0.917543f, 0.917532f, 0.917522f, 0.917511f, 0.9175f, 0.917489f, 0.917479f, 0.917468f, 0.917457f, 0.917446f,
+0.917435f, 0.917424f, 0.917413f, 0.917403f, 0.917392f, 0.917381f, 0.91737f, 0.917359f, 0.917348f, 0.917337f, 0.917326f, 0.917315f, 0.917304f, 0.917293f, 0.917282f, 0.917271f, 0.91726f, 0.917249f, 0.917238f, 0.917227f,
+0.917216f, 0.917205f, 0.917193f, 0.917182f, 0.917171f, 0.91716f, 0.917149f, 0.917138f, 0.917127f, 0.917115f, 0.917104f, 0.917093f, 0.917082f, 0.91707f, 0.917059f, 0.917048f, 0.917037f, 0.917025f, 0.917014f, 0.917003f,
+0.916992f, 0.91698f, 0.916969f, 0.916958f, 0.916946f, 0.916935f, 0.916923f, 0.916912f, 0.916901f, 0.916889f, 0.916878f, 0.916866f, 0.916855f, 0.916843f, 0.916832f, 0.916821f, 0.916809f, 0.916798f, 0.916786f, 0.916774f,
+0.916763f, 0.916751f, 0.91674f, 0.916728f, 0.916717f, 0.916705f, 0.916693f, 0.916682f, 0.91667f, 0.916659f, 0.916647f, 0.916635f, 0.916624f, 0.916612f, 0.9166f, 0.916588f, 0.916577f, 0.916565f, 0.916553f, 0.916542f,
+0.91653f, 0.916518f, 0.916506f, 0.916494f, 0.916483f, 0.916471f, 0.916459f, 0.916447f, 0.916435f, 0.916423f, 0.916411f, 0.9164f, 0.916388f, 0.916376f, 0.916364f, 0.916352f, 0.91634f, 0.916328f, 0.916316f, 0.916304f,
+0.916292f, 0.91628f, 0.916268f, 0.916256f, 0.916244f, 0.916232f, 0.91622f, 0.916208f, 0.916196f, 0.916184f, 0.916172f, 0.916159f, 0.916147f, 0.916135f, 0.916123f, 0.916111f, 0.916099f, 0.916086f, 0.916074f, 0.916062f,
+0.91605f, 0.916038f, 0.916025f, 0.916013f, 0.916001f, 0.915989f, 0.915976f, 0.915964f, 0.915952f, 0.915939f, 0.915927f, 0.915915f, 0.915902f, 0.91589f, 0.915878f, 0.915865f, 0.915853f, 0.91584f, 0.915828f, 0.915816f,
+0.915803f, 0.915791f, 0.915778f, 0.915766f, 0.915753f, 0.915741f, 0.915728f, 0.915716f, 0.915703f, 0.915691f, 0.915678f, 0.915665f, 0.915653f, 0.91564f, 0.915628f, 0.915615f, 0.915602f, 0.91559f, 0.915577f, 0.915564f,
+0.915552f, 0.915539f, 0.915526f, 0.915514f, 0.915501f, 0.915488f, 0.915476f, 0.915463f, 0.91545f, 0.915437f, 0.915424f, 0.915412f, 0.915399f, 0.915386f, 0.915373f, 0.91536f, 0.915347f, 0.915335f, 0.915322f, 0.915309f,
+0.915296f, 0.915283f, 0.91527f, 0.915257f, 0.915244f, 0.915231f, 0.915218f, 0.915205f, 0.915192f, 0.915179f, 0.915166f, 0.915153f, 0.91514f, 0.915127f, 0.915114f, 0.915101f, 0.915088f, 0.915075f, 0.915062f, 0.915049f,
+0.915036f, 0.915022f, 0.915009f, 0.914996f, 0.914983f, 0.91497f, 0.914957f, 0.914943f, 0.91493f, 0.914917f, 0.914904f, 0.914891f, 0.914877f, 0.914864f, 0.914851f, 0.914837f, 0.914824f, 0.914811f, 0.914797f, 0.914784f,
+0.914771f, 0.914757f, 0.914744f, 0.914731f, 0.914717f, 0.914704f, 0.91469f, 0.914677f, 0.914664f, 0.91465f, 0.914637f, 0.914623f, 0.91461f, 0.914596f, 0.914583f, 0.914569f, 0.914556f, 0.914542f, 0.914528f, 0.914515f,
+0.914501f, 0.914488f, 0.914474f, 0.914461f, 0.914447f, 0.914433f, 0.91442f, 0.914406f, 0.914392f, 0.914379f, 0.914365f, 0.914351f, 0.914338f, 0.914324f, 0.91431f, 0.914296f, 0.914283f, 0.914269f, 0.914255f, 0.914241f,
+0.914227f, 0.914214f, 0.9142f, 0.914186f, 0.914172f, 0.914158f, 0.914144f, 0.91413f, 0.914117f, 0.914103f, 0.914089f, 0.914075f, 0.914061f, 0.914047f, 0.914033f, 0.914019f, 0.914005f, 0.913991f, 0.913977f, 0.913963f,
+0.913949f, 0.913935f, 0.913921f, 0.913907f, 0.913893f, 0.913879f, 0.913865f, 0.91385f, 0.913836f, 0.913822f, 0.913808f, 0.913794f, 0.91378f, 0.913766f, 0.913751f, 0.913737f, 0.913723f, 0.913709f, 0.913695f, 0.91368f,
+0.913666f, 0.913652f, 0.913637f, 0.913623f, 0.913609f, 0.913595f, 0.91358f, 0.913566f, 0.913552f, 0.913537f, 0.913523f, 0.913508f, 0.913494f, 0.91348f, 0.913465f, 0.913451f, 0.913436f, 0.913422f, 0.913408f, 0.913393f,
+0.913379f, 0.913364f, 0.91335f, 0.913335f, 0.913321f, 0.913306f, 0.913291f, 0.913277f, 0.913262f, 0.913248f, 0.913233f, 0.913219f, 0.913204f, 0.913189f, 0.913175f, 0.91316f, 0.913145f, 0.913131f, 0.913116f, 0.913101f,
+0.913087f, 0.913072f, 0.913057f, 0.913042f, 0.913028f, 0.913013f, 0.912998f, 0.912983f, 0.912969f, 0.912954f, 0.912939f, 0.912924f, 0.912909f, 0.912894f, 0.91288f, 0.912865f, 0.91285f, 0.912835f, 0.91282f, 0.912805f,
+0.91279f, 0.912775f, 0.91276f, 0.912745f, 0.91273f, 0.912715f, 0.9127f, 0.912685f, 0.91267f, 0.912655f, 0.91264f, 0.912625f, 0.91261f, 0.912595f, 0.91258f, 0.912565f, 0.91255f, 0.912535f, 0.912519f, 0.912504f,
+0.912489f, 0.912474f, 0.912459f, 0.912444f, 0.912428f, 0.912413f, 0.912398f, 0.912383f, 0.912367f, 0.912352f, 0.912337f, 0.912322f, 0.912306f, 0.912291f, 0.912276f, 0.91226f, 0.912245f, 0.91223f, 0.912214f, 0.912199f,
+0.912184f, 0.912168f, 0.912153f, 0.912137f, 0.912122f, 0.912107f, 0.912091f, 0.912076f, 0.91206f, 0.912045f, 0.912029f, 0.912014f, 0.911998f, 0.911983f, 0.911967f, 0.911952f, 0.911936f, 0.91192f, 0.911905f, 0.911889f,
+0.911874f, 0.911858f, 0.911842f, 0.911827f, 0.911811f, 0.911795f, 0.91178f, 0.911764f, 0.911748f, 0.911733f, 0.911717f, 0.911701f, 0.911685f, 0.91167f, 0.911654f, 0.911638f, 0.911622f, 0.911607f, 0.911591f, 0.911575f,
+0.911559f, 0.911543f, 0.911527f, 0.911512f, 0.911496f, 0.91148f, 0.911464f, 0.911448f, 0.911432f, 0.911416f, 0.9114f, 0.911384f, 0.911368f, 0.911352f, 0.911336f, 0.91132f, 0.911304f, 0.911288f, 0.911272f, 0.911256f,
+0.91124f, 0.911224f, 0.911208f, 0.911192f, 0.911176f, 0.91116f, 0.911143f, 0.911127f, 0.911111f, 0.911095f, 0.911079f, 0.911063f, 0.911046f, 0.91103f, 0.911014f, 0.910998f, 0.910982f, 0.910965f, 0.910949f, 0.910933f,
+0.910917f, 0.9109f, 0.910884f, 0.910868f, 0.910851f, 0.910835f, 0.910819f, 0.910802f, 0.910786f, 0.91077f, 0.910753f, 0.910737f, 0.91072f, 0.910704f, 0.910687f, 0.910671f, 0.910655f, 0.910638f, 0.910622f, 0.910605f,
+0.910589f, 0.910572f, 0.910556f, 0.910539f, 0.910522f, 0.910506f, 0.910489f, 0.910473f, 0.910456f, 0.910439f, 0.910423f, 0.910406f, 0.91039f, 0.910373f, 0.910356f, 0.91034f, 0.910323f, 0.910306f, 0.91029f, 0.910273f,
+0.910256f, 0.910239f, 0.910223f, 0.910206f, 0.910189f, 0.910172f, 0.910155f, 0.910139f, 0.910122f, 0.910105f, 0.910088f, 0.910071f, 0.910054f, 0.910038f, 0.910021f, 0.910004f, 0.909987f, 0.90997f, 0.909953f, 0.909936f,
+0.909919f, 0.909902f, 0.909885f, 0.909868f, 0.909851f, 0.909834f, 0.909817f, 0.9098f, 0.909783f, 0.909766f, 0.909749f, 0.909732f, 0.909715f, 0.909698f, 0.909681f, 0.909663f, 0.909646f, 0.909629f, 0.909612f, 0.909595f,
+0.909578f, 0.90956f, 0.909543f, 0.909526f, 0.909509f, 0.909492f, 0.909474f, 0.909457f, 0.90944f, 0.909423f, 0.909405f, 0.909388f, 0.909371f, 0.909353f, 0.909336f, 0.909319f, 0.909301f, 0.909284f, 0.909266f, 0.909249f,
+0.909232f, 0.909214f, 0.909197f, 0.909179f, 0.909162f, 0.909144f, 0.909127f, 0.90911f, 0.909092f, 0.909075f, 0.909057f, 0.909039f, 0.909022f, 0.909004f, 0.908987f, 0.908969f, 0.908952f, 0.908934f, 0.908916f, 0.908899f,
+0.908881f, 0.908864f, 0.908846f, 0.908828f, 0.908811f, 0.908793f, 0.908775f, 0.908758f, 0.90874f, 0.908722f, 0.908704f, 0.908687f, 0.908669f, 0.908651f, 0.908633f, 0.908615f, 0.908598f, 0.90858f, 0.908562f, 0.908544f,
+0.908526f, 0.908508f, 0.908491f, 0.908473f, 0.908455f, 0.908437f, 0.908419f, 0.908401f, 0.908383f, 0.908365f, 0.908347f, 0.908329f, 0.908311f, 0.908293f, 0.908275f, 0.908257f, 0.908239f, 0.908221f, 0.908203f, 0.908185f,
+0.908167f, 0.908149f, 0.908131f, 0.908113f, 0.908095f, 0.908076f, 0.908058f, 0.90804f, 0.908022f, 0.908004f, 0.907986f, 0.907967f, 0.907949f, 0.907931f, 0.907913f, 0.907894f, 0.907876f, 0.907858f, 0.90784f, 0.907821f,
+0.907803f, 0.907785f, 0.907766f, 0.907748f, 0.90773f, 0.907711f, 0.907693f, 0.907675f, 0.907656f, 0.907638f, 0.907619f, 0.907601f, 0.907583f, 0.907564f, 0.907546f, 0.907527f, 0.907509f, 0.90749f, 0.907472f, 0.907453f,
+0.907435f, 0.907416f, 0.907398f, 0.907379f, 0.907361f, 0.907342f, 0.907323f, 0.907305f, 0.907286f, 0.907268f, 0.907249f, 0.90723f, 0.907212f, 0.907193f, 0.907174f, 0.907156f, 0.907137f, 0.907118f, 0.907099f, 0.907081f,
+0.907062f, 0.907043f, 0.907024f, 0.907006f, 0.906987f, 0.906968f, 0.906949f, 0.90693f, 0.906912f, 0.906893f, 0.906874f, 0.906855f, 0.906836f, 0.906817f, 0.906798f, 0.906779f, 0.906761f, 0.906742f, 0.906723f, 0.906704f,
+0.906685f, 0.906666f, 0.906647f, 0.906628f, 0.906609f, 0.90659f, 0.906571f, 0.906552f, 0.906533f, 0.906513f, 0.906494f, 0.906475f, 0.906456f, 0.906437f, 0.906418f, 0.906399f, 0.90638f, 0.906361f, 0.906341f, 0.906322f,
+0.906303f, 0.906284f, 0.906265f, 0.906245f, 0.906226f, 0.906207f, 0.906188f, 0.906168f, 0.906149f, 0.90613f, 0.90611f, 0.906091f, 0.906072f, 0.906052f, 0.906033f, 0.906014f, 0.905994f, 0.905975f, 0.905956f, 0.905936f,
+0.905917f, 0.905897f, 0.905878f, 0.905858f, 0.905839f, 0.90582f, 0.9058f, 0.905781f, 0.905761f, 0.905742f, 0.905722f, 0.905703f, 0.905683f, 0.905663f, 0.905644f, 0.905624f, 0.905605f, 0.905585f, 0.905565f, 0.905546f,
+0.905526f, 0.905507f, 0.905487f, 0.905467f, 0.905448f, 0.905428f, 0.905408f, 0.905388f, 0.905369f, 0.905349f, 0.905329f, 0.905309f, 0.90529f, 0.90527f, 0.90525f, 0.90523f, 0.90521f, 0.905191f, 0.905171f, 0.905151f,
+0.905131f, 0.905111f, 0.905091f, 0.905071f, 0.905052f, 0.905032f, 0.905012f, 0.904992f, 0.904972f, 0.904952f, 0.904932f, 0.904912f, 0.904892f, 0.904872f, 0.904852f, 0.904832f, 0.904812f, 0.904792f, 0.904772f, 0.904752f,
+0.904732f, 0.904711f, 0.904691f, 0.904671f, 0.904651f, 0.904631f, 0.904611f, 0.904591f, 0.90457f, 0.90455f, 0.90453f, 0.90451f, 0.90449f, 0.904469f, 0.904449f, 0.904429f, 0.904409f, 0.904388f, 0.904368f, 0.904348f,
+0.904328f, 0.904307f, 0.904287f, 0.904267f, 0.904246f, 0.904226f, 0.904205f, 0.904185f, 0.904165f, 0.904144f, 0.904124f, 0.904103f, 0.904083f, 0.904063f, 0.904042f, 0.904022f, 0.904001f, 0.903981f, 0.90396f, 0.90394f,
+0.903919f, 0.903899f, 0.903878f, 0.903857f, 0.903837f, 0.903816f, 0.903796f, 0.903775f, 0.903754f, 0.903734f, 0.903713f, 0.903693f, 0.903672f, 0.903651f, 0.903631f, 0.90361f, 0.903589f, 0.903568f, 0.903548f, 0.903527f,
+0.903506f, 0.903485f, 0.903465f, 0.903444f, 0.903423f, 0.903402f, 0.903381f, 0.903361f, 0.90334f, 0.903319f, 0.903298f, 0.903277f, 0.903256f, 0.903235f, 0.903215f, 0.903194f, 0.903173f, 0.903152f, 0.903131f, 0.90311f,
+0.903089f, 0.903068f, 0.903047f, 0.903026f, 0.903005f, 0.902984f, 0.902963f, 0.902942f, 0.902921f, 0.9029f, 0.902879f, 0.902857f, 0.902836f, 0.902815f, 0.902794f, 0.902773f, 0.902752f, 0.902731f, 0.90271f, 0.902688f,
+0.902667f, 0.902646f, 0.902625f, 0.902603f, 0.902582f, 0.902561f, 0.90254f, 0.902518f, 0.902497f, 0.902476f, 0.902455f, 0.902433f, 0.902412f, 0.902391f, 0.902369f, 0.902348f, 0.902327f, 0.902305f, 0.902284f, 0.902262f,
+0.902241f, 0.90222f, 0.902198f, 0.902177f, 0.902155f, 0.902134f, 0.902112f, 0.902091f, 0.902069f, 0.902048f, 0.902026f, 0.902005f, 0.901983f, 0.901962f, 0.90194f, 0.901918f, 0.901897f, 0.901875f, 0.901854f, 0.901832f,
+0.90181f, 0.901789f, 0.901767f, 0.901745f, 0.901724f, 0.901702f, 0.90168f, 0.901659f, 0.901637f, 0.901615f, 0.901593f, 0.901572f, 0.90155f, 0.901528f, 0.901506f, 0.901484f, 0.901463f, 0.901441f, 0.901419f, 0.901397f,
+0.901375f, 0.901353f, 0.901332f, 0.90131f, 0.901288f, 0.901266f, 0.901244f, 0.901222f, 0.9012f, 0.901178f, 0.901156f, 0.901134f, 0.901112f, 0.90109f, 0.901068f, 0.901046f, 0.901024f, 0.901002f, 0.90098f, 0.900958f,
+0.900936f, 0.900914f, 0.900892f, 0.90087f, 0.900847f, 0.900825f, 0.900803f, 0.900781f, 0.900759f, 0.900737f, 0.900714f, 0.900692f, 0.90067f, 0.900648f, 0.900626f, 0.900603f, 0.900581f, 0.900559f, 0.900537f, 0.900514f,
+0.900492f, 0.90047f, 0.900447f, 0.900425f, 0.900403f, 0.90038f, 0.900358f, 0.900336f, 0.900313f, 0.900291f, 0.900268f, 0.900246f, 0.900223f, 0.900201f, 0.900179f, 0.900156f, 0.900134f, 0.900111f, 0.900089f, 0.900066f,
+0.900044f, 0.900021f, 0.899999f, 0.899976f, 0.899953f, 0.899931f, 0.899908f, 0.899886f, 0.899863f, 0.89984f, 0.899818f, 0.899795f, 0.899773f, 0.89975f, 0.899727f, 0.899704f, 0.899682f, 0.899659f, 0.899636f, 0.899614f,
+0.899591f, 0.899568f, 0.899545f, 0.899523f, 0.8995f, 0.899477f, 0.899454f, 0.899431f, 0.899409f, 0.899386f, 0.899363f, 0.89934f, 0.899317f, 0.899294f, 0.899271f, 0.899248f, 0.899226f, 0.899203f, 0.89918f, 0.899157f,
+0.899134f, 0.899111f, 0.899088f, 0.899065f, 0.899042f, 0.899019f, 0.898996f, 0.898973f, 0.89895f, 0.898927f, 0.898904f, 0.89888f, 0.898857f, 0.898834f, 0.898811f, 0.898788f, 0.898765f, 0.898742f, 0.898719f, 0.898695f,
+0.898672f, 0.898649f, 0.898626f, 0.898603f, 0.898579f, 0.898556f, 0.898533f, 0.89851f, 0.898486f, 0.898463f, 0.89844f, 0.898416f, 0.898393f, 0.89837f, 0.898347f, 0.898323f, 0.8983f, 0.898276f, 0.898253f, 0.89823f,
+0.898206f, 0.898183f, 0.898159f, 0.898136f, 0.898113f, 0.898089f, 0.898066f, 0.898042f, 0.898019f, 0.897995f, 0.897972f, 0.897948f, 0.897925f, 0.897901f, 0.897877f, 0.897854f, 0.89783f, 0.897807f, 0.897783f, 0.89776f,
+0.897736f, 0.897712f, 0.897689f, 0.897665f, 0.897641f, 0.897618f, 0.897594f, 0.89757f, 0.897547f, 0.897523f, 0.897499f, 0.897475f, 0.897452f, 0.897428f, 0.897404f, 0.89738f, 0.897356f, 0.897333f, 0.897309f, 0.897285f,
+0.897261f, 0.897237f, 0.897213f, 0.89719f, 0.897166f, 0.897142f, 0.897118f, 0.897094f, 0.89707f, 0.897046f, 0.897022f, 0.896998f, 0.896974f, 0.89695f, 0.896926f, 0.896902f, 0.896878f, 0.896854f, 0.89683f, 0.896806f,
+0.896782f, 0.896758f, 0.896734f, 0.89671f, 0.896686f, 0.896662f, 0.896637f, 0.896613f, 0.896589f, 0.896565f, 0.896541f, 0.896517f, 0.896492f, 0.896468f, 0.896444f, 0.89642f, 0.896396f, 0.896371f, 0.896347f, 0.896323f,
+0.896299f, 0.896274f, 0.89625f, 0.896226f, 0.896201f, 0.896177f, 0.896153f, 0.896128f, 0.896104f, 0.896079f, 0.896055f, 0.896031f, 0.896006f, 0.895982f, 0.895957f, 0.895933f, 0.895909f, 0.895884f, 0.89586f, 0.895835f,
+0.895811f, 0.895786f, 0.895762f, 0.895737f, 0.895712f, 0.895688f, 0.895663f, 0.895639f, 0.895614f, 0.89559f, 0.895565f, 0.89554f, 0.895516f, 0.895491f, 0.895466f, 0.895442f, 0.895417f, 0.895392f, 0.895368f, 0.895343f,
+0.895318f, 0.895294f, 0.895269f, 0.895244f, 0.895219f, 0.895195f, 0.89517f, 0.895145f, 0.89512f, 0.895095f, 0.89507f, 0.895046f, 0.895021f, 0.894996f, 0.894971f, 0.894946f, 0.894921f, 0.894896f, 0.894871f, 0.894847f,
+0.894822f, 0.894797f, 0.894772f, 0.894747f, 0.894722f, 0.894697f, 0.894672f, 0.894647f, 0.894622f, 0.894597f, 0.894572f, 0.894547f, 0.894521f, 0.894496f, 0.894471f, 0.894446f, 0.894421f, 0.894396f, 0.894371f, 0.894346f,
+0.894321f, 0.894295f, 0.89427f, 0.894245f, 0.89422f, 0.894195f, 0.894169f, 0.894144f, 0.894119f, 0.894094f, 0.894068f, 0.894043f, 0.894018f, 0.893993f, 0.893967f, 0.893942f, 0.893917f, 0.893891f, 0.893866f, 0.89384f,
+0.893815f, 0.89379f, 0.893764f, 0.893739f, 0.893714f, 0.893688f, 0.893663f, 0.893637f, 0.893612f, 0.893586f, 0.893561f, 0.893535f, 0.89351f, 0.893484f, 0.893459f, 0.893433f, 0.893408f, 0.893382f, 0.893356f, 0.893331f,
+0.893305f, 0.89328f, 0.893254f, 0.893228f, 0.893203f, 0.893177f, 0.893152f, 0.893126f, 0.8931f, 0.893074f, 0.893049f, 0.893023f, 0.892997f, 0.892972f, 0.892946f, 0.89292f, 0.892894f, 0.892869f, 0.892843f, 0.892817f,
+0.892791f, 0.892765f, 0.892739f, 0.892714f, 0.892688f, 0.892662f, 0.892636f, 0.89261f, 0.892584f, 0.892558f, 0.892532f, 0.892506f, 0.892481f, 0.892455f, 0.892429f, 0.892403f, 0.892377f, 0.892351f, 0.892325f, 0.892299f,
+0.892273f, 0.892247f, 0.892221f, 0.892194f, 0.892168f, 0.892142f, 0.892116f, 0.89209f, 0.892064f, 0.892038f, 0.892012f, 0.891986f, 0.891959f, 0.891933f, 0.891907f, 0.891881f, 0.891855f, 0.891828f, 0.891802f, 0.891776f,
+0.89175f, 0.891723f, 0.891697f, 0.891671f, 0.891645f, 0.891618f, 0.891592f, 0.891566f, 0.891539f, 0.891513f, 0.891487f, 0.89146f, 0.891434f, 0.891407f, 0.891381f, 0.891355f, 0.891328f, 0.891302f, 0.891275f, 0.891249f,
+0.891222f, 0.891196f, 0.891169f, 0.891143f, 0.891116f, 0.89109f, 0.891063f, 0.891037f, 0.89101f, 0.890984f, 0.890957f, 0.890931f, 0.890904f, 0.890877f, 0.890851f, 0.890824f, 0.890798f, 0.890771f, 0.890744f, 0.890718f,
+0.890691f, 0.890664f, 0.890637f, 0.890611f, 0.890584f, 0.890557f, 0.890531f, 0.890504f, 0.890477f, 0.89045f, 0.890423f, 0.890397f, 0.89037f, 0.890343f, 0.890316f, 0.890289f, 0.890262f, 0.890236f, 0.890209f, 0.890182f,
+0.890155f, 0.890128f, 0.890101f, 0.890074f, 0.890047f, 0.89002f, 0.889993f, 0.889966f, 0.889939f, 0.889912f, 0.889885f, 0.889858f, 0.889831f, 0.889804f, 0.889777f, 0.88975f, 0.889723f, 0.889696f, 0.889669f, 0.889642f,
+0.889615f, 0.889587f, 0.88956f, 0.889533f, 0.889506f, 0.889479f, 0.889452f, 0.889424f, 0.889397f, 0.88937f, 0.889343f, 0.889316f, 0.889288f, 0.889261f, 0.889234f, 0.889207f, 0.889179f, 0.889152f, 0.889125f, 0.889097f,
+0.88907f, 0.889043f, 0.889015f, 0.888988f, 0.888961f, 0.888933f, 0.888906f, 0.888878f, 0.888851f, 0.888823f, 0.888796f, 0.888769f, 0.888741f, 0.888714f, 0.888686f, 0.888659f, 0.888631f, 0.888604f, 0.888576f, 0.888549f,
+0.888521f, 0.888493f, 0.888466f, 0.888438f, 0.888411f, 0.888383f, 0.888355f, 0.888328f, 0.8883f, 0.888273f, 0.888245f, 0.888217f, 0.88819f, 0.888162f, 0.888134f, 0.888106f, 0.888079f, 0.888051f, 0.888023f, 0.887995f,
+0.887968f, 0.88794f, 0.887912f, 0.887884f, 0.887857f, 0.887829f, 0.887801f, 0.887773f, 0.887745f, 0.887717f, 0.887689f, 0.887662f, 0.887634f, 0.887606f, 0.887578f, 0.88755f, 0.887522f, 0.887494f, 0.887466f, 0.887438f,
+0.88741f, 0.887382f, 0.887354f, 0.887326f, 0.887298f, 0.88727f, 0.887242f, 0.887214f, 0.887186f, 0.887158f, 0.88713f, 0.887102f, 0.887073f, 0.887045f, 0.887017f, 0.886989f, 0.886961f, 0.886933f, 0.886905f, 0.886876f,
+0.886848f, 0.88682f, 0.886792f, 0.886763f, 0.886735f, 0.886707f, 0.886679f, 0.88665f, 0.886622f, 0.886594f, 0.886566f, 0.886537f, 0.886509f, 0.886481f, 0.886452f, 0.886424f, 0.886395f, 0.886367f, 0.886339f, 0.88631f,
+0.886282f, 0.886253f, 0.886225f, 0.886197f, 0.886168f, 0.88614f, 0.886111f, 0.886083f, 0.886054f, 0.886026f, 0.885997f, 0.885969f, 0.88594f, 0.885911f, 0.885883f, 0.885854f, 0.885826f, 0.885797f, 0.885769f, 0.88574f,
+0.885711f, 0.885683f, 0.885654f, 0.885625f, 0.885597f, 0.885568f, 0.885539f, 0.885511f, 0.885482f, 0.885453f, 0.885424f, 0.885396f, 0.885367f, 0.885338f, 0.885309f, 0.88528f, 0.885252f, 0.885223f, 0.885194f, 0.885165f,
+0.885136f, 0.885107f, 0.885079f, 0.88505f, 0.885021f, 0.884992f, 0.884963f, 0.884934f, 0.884905f, 0.884876f, 0.884847f, 0.884818f, 0.884789f, 0.88476f, 0.884731f, 0.884702f, 0.884673f, 0.884644f, 0.884615f, 0.884586f,
+0.884557f, 0.884528f, 0.884499f, 0.88447f, 0.884441f, 0.884412f, 0.884383f, 0.884353f, 0.884324f, 0.884295f, 0.884266f, 0.884237f, 0.884208f, 0.884178f, 0.884149f, 0.88412f, 0.884091f, 0.884061f, 0.884032f, 0.884003f,
+0.883974f, 0.883944f, 0.883915f, 0.883886f, 0.883856f, 0.883827f, 0.883798f, 0.883768f, 0.883739f, 0.88371f, 0.88368f, 0.883651f, 0.883621f, 0.883592f, 0.883563f, 0.883533f, 0.883504f, 0.883474f, 0.883445f, 0.883415f,
+0.883386f, 0.883356f, 0.883327f, 0.883297f, 0.883268f, 0.883238f, 0.883209f, 0.883179f, 0.883149f, 0.88312f, 0.88309f, 0.883061f, 0.883031f, 0.883001f, 0.882972f, 0.882942f, 0.882912f, 0.882883f, 0.882853f, 0.882823f,
+0.882794f, 0.882764f, 0.882734f, 0.882704f, 0.882675f, 0.882645f, 0.882615f, 0.882585f, 0.882556f, 0.882526f, 0.882496f, 0.882466f, 0.882436f, 0.882406f, 0.882377f, 0.882347f, 0.882317f, 0.882287f, 0.882257f, 0.882227f,
+0.882197f, 0.882167f, 0.882137f, 0.882107f, 0.882077f, 0.882047f, 0.882017f, 0.881987f, 0.881957f, 0.881927f, 0.881897f, 0.881867f, 0.881837f, 0.881807f, 0.881777f, 0.881747f, 0.881717f, 0.881687f, 0.881657f, 0.881627f,
+0.881597f, 0.881566f, 0.881536f, 0.881506f, 0.881476f, 0.881446f, 0.881415f, 0.881385f, 0.881355f, 0.881325f, 0.881295f, 0.881264f, 0.881234f, 0.881204f, 0.881173f, 0.881143f, 0.881113f, 0.881083f, 0.881052f, 0.881022f,
+0.880992f, 0.880961f, 0.880931f, 0.8809f, 0.88087f, 0.88084f, 0.880809f, 0.880779f, 0.880748f, 0.880718f, 0.880687f, 0.880657f, 0.880626f, 0.880596f, 0.880566f, 0.880535f, 0.880504f, 0.880474f, 0.880443f, 0.880413f,
+0.880382f, 0.880352f, 0.880321f, 0.880291f, 0.88026f, 0.880229f, 0.880199f, 0.880168f, 0.880137f, 0.880107f, 0.880076f, 0.880045f, 0.880015f, 0.879984f, 0.879953f, 0.879923f, 0.879892f, 0.879861f, 0.87983f, 0.8798f,
+0.879769f, 0.879738f, 0.879707f, 0.879676f, 0.879646f, 0.879615f, 0.879584f, 0.879553f, 0.879522f, 0.879491f, 0.87946f, 0.879429f, 0.879399f, 0.879368f, 0.879337f, 0.879306f, 0.879275f, 0.879244f, 0.879213f, 0.879182f,
+0.879151f, 0.87912f, 0.879089f, 0.879058f, 0.879027f, 0.878996f, 0.878965f, 0.878934f, 0.878903f, 0.878872f, 0.87884f, 0.878809f, 0.878778f, 0.878747f, 0.878716f, 0.878685f, 0.878654f, 0.878622f, 0.878591f, 0.87856f,
+0.878529f, 0.878498f, 0.878466f, 0.878435f, 0.878404f, 0.878373f, 0.878341f, 0.87831f, 0.878279f, 0.878247f, 0.878216f, 0.878185f, 0.878154f, 0.878122f, 0.878091f, 0.878059f, 0.878028f, 0.877997f, 0.877965f, 0.877934f,
+0.877902f, 0.877871f, 0.87784f, 0.877808f, 0.877777f, 0.877745f, 0.877714f, 0.877682f, 0.877651f, 0.877619f, 0.877588f, 0.877556f, 0.877525f, 0.877493f, 0.877462f, 0.87743f, 0.877398f, 0.877367f, 0.877335f, 0.877304f,
+0.877272f, 0.87724f, 0.877209f, 0.877177f, 0.877145f, 0.877114f, 0.877082f, 0.87705f, 0.877018f, 0.876987f, 0.876955f, 0.876923f, 0.876891f, 0.87686f, 0.876828f, 0.876796f, 0.876764f, 0.876733f, 0.876701f, 0.876669f,
+0.876637f, 0.876605f, 0.876573f, 0.876541f, 0.87651f, 0.876478f, 0.876446f, 0.876414f, 0.876382f, 0.87635f, 0.876318f, 0.876286f, 0.876254f, 0.876222f, 0.87619f, 0.876158f, 0.876126f, 0.876094f, 0.876062f, 0.87603f,
+0.875998f, 0.875966f, 0.875934f, 0.875902f, 0.87587f, 0.875837f, 0.875805f, 0.875773f, 0.875741f, 0.875709f, 0.875677f, 0.875645f, 0.875612f, 0.87558f, 0.875548f, 0.875516f, 0.875484f, 0.875451f, 0.875419f, 0.875387f,
+0.875355f, 0.875322f, 0.87529f, 0.875258f, 0.875225f, 0.875193f, 0.875161f, 0.875128f, 0.875096f, 0.875064f, 0.875031f, 0.874999f, 0.874966f, 0.874934f, 0.874902f, 0.874869f, 0.874837f, 0.874804f, 0.874772f, 0.874739f,
+0.874707f, 0.874674f, 0.874642f, 0.874609f, 0.874577f, 0.874544f, 0.874512f, 0.874479f, 0.874447f, 0.874414f, 0.874382f, 0.874349f, 0.874316f, 0.874284f, 0.874251f, 0.874218f, 0.874186f, 0.874153f, 0.87412f, 0.874088f,
+0.874055f, 0.874022f, 0.87399f, 0.873957f, 0.873924f, 0.873891f, 0.873859f, 0.873826f, 0.873793f, 0.87376f, 0.873728f, 0.873695f, 0.873662f, 0.873629f, 0.873596f, 0.873563f, 0.873531f, 0.873498f, 0.873465f, 0.873432f,
+0.873399f, 0.873366f, 0.873333f, 0.8733f, 0.873267f, 0.873234f, 0.873201f, 0.873168f, 0.873135f, 0.873102f, 0.873069f, 0.873036f, 0.873003f, 0.87297f, 0.872937f, 0.872904f, 0.872871f, 0.872838f, 0.872805f, 0.872772f,
+0.872739f, 0.872706f, 0.872672f, 0.872639f, 0.872606f, 0.872573f, 0.87254f, 0.872507f, 0.872473f, 0.87244f, 0.872407f, 0.872374f, 0.872341f, 0.872307f, 0.872274f, 0.872241f, 0.872207f, 0.872174f, 0.872141f, 0.872108f,
+0.872074f, 0.872041f, 0.872008f, 0.871974f, 0.871941f, 0.871907f, 0.871874f, 0.871841f, 0.871807f, 0.871774f, 0.87174f, 0.871707f, 0.871673f, 0.87164f, 0.871607f, 0.871573f, 0.87154f, 0.871506f, 0.871473f, 0.871439f,
+0.871405f, 0.871372f, 0.871338f, 0.871305f, 0.871271f, 0.871238f, 0.871204f, 0.87117f, 0.871137f, 0.871103f, 0.87107f, 0.871036f, 0.871002f, 0.870969f, 0.870935f, 0.870901f, 0.870867f, 0.870834f, 0.8708f, 0.870766f,
+0.870733f, 0.870699f, 0.870665f, 0.870631f, 0.870597f, 0.870564f, 0.87053f, 0.870496f, 0.870462f, 0.870428f, 0.870394f, 0.870361f, 0.870327f, 0.870293f, 0.870259f, 0.870225f, 0.870191f, 0.870157f, 0.870123f, 0.870089f,
+0.870055f, 0.870021f, 0.869987f, 0.869953f, 0.869919f, 0.869885f, 0.869851f, 0.869817f, 0.869783f, 0.869749f, 0.869715f, 0.869681f, 0.869647f, 0.869613f, 0.869579f, 0.869545f, 0.869511f, 0.869476f, 0.869442f, 0.869408f,
+0.869374f, 0.86934f, 0.869306f, 0.869271f, 0.869237f, 0.869203f, 0.869169f, 0.869135f, 0.8691f, 0.869066f, 0.869032f, 0.868997f, 0.868963f, 0.868929f, 0.868895f, 0.86886f, 0.868826f, 0.868792f, 0.868757f, 0.868723f,
+0.868688f, 0.868654f, 0.86862f, 0.868585f, 0.868551f, 0.868516f, 0.868482f, 0.868448f, 0.868413f, 0.868379f, 0.868344f, 0.86831f, 0.868275f, 0.868241f, 0.868206f, 0.868172f, 0.868137f, 0.868102f, 0.868068f, 0.868033f,
+0.867999f, 0.867964f, 0.867929f, 0.867895f, 0.86786f, 0.867826f, 0.867791f, 0.867756f, 0.867722f, 0.867687f, 0.867652f, 0.867618f, 0.867583f, 0.867548f, 0.867513f, 0.867479f, 0.867444f, 0.867409f, 0.867374f, 0.86734f,
+0.867305f, 0.86727f, 0.867235f, 0.8672f, 0.867165f, 0.867131f, 0.867096f, 0.867061f, 0.867026f, 0.866991f, 0.866956f, 0.866921f, 0.866886f, 0.866851f, 0.866816f, 0.866782f, 0.866747f, 0.866712f, 0.866677f, 0.866642f,
+0.866607f, 0.866572f, 0.866537f, 0.866502f, 0.866466f, 0.866431f, 0.866396f, 0.866361f, 0.866326f, 0.866291f, 0.866256f, 0.866221f, 0.866186f, 0.866151f, 0.866115f, 0.86608f, 0.866045f, 0.86601f, 0.865975f, 0.865939f,
+0.865904f, 0.865869f, 0.865834f, 0.865799f, 0.865763f, 0.865728f, 0.865693f, 0.865657f, 0.865622f, 0.865587f, 0.865552f, 0.865516f, 0.865481f, 0.865446f, 0.86541f, 0.865375f, 0.865339f, 0.865304f, 0.865269f, 0.865233f,
+0.865198f, 0.865162f, 0.865127f, 0.865091f, 0.865056f, 0.865021f, 0.864985f, 0.86495f, 0.864914f, 0.864879f, 0.864843f, 0.864807f, 0.864772f, 0.864736f, 0.864701f, 0.864665f, 0.86463f, 0.864594f, 0.864558f, 0.864523f,
+0.864487f, 0.864451f, 0.864416f, 0.86438f, 0.864344f, 0.864309f, 0.864273f, 0.864237f, 0.864202f, 0.864166f, 0.86413f, 0.864094f, 0.864059f, 0.864023f, 0.863987f, 0.863951f, 0.863916f, 0.86388f, 0.863844f, 0.863808f,
+0.863772f, 0.863736f, 0.863701f, 0.863665f, 0.863629f, 0.863593f, 0.863557f, 0.863521f, 0.863485f, 0.863449f, 0.863413f, 0.863377f, 0.863341f, 0.863305f, 0.863269f, 0.863233f, 0.863197f, 0.863161f, 0.863125f, 0.863089f,
+0.863053f, 0.863017f, 0.862981f, 0.862945f, 0.862909f, 0.862873f, 0.862837f, 0.862801f, 0.862765f, 0.862728f, 0.862692f, 0.862656f, 0.86262f, 0.862584f, 0.862548f, 0.862511f, 0.862475f, 0.862439f, 0.862403f, 0.862366f,
+0.86233f, 0.862294f, 0.862258f, 0.862221f, 0.862185f, 0.862149f, 0.862112f, 0.862076f, 0.86204f, 0.862003f, 0.861967f, 0.861931f, 0.861894f, 0.861858f, 0.861821f, 0.861785f, 0.861749f, 0.861712f, 0.861676f, 0.861639f,
+0.861603f, 0.861566f, 0.86153f, 0.861493f, 0.861457f, 0.86142f, 0.861384f, 0.861347f, 0.861311f, 0.861274f, 0.861238f, 0.861201f, 0.861164f, 0.861128f, 0.861091f, 0.861055f, 0.861018f, 0.860981f, 0.860945f, 0.860908f,
+0.860871f, 0.860835f, 0.860798f, 0.860761f, 0.860725f, 0.860688f, 0.860651f, 0.860614f, 0.860578f, 0.860541f, 0.860504f, 0.860467f, 0.860431f, 0.860394f, 0.860357f, 0.86032f, 0.860283f, 0.860246f, 0.86021f, 0.860173f,
+0.860136f, 0.860099f, 0.860062f, 0.860025f, 0.859988f, 0.859951f, 0.859914f, 0.859877f, 0.85984f, 0.859803f, 0.859766f, 0.859729f, 0.859692f, 0.859655f, 0.859618f, 0.859581f, 0.859544f, 0.859507f, 0.85947f, 0.859433f,
+0.859396f, 0.859359f, 0.859322f, 0.859285f, 0.859248f, 0.859211f, 0.859173f, 0.859136f, 0.859099f, 0.859062f, 0.859025f, 0.858987f, 0.85895f, 0.858913f, 0.858876f, 0.858839f, 0.858801f, 0.858764f, 0.858727f, 0.85869f,
+0.858652f, 0.858615f, 0.858578f, 0.85854f, 0.858503f, 0.858466f, 0.858428f, 0.858391f, 0.858354f, 0.858316f, 0.858279f, 0.858241f, 0.858204f, 0.858167f, 0.858129f, 0.858092f, 0.858054f, 0.858017f, 0.857979f, 0.857942f,
+0.857904f, 0.857867f, 0.857829f, 0.857792f, 0.857754f, 0.857717f, 0.857679f, 0.857641f, 0.857604f, 0.857566f, 0.857529f, 0.857491f, 0.857453f, 0.857416f, 0.857378f, 0.857341f, 0.857303f, 0.857265f, 0.857228f, 0.85719f,
+0.857152f, 0.857114f, 0.857077f, 0.857039f, 0.857001f, 0.856963f, 0.856926f, 0.856888f, 0.85685f, 0.856812f, 0.856775f, 0.856737f, 0.856699f, 0.856661f, 0.856623f, 0.856585f, 0.856548f, 0.85651f, 0.856472f, 0.856434f,
+0.856396f, 0.856358f, 0.85632f, 0.856282f, 0.856244f, 0.856206f, 0.856168f, 0.85613f, 0.856092f, 0.856054f, 0.856016f, 0.855978f, 0.85594f, 0.855902f, 0.855864f, 0.855826f, 0.855788f, 0.85575f, 0.855712f, 0.855674f,
+0.855636f, 0.855597f, 0.855559f, 0.855521f, 0.855483f, 0.855445f, 0.855407f, 0.855369f, 0.85533f, 0.855292f, 0.855254f, 0.855216f, 0.855177f, 0.855139f, 0.855101f, 0.855063f, 0.855024f, 0.854986f, 0.854948f, 0.854909f,
+0.854871f, 0.854833f, 0.854794f, 0.854756f, 0.854718f, 0.854679f, 0.854641f, 0.854603f, 0.854564f, 0.854526f, 0.854487f, 0.854449f, 0.854411f, 0.854372f, 0.854334f, 0.854295f, 0.854257f, 0.854218f, 0.85418f, 0.854141f,
+0.854103f, 0.854064f, 0.854026f, 0.853987f, 0.853948f, 0.85391f, 0.853871f, 0.853833f, 0.853794f, 0.853755f, 0.853717f, 0.853678f, 0.85364f, 0.853601f, 0.853562f, 0.853524f, 0.853485f, 0.853446f, 0.853407f, 0.853369f,
+0.85333f, 0.853291f, 0.853253f, 0.853214f, 0.853175f, 0.853136f, 0.853097f, 0.853059f, 0.85302f, 0.852981f, 0.852942f, 0.852903f, 0.852864f, 0.852826f, 0.852787f, 0.852748f, 0.852709f, 0.85267f, 0.852631f, 0.852592f,
+0.852553f, 0.852514f, 0.852475f, 0.852436f, 0.852397f, 0.852358f, 0.852319f, 0.85228f, 0.852241f, 0.852202f, 0.852163f, 0.852124f, 0.852085f, 0.852046f, 0.852007f, 0.851968f, 0.851929f, 0.85189f, 0.851851f, 0.851812f,
+0.851772f, 0.851733f, 0.851694f, 0.851655f, 0.851616f, 0.851577f, 0.851537f, 0.851498f, 0.851459f, 0.85142f, 0.851381f, 0.851341f, 0.851302f, 0.851263f, 0.851223f, 0.851184f, 0.851145f, 0.851106f, 0.851066f, 0.851027f,
+0.850988f, 0.850948f, 0.850909f, 0.85087f, 0.85083f, 0.850791f, 0.850751f, 0.850712f, 0.850672f, 0.850633f, 0.850594f, 0.850554f, 0.850515f, 0.850475f, 0.850436f, 0.850396f, 0.850357f, 0.850317f, 0.850278f, 0.850238f,
+0.850199f, 0.850159f, 0.85012f, 0.85008f, 0.85004f, 0.850001f, 0.849961f, 0.849922f, 0.849882f, 0.849842f, 0.849803f, 0.849763f, 0.849723f, 0.849684f, 0.849644f, 0.849604f, 0.849565f, 0.849525f, 0.849485f, 0.849445f,
+0.849406f, 0.849366f, 0.849326f, 0.849286f, 0.849247f, 0.849207f, 0.849167f, 0.849127f, 0.849087f, 0.849047f, 0.849008f, 0.848968f, 0.848928f, 0.848888f, 0.848848f, 0.848808f, 0.848768f, 0.848728f, 0.848688f, 0.848648f,
+0.848609f, 0.848569f, 0.848529f, 0.848489f, 0.848449f, 0.848409f, 0.848369f, 0.848329f, 0.848289f, 0.848249f, 0.848208f, 0.848168f, 0.848128f, 0.848088f, 0.848048f, 0.848008f, 0.847968f, 0.847928f, 0.847888f, 0.847848f,
+0.847807f, 0.847767f, 0.847727f, 0.847687f, 0.847647f, 0.847606f, 0.847566f, 0.847526f, 0.847486f, 0.847446f, 0.847405f, 0.847365f, 0.847325f, 0.847284f, 0.847244f, 0.847204f, 0.847164f, 0.847123f, 0.847083f, 0.847043f,
+0.847002f, 0.846962f, 0.846921f, 0.846881f, 0.846841f, 0.8468f, 0.84676f, 0.846719f, 0.846679f, 0.846639f, 0.846598f, 0.846558f, 0.846517f, 0.846477f, 0.846436f, 0.846396f, 0.846355f, 0.846315f, 0.846274f, 0.846233f,
+0.846193f, 0.846152f, 0.846112f, 0.846071f, 0.846031f, 0.84599f, 0.845949f, 0.845909f, 0.845868f, 0.845827f, 0.845787f, 0.845746f, 0.845705f, 0.845665f, 0.845624f, 0.845583f, 0.845543f, 0.845502f, 0.845461f, 0.84542f,
+0.84538f, 0.845339f, 0.845298f, 0.845257f, 0.845217f, 0.845176f, 0.845135f, 0.845094f, 0.845053f, 0.845012f, 0.844971f, 0.844931f, 0.84489f, 0.844849f, 0.844808f, 0.844767f, 0.844726f, 0.844685f, 0.844644f, 0.844603f,
+0.844562f, 0.844521f, 0.84448f, 0.844439f, 0.844398f, 0.844357f, 0.844316f, 0.844275f, 0.844234f, 0.844193f, 0.844152f, 0.844111f, 0.84407f, 0.844029f, 0.843988f, 0.843947f, 0.843906f, 0.843864f, 0.843823f, 0.843782f,
+0.843741f, 0.8437f, 0.843659f, 0.843617f, 0.843576f, 0.843535f, 0.843494f, 0.843453f, 0.843411f, 0.84337f, 0.843329f, 0.843288f, 0.843246f, 0.843205f, 0.843164f, 0.843122f, 0.843081f, 0.84304f, 0.842998f, 0.842957f,
+0.842916f, 0.842874f, 0.842833f, 0.842791f, 0.84275f, 0.842709f, 0.842667f, 0.842626f, 0.842584f, 0.842543f, 0.842501f, 0.84246f, 0.842418f, 0.842377f, 0.842335f, 0.842294f, 0.842252f, 0.842211f, 0.842169f, 0.842128f,
+0.842086f, 0.842045f, 0.842003f, 0.841961f, 0.84192f, 0.841878f, 0.841837f, 0.841795f, 0.841753f, 0.841712f, 0.84167f, 0.841628f, 0.841587f, 0.841545f, 0.841503f, 0.841462f, 0.84142f, 0.841378f, 0.841336f, 0.841295f,
+0.841253f, 0.841211f, 0.841169f, 0.841127f, 0.841086f, 0.841044f, 0.841002f, 0.84096f, 0.840918f, 0.840876f, 0.840835f, 0.840793f, 0.840751f, 0.840709f, 0.840667f, 0.840625f, 0.840583f, 0.840541f, 0.840499f, 0.840457f,
+0.840415f, 0.840373f, 0.840331f, 0.840289f, 0.840247f, 0.840205f, 0.840163f, 0.840121f, 0.840079f, 0.840037f, 0.839995f, 0.839953f, 0.839911f, 0.839869f, 0.839827f, 0.839785f, 0.839743f, 0.8397f, 0.839658f, 0.839616f,
+0.839574f, 0.839532f, 0.83949f, 0.839447f, 0.839405f, 0.839363f, 0.839321f, 0.839279f, 0.839236f, 0.839194f, 0.839152f, 0.83911f, 0.839067f, 0.839025f, 0.838983f, 0.83894f, 0.838898f, 0.838856f, 0.838813f, 0.838771f,
+0.838729f, 0.838686f, 0.838644f, 0.838601f, 0.838559f, 0.838517f, 0.838474f, 0.838432f, 0.838389f, 0.838347f, 0.838304f, 0.838262f, 0.838219f, 0.838177f, 0.838134f, 0.838092f, 0.838049f, 0.838007f, 0.837964f, 0.837922f,
+0.837879f, 0.837837f, 0.837794f, 0.837751f, 0.837709f, 0.837666f, 0.837624f, 0.837581f, 0.837538f, 0.837496f, 0.837453f, 0.83741f, 0.837368f, 0.837325f, 0.837282f, 0.83724f, 0.837197f, 0.837154f, 0.837111f, 0.837069f,
+0.837026f, 0.836983f, 0.83694f, 0.836897f, 0.836855f, 0.836812f, 0.836769f, 0.836726f, 0.836683f, 0.83664f, 0.836598f, 0.836555f, 0.836512f, 0.836469f, 0.836426f, 0.836383f, 0.83634f, 0.836297f, 0.836254f, 0.836211f,
+0.836168f, 0.836125f, 0.836082f, 0.836039f, 0.835996f, 0.835953f, 0.83591f, 0.835867f, 0.835824f, 0.835781f, 0.835738f, 0.835695f, 0.835652f, 0.835609f, 0.835566f, 0.835523f, 0.83548f, 0.835437f, 0.835393f, 0.83535f,
+0.835307f, 0.835264f, 0.835221f, 0.835178f, 0.835134f, 0.835091f, 0.835048f, 0.835005f, 0.834961f, 0.834918f, 0.834875f, 0.834832f, 0.834788f, 0.834745f, 0.834702f, 0.834659f, 0.834615f, 0.834572f, 0.834529f, 0.834485f,
+0.834442f, 0.834398f, 0.834355f, 0.834312f, 0.834268f, 0.834225f, 0.834181f, 0.834138f, 0.834095f, 0.834051f, 0.834008f, 0.833964f, 0.833921f, 0.833877f, 0.833834f, 0.83379f, 0.833747f, 0.833703f, 0.83366f, 0.833616f,
+0.833573f, 0.833529f, 0.833485f, 0.833442f, 0.833398f, 0.833355f, 0.833311f, 0.833267f, 0.833224f, 0.83318f, 0.833136f, 0.833093f, 0.833049f, 0.833005f, 0.832962f, 0.832918f, 0.832874f, 0.832831f, 0.832787f, 0.832743f,
+0.832699f, 0.832656f, 0.832612f, 0.832568f, 0.832524f, 0.83248f, 0.832437f, 0.832393f, 0.832349f, 0.832305f, 0.832261f, 0.832217f, 0.832174f, 0.83213f, 0.832086f, 0.832042f, 0.831998f, 0.831954f, 0.83191f, 0.831866f,
+0.831822f, 0.831778f, 0.831734f, 0.83169f, 0.831646f, 0.831602f, 0.831558f, 0.831514f, 0.83147f, 0.831426f, 0.831382f, 0.831338f, 0.831294f, 0.83125f, 0.831206f, 0.831162f, 0.831118f, 0.831074f, 0.831029f, 0.830985f,
+0.830941f, 0.830897f, 0.830853f, 0.830809f, 0.830764f, 0.83072f, 0.830676f, 0.830632f, 0.830588f, 0.830543f, 0.830499f, 0.830455f, 0.830411f, 0.830366f, 0.830322f, 0.830278f, 0.830233f, 0.830189f, 0.830145f, 0.8301f,
+0.830056f, 0.830012f, 0.829967f, 0.829923f, 0.829879f, 0.829834f, 0.82979f, 0.829745f, 0.829701f, 0.829656f, 0.829612f, 0.829568f, 0.829523f, 0.829479f, 0.829434f, 0.82939f, 0.829345f, 0.829301f, 0.829256f, 0.829212f,
+0.829167f, 0.829123f, 0.829078f, 0.829033f, 0.828989f, 0.828944f, 0.8289f, 0.828855f, 0.82881f, 0.828766f, 0.828721f, 0.828676f, 0.828632f, 0.828587f, 0.828542f, 0.828498f, 0.828453f, 0.828408f, 0.828364f, 0.828319f,
+0.828274f, 0.828229f, 0.828185f, 0.82814f, 0.828095f, 0.82805f, 0.828006f, 0.827961f, 0.827916f, 0.827871f, 0.827826f, 0.827781f, 0.827737f, 0.827692f, 0.827647f, 0.827602f, 0.827557f, 0.827512f, 0.827467f, 0.827422f,
+0.827377f, 0.827332f, 0.827287f, 0.827243f, 0.827198f, 0.827153f, 0.827108f, 0.827063f, 0.827018f, 0.826973f, 0.826928f, 0.826882f, 0.826837f, 0.826792f, 0.826747f, 0.826702f, 0.826657f, 0.826612f, 0.826567f, 0.826522f,
+0.826477f, 0.826432f, 0.826386f, 0.826341f, 0.826296f, 0.826251f, 0.826206f, 0.82616f, 0.826115f, 0.82607f, 0.826025f, 0.82598f, 0.825934f, 0.825889f, 0.825844f, 0.825799f, 0.825753f, 0.825708f, 0.825663f, 0.825617f,
+0.825572f, 0.825527f, 0.825481f, 0.825436f, 0.825391f, 0.825345f, 0.8253f, 0.825254f, 0.825209f, 0.825164f, 0.825118f, 0.825073f, 0.825027f, 0.824982f, 0.824936f, 0.824891f, 0.824846f, 0.8248f, 0.824755f, 0.824709f,
+0.824663f, 0.824618f, 0.824572f, 0.824527f, 0.824481f, 0.824436f, 0.82439f, 0.824345f, 0.824299f, 0.824253f, 0.824208f, 0.824162f, 0.824117f, 0.824071f, 0.824025f, 0.82398f, 0.823934f, 0.823888f, 0.823842f, 0.823797f,
+0.823751f, 0.823705f, 0.82366f, 0.823614f, 0.823568f, 0.823522f, 0.823477f, 0.823431f, 0.823385f, 0.823339f, 0.823293f, 0.823248f, 0.823202f, 0.823156f, 0.82311f, 0.823064f, 0.823018f, 0.822972f, 0.822927f, 0.822881f,
+0.822835f, 0.822789f, 0.822743f, 0.822697f, 0.822651f, 0.822605f, 0.822559f, 0.822513f, 0.822467f, 0.822421f, 0.822375f, 0.822329f, 0.822283f, 0.822237f, 0.822191f, 0.822145f, 0.822099f, 0.822053f, 0.822007f, 0.821961f,
+0.821915f, 0.821868f, 0.821822f, 0.821776f, 0.82173f, 0.821684f, 0.821638f, 0.821592f, 0.821545f, 0.821499f, 0.821453f, 0.821407f, 0.821361f, 0.821314f, 0.821268f, 0.821222f, 0.821176f, 0.821129f, 0.821083f, 0.821037f,
+0.820991f, 0.820944f, 0.820898f, 0.820852f, 0.820805f, 0.820759f, 0.820713f, 0.820666f, 0.82062f, 0.820573f, 0.820527f, 0.820481f, 0.820434f, 0.820388f, 0.820341f, 0.820295f, 0.820248f, 0.820202f, 0.820156f, 0.820109f,
+0.820063f, 0.820016f, 0.81997f, 0.819923f, 0.819877f, 0.81983f, 0.819783f, 0.819737f, 0.81969f, 0.819644f, 0.819597f, 0.819551f, 0.819504f, 0.819457f, 0.819411f, 0.819364f, 0.819317f, 0.819271f, 0.819224f, 0.819177f,
+0.819131f, 0.819084f, 0.819037f, 0.818991f, 0.818944f, 0.818897f, 0.81885f, 0.818804f, 0.818757f, 0.81871f, 0.818663f, 0.818617f, 0.81857f, 0.818523f, 0.818476f, 0.818429f, 0.818383f, 0.818336f, 0.818289f, 0.818242f,
+0.818195f, 0.818148f, 0.818101f, 0.818054f, 0.818008f, 0.817961f, 0.817914f, 0.817867f, 0.81782f, 0.817773f, 0.817726f, 0.817679f, 0.817632f, 0.817585f, 0.817538f, 0.817491f, 0.817444f, 0.817397f, 0.81735f, 0.817303f,
+0.817256f, 0.817209f, 0.817161f, 0.817114f, 0.817067f, 0.81702f, 0.816973f, 0.816926f, 0.816879f, 0.816832f, 0.816784f, 0.816737f, 0.81669f, 0.816643f, 0.816596f, 0.816548f, 0.816501f, 0.816454f, 0.816407f, 0.81636f,
+0.816312f, 0.816265f, 0.816218f, 0.81617f, 0.816123f, 0.816076f, 0.816029f, 0.815981f, 0.815934f, 0.815887f, 0.815839f, 0.815792f, 0.815744f, 0.815697f, 0.81565f, 0.815602f, 0.815555f, 0.815507f, 0.81546f, 0.815413f,
+0.815365f, 0.815318f, 0.81527f, 0.815223f, 0.815175f, 0.815128f, 0.81508f, 0.815033f, 0.814985f, 0.814938f, 0.81489f, 0.814843f, 0.814795f, 0.814747f, 0.8147f, 0.814652f, 0.814605f, 0.814557f, 0.814509f, 0.814462f,
+0.814414f, 0.814366f, 0.814319f, 0.814271f, 0.814223f, 0.814176f, 0.814128f, 0.81408f, 0.814033f, 0.813985f, 0.813937f, 0.813889f, 0.813842f, 0.813794f, 0.813746f, 0.813698f, 0.813651f, 0.813603f, 0.813555f, 0.813507f,
+0.813459f, 0.813411f, 0.813364f, 0.813316f, 0.813268f, 0.81322f, 0.813172f, 0.813124f, 0.813076f, 0.813028f, 0.81298f, 0.812933f, 0.812885f, 0.812837f, 0.812789f, 0.812741f, 0.812693f, 0.812645f, 0.812597f, 0.812549f,
+0.812501f, 0.812453f, 0.812405f, 0.812357f, 0.812308f, 0.81226f, 0.812212f, 0.812164f, 0.812116f, 0.812068f, 0.81202f, 0.811972f, 0.811924f, 0.811875f, 0.811827f, 0.811779f, 0.811731f, 0.811683f, 0.811635f, 0.811586f,
+0.811538f, 0.81149f, 0.811442f, 0.811393f, 0.811345f, 0.811297f, 0.811249f, 0.8112f, 0.811152f, 0.811104f, 0.811056f, 0.811007f, 0.810959f, 0.810911f, 0.810862f, 0.810814f, 0.810765f, 0.810717f, 0.810669f, 0.81062f,
+0.810572f, 0.810524f, 0.810475f, 0.810427f, 0.810378f, 0.81033f, 0.810281f, 0.810233f, 0.810184f, 0.810136f, 0.810087f, 0.810039f, 0.80999f, 0.809942f, 0.809893f, 0.809845f, 0.809796f, 0.809748f, 0.809699f, 0.80965f,
+0.809602f, 0.809553f, 0.809505f, 0.809456f, 0.809407f, 0.809359f, 0.80931f, 0.809261f, 0.809213f, 0.809164f, 0.809115f, 0.809067f, 0.809018f, 0.808969f, 0.808921f, 0.808872f, 0.808823f, 0.808774f, 0.808726f, 0.808677f,
+0.808628f, 0.808579f, 0.80853f, 0.808482f, 0.808433f, 0.808384f, 0.808335f, 0.808286f, 0.808237f, 0.808189f, 0.80814f, 0.808091f, 0.808042f, 0.807993f, 0.807944f, 0.807895f, 0.807846f, 0.807797f, 0.807748f, 0.807699f,
+0.80765f, 0.807601f, 0.807552f, 0.807503f, 0.807454f, 0.807405f, 0.807356f, 0.807307f, 0.807258f, 0.807209f, 0.80716f, 0.807111f, 0.807062f, 0.807013f, 0.806964f, 0.806915f, 0.806866f, 0.806816f, 0.806767f, 0.806718f,
+0.806669f, 0.80662f, 0.806571f, 0.806521f, 0.806472f, 0.806423f, 0.806374f, 0.806325f, 0.806275f, 0.806226f, 0.806177f, 0.806128f, 0.806078f, 0.806029f, 0.80598f, 0.80593f, 0.805881f, 0.805832f, 0.805782f, 0.805733f,
+0.805684f, 0.805634f, 0.805585f, 0.805536f, 0.805486f, 0.805437f, 0.805388f, 0.805338f, 0.805289f, 0.805239f, 0.80519f, 0.80514f, 0.805091f, 0.805041f, 0.804992f, 0.804942f, 0.804893f, 0.804843f, 0.804794f, 0.804744f,
+0.804695f, 0.804645f, 0.804596f, 0.804546f, 0.804497f, 0.804447f, 0.804397f, 0.804348f, 0.804298f, 0.804249f, 0.804199f, 0.804149f, 0.8041f, 0.80405f, 0.804f, 0.803951f, 0.803901f, 0.803851f, 0.803802f, 0.803752f,
+0.803702f, 0.803652f, 0.803603f, 0.803553f, 0.803503f, 0.803453f, 0.803404f, 0.803354f, 0.803304f, 0.803254f, 0.803204f, 0.803155f, 0.803105f, 0.803055f, 0.803005f, 0.802955f, 0.802905f, 0.802855f, 0.802806f, 0.802756f,
+0.802706f, 0.802656f, 0.802606f, 0.802556f, 0.802506f, 0.802456f, 0.802406f, 0.802356f, 0.802306f, 0.802256f, 0.802206f, 0.802156f, 0.802106f, 0.802056f, 0.802006f, 0.801956f, 0.801906f, 0.801856f, 0.801806f, 0.801756f,
+0.801706f, 0.801655f, 0.801605f, 0.801555f, 0.801505f, 0.801455f, 0.801405f, 0.801355f, 0.801304f, 0.801254f, 0.801204f, 0.801154f, 0.801104f, 0.801053f, 0.801003f, 0.800953f, 0.800903f, 0.800852f, 0.800802f, 0.800752f,
+0.800702f, 0.800651f, 0.800601f, 0.800551f, 0.8005f, 0.80045f, 0.8004f, 0.800349f, 0.800299f, 0.800249f, 0.800198f, 0.800148f, 0.800097f, 0.800047f, 0.799997f, 0.799946f, 0.799896f, 0.799845f, 0.799795f, 0.799744f,
+0.799694f, 0.799643f, 0.799593f, 0.799542f, 0.799492f, 0.799441f, 0.799391f, 0.79934f, 0.79929f, 0.799239f, 0.799189f, 0.799138f, 0.799088f, 0.799037f, 0.798986f, 0.798936f, 0.798885f, 0.798835f, 0.798784f, 0.798733f,
+0.798683f, 0.798632f, 0.798581f, 0.798531f, 0.79848f, 0.798429f, 0.798378f, 0.798328f, 0.798277f, 0.798226f, 0.798175f, 0.798125f, 0.798074f, 0.798023f, 0.797972f, 0.797922f, 0.797871f, 0.79782f, 0.797769f, 0.797718f,
+0.797667f, 0.797617f, 0.797566f, 0.797515f, 0.797464f, 0.797413f, 0.797362f, 0.797311f, 0.79726f, 0.797209f, 0.797159f, 0.797108f, 0.797057f, 0.797006f, 0.796955f, 0.796904f, 0.796853f, 0.796802f, 0.796751f, 0.7967f,
+0.796649f, 0.796598f, 0.796547f, 0.796496f, 0.796444f, 0.796393f, 0.796342f, 0.796291f, 0.79624f, 0.796189f, 0.796138f, 0.796087f, 0.796036f, 0.795984f, 0.795933f, 0.795882f, 0.795831f, 0.79578f, 0.795729f, 0.795677f,
+0.795626f, 0.795575f, 0.795524f, 0.795472f, 0.795421f, 0.79537f, 0.795319f, 0.795267f, 0.795216f, 0.795165f, 0.795114f, 0.795062f, 0.795011f, 0.79496f, 0.794908f, 0.794857f, 0.794805f, 0.794754f, 0.794703f, 0.794651f,
+0.7946f, 0.794549f, 0.794497f, 0.794446f, 0.794394f, 0.794343f, 0.794291f, 0.79424f, 0.794188f, 0.794137f, 0.794085f, 0.794034f, 0.793982f, 0.793931f, 0.793879f, 0.793828f, 0.793776f, 0.793725f, 0.793673f, 0.793622f,
+0.79357f, 0.793518f, 0.793467f, 0.793415f, 0.793364f, 0.793312f, 0.79326f, 0.793209f, 0.793157f, 0.793105f, 0.793054f, 0.793002f, 0.79295f, 0.792899f, 0.792847f, 0.792795f, 0.792744f, 0.792692f, 0.79264f, 0.792588f,
+0.792537f, 0.792485f, 0.792433f, 0.792381f, 0.792329f, 0.792278f, 0.792226f, 0.792174f, 0.792122f, 0.79207f, 0.792018f, 0.791966f, 0.791915f, 0.791863f, 0.791811f, 0.791759f, 0.791707f, 0.791655f, 0.791603f, 0.791551f,
+0.791499f, 0.791447f, 0.791395f, 0.791343f, 0.791291f, 0.791239f, 0.791187f, 0.791135f, 0.791083f, 0.791031f, 0.790979f, 0.790927f, 0.790875f, 0.790823f, 0.790771f, 0.790719f, 0.790667f, 0.790615f, 0.790563f, 0.79051f,
+0.790458f, 0.790406f, 0.790354f, 0.790302f, 0.79025f, 0.790198f, 0.790145f, 0.790093f, 0.790041f, 0.789989f, 0.789937f, 0.789884f, 0.789832f, 0.78978f, 0.789728f, 0.789675f, 0.789623f, 0.789571f, 0.789518f, 0.789466f,
+0.789414f, 0.789361f, 0.789309f, 0.789257f, 0.789204f, 0.789152f, 0.7891f, 0.789047f, 0.788995f, 0.788943f, 0.78889f, 0.788838f, 0.788785f, 0.788733f, 0.78868f, 0.788628f, 0.788576f, 0.788523f, 0.788471f, 0.788418f,
+0.788366f, 0.788313f, 0.788261f, 0.788208f, 0.788155f, 0.788103f, 0.78805f, 0.787998f, 0.787945f, 0.787893f, 0.78784f, 0.787788f, 0.787735f, 0.787682f, 0.78763f, 0.787577f, 0.787524f, 0.787472f, 0.787419f, 0.787366f,
+0.787314f, 0.787261f, 0.787208f, 0.787156f, 0.787103f, 0.78705f, 0.786997f, 0.786945f, 0.786892f, 0.786839f, 0.786786f, 0.786734f, 0.786681f, 0.786628f, 0.786575f, 0.786522f, 0.78647f, 0.786417f, 0.786364f, 0.786311f,
+0.786258f, 0.786205f, 0.786152f, 0.7861f, 0.786047f, 0.785994f, 0.785941f, 0.785888f, 0.785835f, 0.785782f, 0.785729f, 0.785676f, 0.785623f, 0.78557f, 0.785517f, 0.785464f, 0.785411f, 0.785358f, 0.785305f, 0.785252f,
+0.785199f, 0.785146f, 0.785093f, 0.78504f, 0.784987f, 0.784934f, 0.784881f, 0.784828f, 0.784774f, 0.784721f, 0.784668f, 0.784615f, 0.784562f, 0.784509f, 0.784456f, 0.784402f, 0.784349f, 0.784296f, 0.784243f, 0.78419f,
+0.784136f, 0.784083f, 0.78403f, 0.783977f, 0.783923f, 0.78387f, 0.783817f, 0.783764f, 0.78371f, 0.783657f, 0.783604f, 0.78355f, 0.783497f, 0.783444f, 0.78339f, 0.783337f, 0.783284f, 0.78323f, 0.783177f, 0.783123f,
+0.78307f, 0.783017f, 0.782963f, 0.78291f, 0.782856f, 0.782803f, 0.782749f, 0.782696f, 0.782642f, 0.782589f, 0.782535f, 0.782482f, 0.782428f, 0.782375f, 0.782321f, 0.782268f, 0.782214f, 0.782161f, 0.782107f, 0.782054f,
+0.782f, 0.781946f, 0.781893f, 0.781839f, 0.781786f, 0.781732f, 0.781678f, 0.781625f, 0.781571f, 0.781517f, 0.781464f, 0.78141f, 0.781356f, 0.781303f, 0.781249f, 0.781195f, 0.781141f, 0.781088f, 0.781034f, 0.78098f,
+0.780926f, 0.780873f, 0.780819f, 0.780765f, 0.780711f, 0.780657f, 0.780604f, 0.78055f, 0.780496f, 0.780442f, 0.780388f, 0.780334f, 0.780281f, 0.780227f, 0.780173f, 0.780119f, 0.780065f, 0.780011f, 0.779957f, 0.779903f,
+0.779849f, 0.779795f, 0.779741f, 0.779687f, 0.779633f, 0.779579f, 0.779525f, 0.779471f, 0.779417f, 0.779363f, 0.779309f, 0.779255f, 0.779201f, 0.779147f, 0.779093f, 0.779039f, 0.778985f, 0.778931f, 0.778877f, 0.778823f,
+0.778768f, 0.778714f, 0.77866f, 0.778606f, 0.778552f, 0.778498f, 0.778444f, 0.778389f, 0.778335f, 0.778281f, 0.778227f, 0.778173f, 0.778118f, 0.778064f, 0.77801f, 0.777956f, 0.777901f, 0.777847f, 0.777793f, 0.777738f,
+0.777684f, 0.77763f, 0.777576f, 0.777521f, 0.777467f, 0.777413f, 0.777358f, 0.777304f, 0.777249f, 0.777195f, 0.777141f, 0.777086f, 0.777032f, 0.776977f, 0.776923f, 0.776869f, 0.776814f, 0.77676f, 0.776705f, 0.776651f,
+0.776596f, 0.776542f, 0.776487f, 0.776433f, 0.776378f, 0.776324f, 0.776269f, 0.776215f, 0.77616f, 0.776106f, 0.776051f, 0.775996f, 0.775942f, 0.775887f, 0.775833f, 0.775778f, 0.775723f, 0.775669f, 0.775614f, 0.775559f,
+0.775505f, 0.77545f, 0.775395f, 0.775341f, 0.775286f, 0.775231f, 0.775177f, 0.775122f, 0.775067f, 0.775012f, 0.774958f, 0.774903f, 0.774848f, 0.774793f, 0.774739f, 0.774684f, 0.774629f, 0.774574f, 0.774519f, 0.774465f,
+0.77441f, 0.774355f, 0.7743f, 0.774245f, 0.77419f, 0.774135f, 0.774081f, 0.774026f, 0.773971f, 0.773916f, 0.773861f, 0.773806f, 0.773751f, 0.773696f, 0.773641f, 0.773586f, 0.773531f, 0.773476f, 0.773421f, 0.773366f,
+0.773311f, 0.773256f, 0.773201f, 0.773146f, 0.773091f, 0.773036f, 0.772981f, 0.772926f, 0.772871f, 0.772816f, 0.772761f, 0.772705f, 0.77265f, 0.772595f, 0.77254f, 0.772485f, 0.77243f, 0.772375f, 0.772319f, 0.772264f,
+0.772209f, 0.772154f, 0.772099f, 0.772043f, 0.771988f, 0.771933f, 0.771878f, 0.771822f, 0.771767f, 0.771712f, 0.771657f, 0.771601f, 0.771546f, 0.771491f, 0.771435f, 0.77138f, 0.771325f, 0.771269f, 0.771214f, 0.771159f,
+0.771103f, 0.771048f, 0.770993f, 0.770937f, 0.770882f, 0.770826f, 0.770771f, 0.770716f, 0.77066f, 0.770605f, 0.770549f, 0.770494f, 0.770438f, 0.770383f, 0.770327f, 0.770272f, 0.770216f, 0.770161f, 0.770105f, 0.77005f,
+0.769994f, 0.769939f, 0.769883f, 0.769828f, 0.769772f, 0.769716f, 0.769661f, 0.769605f, 0.76955f, 0.769494f, 0.769438f, 0.769383f, 0.769327f, 0.769271f, 0.769216f, 0.76916f, 0.769104f, 0.769049f, 0.768993f, 0.768937f,
+0.768882f, 0.768826f, 0.76877f, 0.768714f, 0.768659f, 0.768603f, 0.768547f, 0.768491f, 0.768435f, 0.76838f, 0.768324f, 0.768268f, 0.768212f, 0.768156f, 0.768101f, 0.768045f, 0.767989f, 0.767933f, 0.767877f, 0.767821f,
+0.767765f, 0.767709f, 0.767653f, 0.767598f, 0.767542f, 0.767486f, 0.76743f, 0.767374f, 0.767318f, 0.767262f, 0.767206f, 0.76715f, 0.767094f, 0.767038f, 0.766982f, 0.766926f, 0.76687f, 0.766814f, 0.766758f, 0.766702f,
+0.766646f, 0.76659f, 0.766533f, 0.766477f, 0.766421f, 0.766365f, 0.766309f, 0.766253f, 0.766197f, 0.766141f, 0.766084f, 0.766028f, 0.765972f, 0.765916f, 0.76586f, 0.765804f, 0.765747f, 0.765691f, 0.765635f, 0.765579f,
+0.765522f, 0.765466f, 0.76541f, 0.765354f, 0.765297f, 0.765241f, 0.765185f, 0.765128f, 0.765072f, 0.765016f, 0.764959f, 0.764903f, 0.764847f, 0.76479f, 0.764734f, 0.764678f, 0.764621f, 0.764565f, 0.764509f, 0.764452f,
+0.764396f, 0.764339f, 0.764283f, 0.764226f, 0.76417f, 0.764113f, 0.764057f, 0.764001f, 0.763944f, 0.763888f, 0.763831f, 0.763775f, 0.763718f, 0.763661f, 0.763605f, 0.763548f, 0.763492f, 0.763435f, 0.763379f, 0.763322f,
+0.763266f, 0.763209f, 0.763152f, 0.763096f, 0.763039f, 0.762982f, 0.762926f, 0.762869f, 0.762812f, 0.762756f, 0.762699f, 0.762642f, 0.762586f, 0.762529f, 0.762472f, 0.762416f, 0.762359f, 0.762302f, 0.762245f, 0.762189f,
+0.762132f, 0.762075f, 0.762018f, 0.761962f, 0.761905f, 0.761848f, 0.761791f, 0.761734f, 0.761677f, 0.761621f, 0.761564f, 0.761507f, 0.76145f, 0.761393f, 0.761336f, 0.761279f, 0.761222f, 0.761166f, 0.761109f, 0.761052f,
+0.760995f, 0.760938f, 0.760881f, 0.760824f, 0.760767f, 0.76071f, 0.760653f, 0.760596f, 0.760539f, 0.760482f, 0.760425f, 0.760368f, 0.760311f, 0.760254f, 0.760197f, 0.76014f, 0.760083f, 0.760026f, 0.759968f, 0.759911f,
+0.759854f, 0.759797f, 0.75974f, 0.759683f, 0.759626f, 0.759569f, 0.759511f, 0.759454f, 0.759397f, 0.75934f, 0.759283f, 0.759225f, 0.759168f, 0.759111f, 0.759054f, 0.758997f, 0.758939f, 0.758882f, 0.758825f, 0.758767f,
+0.75871f, 0.758653f, 0.758596f, 0.758538f, 0.758481f, 0.758424f, 0.758366f, 0.758309f, 0.758252f, 0.758194f, 0.758137f, 0.75808f, 0.758022f, 0.757965f, 0.757907f, 0.75785f, 0.757792f, 0.757735f, 0.757678f, 0.75762f,
+0.757563f, 0.757505f, 0.757448f, 0.75739f, 0.757333f, 0.757275f, 0.757218f, 0.75716f, 0.757103f, 0.757045f, 0.756988f, 0.75693f, 0.756873f, 0.756815f, 0.756757f, 0.7567f, 0.756642f, 0.756585f, 0.756527f, 0.756469f,
+0.756412f, 0.756354f, 0.756297f, 0.756239f, 0.756181f, 0.756124f, 0.756066f, 0.756008f, 0.755951f, 0.755893f, 0.755835f, 0.755777f, 0.75572f, 0.755662f, 0.755604f, 0.755546f, 0.755489f, 0.755431f, 0.755373f, 0.755315f,
+0.755258f, 0.7552f, 0.755142f, 0.755084f, 0.755026f, 0.754968f, 0.754911f, 0.754853f, 0.754795f, 0.754737f, 0.754679f, 0.754621f, 0.754563f, 0.754505f, 0.754447f, 0.75439f, 0.754332f, 0.754274f, 0.754216f, 0.754158f,
+0.7541f, 0.754042f, 0.753984f, 0.753926f, 0.753868f, 0.75381f, 0.753752f, 0.753694f, 0.753636f, 0.753578f, 0.75352f, 0.753462f, 0.753404f, 0.753345f, 0.753287f, 0.753229f, 0.753171f, 0.753113f, 0.753055f, 0.752997f,
+0.752939f, 0.75288f, 0.752822f, 0.752764f, 0.752706f, 0.752648f, 0.75259f, 0.752531f, 0.752473f, 0.752415f, 0.752357f, 0.752299f, 0.75224f, 0.752182f, 0.752124f, 0.752066f, 0.752007f, 0.751949f, 0.751891f, 0.751832f,
+0.751774f, 0.751716f, 0.751657f, 0.751599f, 0.751541f, 0.751482f, 0.751424f, 0.751366f, 0.751307f, 0.751249f, 0.751191f, 0.751132f, 0.751074f, 0.751015f, 0.750957f, 0.750898f, 0.75084f, 0.750782f, 0.750723f, 0.750665f,
+0.750606f, 0.750548f, 0.750489f, 0.750431f, 0.750372f, 0.750314f, 0.750255f, 0.750197f, 0.750138f, 0.750079f, 0.750021f, 0.749962f, 0.749904f, 0.749845f, 0.749787f, 0.749728f, 0.749669f, 0.749611f, 0.749552f, 0.749493f,
+0.749435f, 0.749376f, 0.749318f, 0.749259f, 0.7492f, 0.749141f, 0.749083f, 0.749024f, 0.748965f, 0.748907f, 0.748848f, 0.748789f, 0.74873f, 0.748672f, 0.748613f, 0.748554f, 0.748495f, 0.748437f, 0.748378f, 0.748319f,
+0.74826f, 0.748201f, 0.748142f, 0.748084f, 0.748025f, 0.747966f, 0.747907f, 0.747848f, 0.747789f, 0.74773f, 0.747672f, 0.747613f, 0.747554f, 0.747495f, 0.747436f, 0.747377f, 0.747318f, 0.747259f, 0.7472f, 0.747141f,
+0.747082f, 0.747023f, 0.746964f, 0.746905f, 0.746846f, 0.746787f, 0.746728f, 0.746669f, 0.74661f, 0.746551f, 0.746492f, 0.746433f, 0.746374f, 0.746315f, 0.746255f, 0.746196f, 0.746137f, 0.746078f, 0.746019f, 0.74596f,
+0.745901f, 0.745841f, 0.745782f, 0.745723f, 0.745664f, 0.745605f, 0.745546f, 0.745486f, 0.745427f, 0.745368f, 0.745309f, 0.745249f, 0.74519f, 0.745131f, 0.745072f, 0.745012f, 0.744953f, 0.744894f, 0.744835f, 0.744775f,
+0.744716f, 0.744657f, 0.744597f, 0.744538f, 0.744479f, 0.744419f, 0.74436f, 0.7443f, 0.744241f, 0.744182f, 0.744122f, 0.744063f, 0.744003f, 0.743944f, 0.743885f, 0.743825f, 0.743766f, 0.743706f, 0.743647f, 0.743587f,
+0.743528f, 0.743468f, 0.743409f, 0.743349f, 0.74329f, 0.74323f, 0.743171f, 0.743111f, 0.743052f, 0.742992f, 0.742932f, 0.742873f, 0.742813f, 0.742754f, 0.742694f, 0.742634f, 0.742575f, 0.742515f, 0.742456f, 0.742396f,
+0.742336f, 0.742277f, 0.742217f, 0.742157f, 0.742098f, 0.742038f, 0.741978f, 0.741918f, 0.741859f, 0.741799f, 0.741739f, 0.74168f, 0.74162f, 0.74156f, 0.7415f, 0.741441f, 0.741381f, 0.741321f, 0.741261f, 0.741201f,
+0.741141f, 0.741082f, 0.741022f, 0.740962f, 0.740902f, 0.740842f, 0.740782f, 0.740723f, 0.740663f, 0.740603f, 0.740543f, 0.740483f, 0.740423f, 0.740363f, 0.740303f, 0.740243f, 0.740183f, 0.740123f, 0.740063f, 0.740003f,
+0.739943f, 0.739883f, 0.739823f, 0.739763f, 0.739703f, 0.739643f, 0.739583f, 0.739523f, 0.739463f, 0.739403f, 0.739343f, 0.739283f, 0.739223f, 0.739163f, 0.739103f, 0.739043f, 0.738983f, 0.738922f, 0.738862f, 0.738802f,
+0.738742f, 0.738682f, 0.738622f, 0.738561f, 0.738501f, 0.738441f, 0.738381f, 0.738321f, 0.73826f, 0.7382f, 0.73814f, 0.73808f, 0.73802f, 0.737959f, 0.737899f, 0.737839f, 0.737778f, 0.737718f, 0.737658f, 0.737598f,
+0.737537f, 0.737477f, 0.737417f, 0.737356f, 0.737296f, 0.737236f, 0.737175f, 0.737115f, 0.737054f, 0.736994f, 0.736934f, 0.736873f, 0.736813f, 0.736752f, 0.736692f, 0.736632f, 0.736571f, 0.736511f, 0.73645f, 0.73639f,
+0.736329f, 0.736269f, 0.736208f, 0.736148f, 0.736087f, 0.736027f, 0.735966f, 0.735906f, 0.735845f, 0.735785f, 0.735724f, 0.735663f, 0.735603f, 0.735542f, 0.735482f, 0.735421f, 0.73536f, 0.7353f, 0.735239f, 0.735179f,
+0.735118f, 0.735057f, 0.734997f, 0.734936f, 0.734875f, 0.734815f, 0.734754f, 0.734693f, 0.734632f, 0.734572f, 0.734511f, 0.73445f, 0.73439f, 0.734329f, 0.734268f, 0.734207f, 0.734147f, 0.734086f, 0.734025f, 0.733964f,
+0.733903f, 0.733843f, 0.733782f, 0.733721f, 0.73366f, 0.733599f, 0.733538f, 0.733477f, 0.733417f, 0.733356f, 0.733295f, 0.733234f, 0.733173f, 0.733112f, 0.733051f, 0.73299f, 0.732929f, 0.732868f, 0.732807f, 0.732746f,
+0.732685f, 0.732625f, 0.732564f, 0.732503f, 0.732442f, 0.732381f, 0.73232f, 0.732258f, 0.732197f, 0.732136f, 0.732075f, 0.732014f, 0.731953f, 0.731892f, 0.731831f, 0.73177f, 0.731709f, 0.731648f, 0.731587f, 0.731526f,
+0.731464f, 0.731403f, 0.731342f, 0.731281f, 0.73122f, 0.731159f, 0.731097f, 0.731036f, 0.730975f, 0.730914f, 0.730853f, 0.730791f, 0.73073f, 0.730669f, 0.730608f, 0.730546f, 0.730485f, 0.730424f, 0.730363f, 0.730301f,
+0.73024f, 0.730179f, 0.730117f, 0.730056f, 0.729995f, 0.729933f, 0.729872f, 0.729811f, 0.729749f, 0.729688f, 0.729627f, 0.729565f, 0.729504f, 0.729442f, 0.729381f, 0.72932f, 0.729258f, 0.729197f, 0.729135f, 0.729074f,
+0.729012f, 0.728951f, 0.728889f, 0.728828f, 0.728766f, 0.728705f, 0.728643f, 0.728582f, 0.72852f, 0.728459f, 0.728397f, 0.728336f, 0.728274f, 0.728213f, 0.728151f, 0.72809f, 0.728028f, 0.727966f, 0.727905f, 0.727843f,
+0.727782f, 0.72772f, 0.727658f, 0.727597f, 0.727535f, 0.727473f, 0.727412f, 0.72735f, 0.727288f, 0.727227f, 0.727165f, 0.727103f, 0.727042f, 0.72698f, 0.726918f, 0.726856f, 0.726795f, 0.726733f, 0.726671f, 0.726609f,
+0.726547f, 0.726486f, 0.726424f, 0.726362f, 0.7263f, 0.726238f, 0.726177f, 0.726115f, 0.726053f, 0.725991f, 0.725929f, 0.725867f, 0.725805f, 0.725744f, 0.725682f, 0.72562f, 0.725558f, 0.725496f, 0.725434f, 0.725372f,
+0.72531f, 0.725248f, 0.725186f, 0.725124f, 0.725062f, 0.725f, 0.724938f, 0.724876f, 0.724814f, 0.724752f, 0.72469f, 0.724628f, 0.724566f, 0.724504f, 0.724442f, 0.72438f, 0.724318f, 0.724256f, 0.724194f, 0.724132f,
+0.72407f, 0.724008f, 0.723945f, 0.723883f, 0.723821f, 0.723759f, 0.723697f, 0.723635f, 0.723573f, 0.72351f, 0.723448f, 0.723386f, 0.723324f, 0.723262f, 0.723199f, 0.723137f, 0.723075f, 0.723013f, 0.722951f, 0.722888f,
+0.722826f, 0.722764f, 0.722701f, 0.722639f, 0.722577f, 0.722515f, 0.722452f, 0.72239f, 0.722328f, 0.722265f, 0.722203f, 0.722141f, 0.722078f, 0.722016f, 0.721953f, 0.721891f, 0.721829f, 0.721766f, 0.721704f, 0.721642f,
+0.721579f, 0.721517f, 0.721454f, 0.721392f, 0.721329f, 0.721267f, 0.721204f, 0.721142f, 0.721079f, 0.721017f, 0.720954f, 0.720892f, 0.720829f, 0.720767f, 0.720704f, 0.720642f, 0.720579f, 0.720517f, 0.720454f, 0.720392f,
+0.720329f, 0.720266f, 0.720204f, 0.720141f, 0.720079f, 0.720016f, 0.719953f, 0.719891f, 0.719828f, 0.719765f, 0.719703f, 0.71964f, 0.719577f, 0.719515f, 0.719452f, 0.719389f, 0.719327f, 0.719264f, 0.719201f, 0.719138f,
+0.719076f, 0.719013f, 0.71895f, 0.718887f, 0.718825f, 0.718762f, 0.718699f, 0.718636f, 0.718574f, 0.718511f, 0.718448f, 0.718385f, 0.718322f, 0.718259f, 0.718197f, 0.718134f, 0.718071f, 0.718008f, 0.717945f, 0.717882f,
+0.717819f, 0.717756f, 0.717694f, 0.717631f, 0.717568f, 0.717505f, 0.717442f, 0.717379f, 0.717316f, 0.717253f, 0.71719f, 0.717127f, 0.717064f, 0.717001f, 0.716938f, 0.716875f, 0.716812f, 0.716749f, 0.716686f, 0.716623f,
+0.71656f, 0.716497f, 0.716434f, 0.716371f, 0.716307f, 0.716244f, 0.716181f, 0.716118f, 0.716055f, 0.715992f, 0.715929f, 0.715866f, 0.715802f, 0.715739f, 0.715676f, 0.715613f, 0.71555f, 0.715487f, 0.715423f, 0.71536f,
+0.715297f, 0.715234f, 0.715171f, 0.715107f, 0.715044f, 0.714981f, 0.714918f, 0.714854f, 0.714791f, 0.714728f, 0.714664f, 0.714601f, 0.714538f, 0.714475f, 0.714411f, 0.714348f, 0.714285f, 0.714221f, 0.714158f, 0.714095f,
+0.714031f, 0.713968f, 0.713904f, 0.713841f, 0.713778f, 0.713714f, 0.713651f, 0.713587f, 0.713524f, 0.71346f, 0.713397f, 0.713334f, 0.71327f, 0.713207f, 0.713143f, 0.71308f, 0.713016f, 0.712953f, 0.712889f, 0.712826f,
+0.712762f, 0.712699f, 0.712635f, 0.712572f, 0.712508f, 0.712444f, 0.712381f, 0.712317f, 0.712254f, 0.71219f, 0.712126f, 0.712063f, 0.711999f, 0.711936f, 0.711872f, 0.711808f, 0.711745f, 0.711681f, 0.711617f, 0.711554f,
+0.71149f, 0.711426f, 0.711363f, 0.711299f, 0.711235f, 0.711172f, 0.711108f, 0.711044f, 0.71098f, 0.710917f, 0.710853f, 0.710789f, 0.710725f, 0.710661f, 0.710598f, 0.710534f, 0.71047f, 0.710406f, 0.710342f, 0.710279f,
+0.710215f, 0.710151f, 0.710087f, 0.710023f, 0.709959f, 0.709895f, 0.709832f, 0.709768f, 0.709704f, 0.70964f, 0.709576f, 0.709512f, 0.709448f, 0.709384f, 0.70932f, 0.709256f, 0.709192f, 0.709128f, 0.709064f, 0.709f,
+0.708936f, 0.708872f, 0.708808f, 0.708744f, 0.70868f, 0.708616f, 0.708552f, 0.708488f, 0.708424f, 0.70836f, 0.708296f, 0.708232f, 0.708168f, 0.708104f, 0.70804f, 0.707976f, 0.707912f, 0.707847f, 0.707783f, 0.707719f,
+0.707655f, 0.707591f, 0.707527f, 0.707463f, 0.707398f, 0.707334f, 0.70727f, 0.707206f, 0.707142f, 0.707077f, 0.707013f, 0.706949f, 0.706885f, 0.70682f, 0.706756f, 0.706692f, 0.706628f, 0.706563f, 0.706499f, 0.706435f,
+0.70637f, 0.706306f, 0.706242f, 0.706178f, 0.706113f, 0.706049f, 0.705985f, 0.70592f, 0.705856f, 0.705791f, 0.705727f, 0.705663f, 0.705598f, 0.705534f, 0.705469f, 0.705405f, 0.705341f, 0.705276f, 0.705212f, 0.705147f,
+0.705083f, 0.705018f, 0.704954f, 0.704889f, 0.704825f, 0.70476f, 0.704696f, 0.704631f, 0.704567f, 0.704502f, 0.704438f, 0.704373f, 0.704309f, 0.704244f, 0.70418f, 0.704115f, 0.704051f, 0.703986f, 0.703921f, 0.703857f,
+0.703792f, 0.703728f, 0.703663f, 0.703598f, 0.703534f, 0.703469f, 0.703404f, 0.70334f, 0.703275f, 0.70321f, 0.703146f, 0.703081f, 0.703016f, 0.702952f, 0.702887f, 0.702822f, 0.702757f, 0.702693f, 0.702628f, 0.702563f,
+0.702498f, 0.702434f, 0.702369f, 0.702304f, 0.702239f, 0.702175f, 0.70211f, 0.702045f, 0.70198f, 0.701915f, 0.70185f, 0.701786f, 0.701721f, 0.701656f, 0.701591f, 0.701526f, 0.701461f, 0.701396f, 0.701331f, 0.701267f,
+0.701202f, 0.701137f, 0.701072f, 0.701007f, 0.700942f, 0.700877f, 0.700812f, 0.700747f, 0.700682f, 0.700617f, 0.700552f, 0.700487f, 0.700422f, 0.700357f, 0.700292f, 0.700227f, 0.700162f, 0.700097f, 0.700032f, 0.699967f,
+0.699902f, 0.699837f, 0.699772f, 0.699707f, 0.699641f, 0.699576f, 0.699511f, 0.699446f, 0.699381f, 0.699316f, 0.699251f, 0.699186f, 0.69912f, 0.699055f, 0.69899f, 0.698925f, 0.69886f, 0.698795f, 0.698729f, 0.698664f,
+0.698599f, 0.698534f, 0.698468f, 0.698403f, 0.698338f, 0.698273f, 0.698207f, 0.698142f, 0.698077f, 0.698012f, 0.697946f, 0.697881f, 0.697816f, 0.69775f, 0.697685f, 0.69762f, 0.697554f, 0.697489f, 0.697424f, 0.697358f,
+0.697293f, 0.697228f, 0.697162f, 0.697097f, 0.697032f, 0.696966f, 0.696901f, 0.696835f, 0.69677f, 0.696704f, 0.696639f, 0.696574f, 0.696508f, 0.696443f, 0.696377f, 0.696312f, 0.696246f, 0.696181f, 0.696115f, 0.69605f,
+0.695984f, 0.695919f, 0.695853f, 0.695788f, 0.695722f, 0.695656f, 0.695591f, 0.695525f, 0.69546f, 0.695394f, 0.695329f, 0.695263f, 0.695197f, 0.695132f, 0.695066f, 0.695f, 0.694935f, 0.694869f, 0.694804f, 0.694738f,
+0.694672f, 0.694607f, 0.694541f, 0.694475f, 0.694409f, 0.694344f, 0.694278f, 0.694212f, 0.694147f, 0.694081f, 0.694015f, 0.693949f, 0.693884f, 0.693818f, 0.693752f, 0.693686f, 0.693621f, 0.693555f, 0.693489f, 0.693423f,
+0.693357f, 0.693291f, 0.693226f, 0.69316f, 0.693094f, 0.693028f, 0.692962f, 0.692896f, 0.692831f, 0.692765f, 0.692699f, 0.692633f, 0.692567f, 0.692501f, 0.692435f, 0.692369f, 0.692303f, 0.692237f, 0.692171f, 0.692105f,
+0.692039f, 0.691973f, 0.691907f, 0.691841f, 0.691775f, 0.691709f, 0.691643f, 0.691577f, 0.691511f, 0.691445f, 0.691379f, 0.691313f, 0.691247f, 0.691181f, 0.691115f, 0.691049f, 0.690983f, 0.690917f, 0.690851f, 0.690785f,
+0.690719f, 0.690652f, 0.690586f, 0.69052f, 0.690454f, 0.690388f, 0.690322f, 0.690256f, 0.690189f, 0.690123f, 0.690057f, 0.689991f, 0.689925f, 0.689858f, 0.689792f, 0.689726f, 0.68966f, 0.689593f, 0.689527f, 0.689461f,
+0.689395f, 0.689328f, 0.689262f, 0.689196f, 0.68913f, 0.689063f, 0.688997f, 0.688931f, 0.688864f, 0.688798f, 0.688732f, 0.688665f, 0.688599f, 0.688533f, 0.688466f, 0.6884f, 0.688333f, 0.688267f, 0.688201f, 0.688134f,
+0.688068f, 0.688001f, 0.687935f, 0.687869f, 0.687802f, 0.687736f, 0.687669f, 0.687603f, 0.687536f, 0.68747f, 0.687403f, 0.687337f, 0.68727f, 0.687204f, 0.687137f, 0.687071f, 0.687004f, 0.686938f, 0.686871f, 0.686805f,
+0.686738f, 0.686672f, 0.686605f, 0.686538f, 0.686472f, 0.686405f, 0.686339f, 0.686272f, 0.686205f, 0.686139f, 0.686072f, 0.686006f, 0.685939f, 0.685872f, 0.685806f, 0.685739f, 0.685672f, 0.685606f, 0.685539f, 0.685472f,
+0.685405f, 0.685339f, 0.685272f, 0.685205f, 0.685139f, 0.685072f, 0.685005f, 0.684938f, 0.684872f, 0.684805f, 0.684738f, 0.684671f, 0.684604f, 0.684538f, 0.684471f, 0.684404f, 0.684337f, 0.68427f, 0.684203f, 0.684137f,
+0.68407f, 0.684003f, 0.683936f, 0.683869f, 0.683802f, 0.683735f, 0.683669f, 0.683602f, 0.683535f, 0.683468f, 0.683401f, 0.683334f, 0.683267f, 0.6832f, 0.683133f, 0.683066f, 0.682999f, 0.682932f, 0.682865f, 0.682798f,
+0.682731f, 0.682664f, 0.682597f, 0.68253f, 0.682463f, 0.682396f, 0.682329f, 0.682262f, 0.682195f, 0.682128f, 0.682061f, 0.681994f, 0.681927f, 0.68186f, 0.681793f, 0.681725f, 0.681658f, 0.681591f, 0.681524f, 0.681457f,
+0.68139f, 0.681323f, 0.681255f, 0.681188f, 0.681121f, 0.681054f, 0.680987f, 0.68092f, 0.680852f, 0.680785f, 0.680718f, 0.680651f, 0.680583f, 0.680516f, 0.680449f, 0.680382f, 0.680314f, 0.680247f, 0.68018f, 0.680113f,
+0.680045f, 0.679978f, 0.679911f, 0.679843f, 0.679776f, 0.679709f, 0.679642f, 0.679574f, 0.679507f, 0.679439f, 0.679372f, 0.679305f, 0.679237f, 0.67917f, 0.679103f, 0.679035f, 0.678968f, 0.6789f, 0.678833f, 0.678766f,
+0.678698f, 0.678631f, 0.678563f, 0.678496f, 0.678428f, 0.678361f, 0.678293f, 0.678226f, 0.678158f, 0.678091f, 0.678023f, 0.677956f, 0.677888f, 0.677821f, 0.677753f, 0.677686f, 0.677618f, 0.677551f, 0.677483f, 0.677416f,
+0.677348f, 0.67728f, 0.677213f, 0.677145f, 0.677078f, 0.67701f, 0.676942f, 0.676875f, 0.676807f, 0.676739f, 0.676672f, 0.676604f, 0.676536f, 0.676469f, 0.676401f, 0.676333f, 0.676266f, 0.676198f, 0.67613f, 0.676063f,
+0.675995f, 0.675927f, 0.675859f, 0.675792f, 0.675724f, 0.675656f, 0.675588f, 0.675521f, 0.675453f, 0.675385f, 0.675317f, 0.67525f, 0.675182f, 0.675114f, 0.675046f, 0.674978f, 0.67491f, 0.674843f, 0.674775f, 0.674707f,
+0.674639f, 0.674571f, 0.674503f, 0.674435f, 0.674368f, 0.6743f, 0.674232f, 0.674164f, 0.674096f, 0.674028f, 0.67396f, 0.673892f, 0.673824f, 0.673756f, 0.673688f, 0.67362f, 0.673552f, 0.673484f, 0.673416f, 0.673348f,
+0.67328f, 0.673212f, 0.673144f, 0.673076f, 0.673008f, 0.67294f, 0.672872f, 0.672804f, 0.672736f, 0.672668f, 0.6726f, 0.672532f, 0.672464f, 0.672396f, 0.672327f, 0.672259f, 0.672191f, 0.672123f, 0.672055f, 0.671987f,
+0.671919f, 0.671851f, 0.671782f, 0.671714f, 0.671646f, 0.671578f, 0.67151f, 0.671441f, 0.671373f, 0.671305f, 0.671237f, 0.671169f, 0.6711f, 0.671032f, 0.670964f, 0.670896f, 0.670827f, 0.670759f, 0.670691f, 0.670623f,
+0.670554f, 0.670486f, 0.670418f, 0.670349f, 0.670281f, 0.670213f, 0.670144f, 0.670076f, 0.670008f, 0.669939f, 0.669871f, 0.669803f, 0.669734f, 0.669666f, 0.669597f, 0.669529f, 0.669461f, 0.669392f, 0.669324f, 0.669255f,
+0.669187f, 0.669119f, 0.66905f, 0.668982f, 0.668913f, 0.668845f, 0.668776f, 0.668708f, 0.668639f, 0.668571f, 0.668502f, 0.668434f, 0.668365f, 0.668297f, 0.668228f, 0.66816f, 0.668091f, 0.668023f, 0.667954f, 0.667885f,
+0.667817f, 0.667748f, 0.66768f, 0.667611f, 0.667543f, 0.667474f, 0.667405f, 0.667337f, 0.667268f, 0.667199f, 0.667131f, 0.667062f, 0.666993f, 0.666925f, 0.666856f, 0.666787f, 0.666719f, 0.66665f, 0.666581f, 0.666513f,
+0.666444f, 0.666375f, 0.666307f, 0.666238f, 0.666169f, 0.6661f, 0.666032f, 0.665963f, 0.665894f, 0.665825f, 0.665756f, 0.665688f, 0.665619f, 0.66555f, 0.665481f, 0.665412f, 0.665344f, 0.665275f, 0.665206f, 0.665137f,
+0.665068f, 0.664999f, 0.664931f, 0.664862f, 0.664793f, 0.664724f, 0.664655f, 0.664586f, 0.664517f, 0.664448f, 0.664379f, 0.66431f, 0.664242f, 0.664173f, 0.664104f, 0.664035f, 0.663966f, 0.663897f, 0.663828f, 0.663759f,
+0.66369f, 0.663621f, 0.663552f, 0.663483f, 0.663414f, 0.663345f, 0.663276f, 0.663207f, 0.663138f, 0.663069f, 0.662999f, 0.66293f, 0.662861f, 0.662792f, 0.662723f, 0.662654f, 0.662585f, 0.662516f, 0.662447f, 0.662378f,
+0.662309f, 0.662239f, 0.66217f, 0.662101f, 0.662032f, 0.661963f, 0.661894f, 0.661824f, 0.661755f, 0.661686f, 0.661617f, 0.661548f, 0.661478f, 0.661409f, 0.66134f, 0.661271f, 0.661202f, 0.661132f, 0.661063f, 0.660994f,
+0.660924f, 0.660855f, 0.660786f, 0.660717f, 0.660647f, 0.660578f, 0.660509f, 0.660439f, 0.66037f, 0.660301f, 0.660231f, 0.660162f, 0.660093f, 0.660023f, 0.659954f, 0.659885f, 0.659815f, 0.659746f, 0.659676f, 0.659607f,
+0.659538f, 0.659468f, 0.659399f, 0.659329f, 0.65926f, 0.659191f, 0.659121f, 0.659052f, 0.658982f, 0.658913f, 0.658843f, 0.658774f, 0.658704f, 0.658635f, 0.658565f, 0.658496f, 0.658426f, 0.658357f, 0.658287f, 0.658218f,
+0.658148f, 0.658079f, 0.658009f, 0.657939f, 0.65787f, 0.6578f, 0.657731f, 0.657661f, 0.657592f, 0.657522f, 0.657452f, 0.657383f, 0.657313f, 0.657243f, 0.657174f, 0.657104f, 0.657035f, 0.656965f, 0.656895f, 0.656826f,
+0.656756f, 0.656686f, 0.656616f, 0.656547f, 0.656477f, 0.656407f, 0.656338f, 0.656268f, 0.656198f, 0.656128f, 0.656059f, 0.655989f, 0.655919f, 0.655849f, 0.65578f, 0.65571f, 0.65564f, 0.65557f, 0.6555f, 0.655431f,
+0.655361f, 0.655291f, 0.655221f, 0.655151f, 0.655081f, 0.655012f, 0.654942f, 0.654872f, 0.654802f, 0.654732f, 0.654662f, 0.654592f, 0.654522f, 0.654453f, 0.654383f, 0.654313f, 0.654243f, 0.654173f, 0.654103f, 0.654033f,
+0.653963f, 0.653893f, 0.653823f, 0.653753f, 0.653683f, 0.653613f, 0.653543f, 0.653473f, 0.653403f, 0.653333f, 0.653263f, 0.653193f, 0.653123f, 0.653053f, 0.652983f, 0.652913f, 0.652843f, 0.652773f, 0.652703f, 0.652633f,
+0.652563f, 0.652493f, 0.652422f, 0.652352f, 0.652282f, 0.652212f, 0.652142f, 0.652072f, 0.652002f, 0.651932f, 0.651861f, 0.651791f, 0.651721f, 0.651651f, 0.651581f, 0.65151f, 0.65144f, 0.65137f, 0.6513f, 0.65123f,
+0.651159f, 0.651089f, 0.651019f, 0.650949f, 0.650878f, 0.650808f, 0.650738f, 0.650668f, 0.650597f, 0.650527f, 0.650457f, 0.650387f, 0.650316f, 0.650246f, 0.650176f, 0.650105f, 0.650035f, 0.649965f, 0.649894f, 0.649824f,
+0.649754f, 0.649683f, 0.649613f, 0.649542f, 0.649472f, 0.649402f, 0.649331f, 0.649261f, 0.64919f, 0.64912f, 0.64905f, 0.648979f, 0.648909f, 0.648838f, 0.648768f, 0.648697f, 0.648627f, 0.648556f, 0.648486f, 0.648416f,
+0.648345f, 0.648275f, 0.648204f, 0.648134f, 0.648063f, 0.647992f, 0.647922f, 0.647851f, 0.647781f, 0.64771f, 0.64764f, 0.647569f, 0.647499f, 0.647428f, 0.647357f, 0.647287f, 0.647216f, 0.647146f, 0.647075f, 0.647004f,
+0.646934f, 0.646863f, 0.646793f, 0.646722f, 0.646651f, 0.646581f, 0.64651f, 0.646439f, 0.646369f, 0.646298f, 0.646227f, 0.646157f, 0.646086f, 0.646015f, 0.645944f, 0.645874f, 0.645803f, 0.645732f, 0.645661f, 0.645591f,
+0.64552f, 0.645449f, 0.645378f, 0.645308f, 0.645237f, 0.645166f, 0.645095f, 0.645024f, 0.644954f, 0.644883f, 0.644812f, 0.644741f, 0.64467f, 0.6446f, 0.644529f, 0.644458f, 0.644387f, 0.644316f, 0.644245f, 0.644174f,
+0.644103f, 0.644033f, 0.643962f, 0.643891f, 0.64382f, 0.643749f, 0.643678f, 0.643607f, 0.643536f, 0.643465f, 0.643394f, 0.643323f, 0.643252f, 0.643181f, 0.64311f, 0.643039f, 0.642968f, 0.642897f, 0.642826f, 0.642755f,
+0.642684f, 0.642613f, 0.642542f, 0.642471f, 0.6424f, 0.642329f, 0.642258f, 0.642187f, 0.642116f, 0.642045f, 0.641974f, 0.641903f, 0.641832f, 0.64176f, 0.641689f, 0.641618f, 0.641547f, 0.641476f, 0.641405f, 0.641334f,
+0.641262f, 0.641191f, 0.64112f, 0.641049f, 0.640978f, 0.640907f, 0.640835f, 0.640764f, 0.640693f, 0.640622f, 0.640551f, 0.640479f, 0.640408f, 0.640337f, 0.640266f, 0.640194f, 0.640123f, 0.640052f, 0.639981f, 0.639909f,
+0.639838f, 0.639767f, 0.639695f, 0.639624f, 0.639553f, 0.639482f, 0.63941f, 0.639339f, 0.639268f, 0.639196f, 0.639125f, 0.639054f, 0.638982f, 0.638911f, 0.638839f, 0.638768f, 0.638697f, 0.638625f, 0.638554f, 0.638482f,
+0.638411f, 0.63834f, 0.638268f, 0.638197f, 0.638125f, 0.638054f, 0.637982f, 0.637911f, 0.637839f, 0.637768f, 0.637697f, 0.637625f, 0.637554f, 0.637482f, 0.637411f, 0.637339f, 0.637268f, 0.637196f, 0.637124f, 0.637053f,
+0.636981f, 0.63691f, 0.636838f, 0.636767f, 0.636695f, 0.636624f, 0.636552f, 0.63648f, 0.636409f, 0.636337f, 0.636266f, 0.636194f, 0.636122f, 0.636051f, 0.635979f, 0.635907f, 0.635836f, 0.635764f, 0.635692f, 0.635621f,
+0.635549f, 0.635477f, 0.635406f, 0.635334f, 0.635262f, 0.635191f, 0.635119f, 0.635047f, 0.634976f, 0.634904f, 0.634832f, 0.63476f, 0.634689f, 0.634617f, 0.634545f, 0.634473f, 0.634402f, 0.63433f, 0.634258f, 0.634186f,
+0.634114f, 0.634043f, 0.633971f, 0.633899f, 0.633827f, 0.633755f, 0.633683f, 0.633612f, 0.63354f, 0.633468f, 0.633396f, 0.633324f, 0.633252f, 0.63318f, 0.633108f, 0.633037f, 0.632965f, 0.632893f, 0.632821f, 0.632749f,
+0.632677f, 0.632605f, 0.632533f, 0.632461f, 0.632389f, 0.632317f, 0.632245f, 0.632173f, 0.632101f, 0.632029f, 0.631957f, 0.631885f, 0.631813f, 0.631741f, 0.631669f, 0.631597f, 0.631525f, 0.631453f, 0.631381f, 0.631309f,
+0.631237f, 0.631165f, 0.631093f, 0.631021f, 0.630949f, 0.630877f, 0.630805f, 0.630732f, 0.63066f, 0.630588f, 0.630516f, 0.630444f, 0.630372f, 0.6303f, 0.630228f, 0.630155f, 0.630083f, 0.630011f, 0.629939f, 0.629867f,
+0.629795f, 0.629722f, 0.62965f, 0.629578f, 0.629506f, 0.629433f, 0.629361f, 0.629289f, 0.629217f, 0.629145f, 0.629072f, 0.629f, 0.628928f, 0.628856f, 0.628783f, 0.628711f, 0.628639f, 0.628566f, 0.628494f, 0.628422f,
+0.628349f, 0.628277f, 0.628205f, 0.628132f, 0.62806f, 0.627988f, 0.627915f, 0.627843f, 0.627771f, 0.627698f, 0.627626f, 0.627554f, 0.627481f, 0.627409f, 0.627336f, 0.627264f, 0.627192f, 0.627119f, 0.627047f, 0.626974f,
+0.626902f, 0.626829f, 0.626757f, 0.626685f, 0.626612f, 0.62654f, 0.626467f, 0.626395f, 0.626322f, 0.62625f, 0.626177f, 0.626105f, 0.626032f, 0.62596f, 0.625887f, 0.625815f, 0.625742f, 0.625669f, 0.625597f, 0.625524f,
+0.625452f, 0.625379f, 0.625307f, 0.625234f, 0.625161f, 0.625089f, 0.625016f, 0.624944f, 0.624871f, 0.624798f, 0.624726f, 0.624653f, 0.624581f, 0.624508f, 0.624435f, 0.624363f, 0.62429f, 0.624217f, 0.624145f, 0.624072f,
+0.623999f, 0.623926f, 0.623854f, 0.623781f, 0.623708f, 0.623636f, 0.623563f, 0.62349f, 0.623417f, 0.623345f, 0.623272f, 0.623199f, 0.623126f, 0.623054f, 0.622981f, 0.622908f, 0.622835f, 0.622763f, 0.62269f, 0.622617f,
+0.622544f, 0.622471f, 0.622398f, 0.622326f, 0.622253f, 0.62218f, 0.622107f, 0.622034f, 0.621961f, 0.621888f, 0.621816f, 0.621743f, 0.62167f, 0.621597f, 0.621524f, 0.621451f, 0.621378f, 0.621305f, 0.621232f, 0.621159f,
+0.621086f, 0.621014f, 0.620941f, 0.620868f, 0.620795f, 0.620722f, 0.620649f, 0.620576f, 0.620503f, 0.62043f, 0.620357f, 0.620284f, 0.620211f, 0.620138f, 0.620065f, 0.619992f, 0.619919f, 0.619846f, 0.619773f, 0.619699f,
+0.619626f, 0.619553f, 0.61948f, 0.619407f, 0.619334f, 0.619261f, 0.619188f, 0.619115f, 0.619042f, 0.618969f, 0.618895f, 0.618822f, 0.618749f, 0.618676f, 0.618603f, 0.61853f, 0.618457f, 0.618383f, 0.61831f, 0.618237f,
+0.618164f, 0.618091f, 0.618017f, 0.617944f, 0.617871f, 0.617798f, 0.617725f, 0.617651f, 0.617578f, 0.617505f, 0.617432f, 0.617358f, 0.617285f, 0.617212f, 0.617139f, 0.617065f, 0.616992f, 0.616919f, 0.616845f, 0.616772f,
+0.616699f, 0.616626f, 0.616552f, 0.616479f, 0.616406f, 0.616332f, 0.616259f, 0.616186f, 0.616112f, 0.616039f, 0.615965f, 0.615892f, 0.615819f, 0.615745f, 0.615672f, 0.615599f, 0.615525f, 0.615452f, 0.615378f, 0.615305f,
+0.615231f, 0.615158f, 0.615085f, 0.615011f, 0.614938f, 0.614864f, 0.614791f, 0.614717f, 0.614644f, 0.61457f, 0.614497f, 0.614423f, 0.61435f, 0.614276f, 0.614203f, 0.614129f, 0.614056f, 0.613982f, 0.613909f, 0.613835f,
+0.613762f, 0.613688f, 0.613614f, 0.613541f, 0.613467f, 0.613394f, 0.61332f, 0.613246f, 0.613173f, 0.613099f, 0.613026f, 0.612952f, 0.612878f, 0.612805f, 0.612731f, 0.612658f, 0.612584f, 0.61251f, 0.612437f, 0.612363f,
+0.612289f, 0.612216f, 0.612142f, 0.612068f, 0.611994f, 0.611921f, 0.611847f, 0.611773f, 0.6117f, 0.611626f, 0.611552f, 0.611478f, 0.611405f, 0.611331f, 0.611257f, 0.611183f, 0.61111f, 0.611036f, 0.610962f, 0.610888f,
+0.610814f, 0.610741f, 0.610667f, 0.610593f, 0.610519f, 0.610445f, 0.610372f, 0.610298f, 0.610224f, 0.61015f, 0.610076f, 0.610002f, 0.609928f, 0.609855f, 0.609781f, 0.609707f, 0.609633f, 0.609559f, 0.609485f, 0.609411f,
+0.609337f, 0.609263f, 0.609189f, 0.609116f, 0.609042f, 0.608968f, 0.608894f, 0.60882f, 0.608746f, 0.608672f, 0.608598f, 0.608524f, 0.60845f, 0.608376f, 0.608302f, 0.608228f, 0.608154f, 0.60808f, 0.608006f, 0.607932f,
+0.607858f, 0.607784f, 0.60771f, 0.607636f, 0.607562f, 0.607488f, 0.607413f, 0.607339f, 0.607265f, 0.607191f, 0.607117f, 0.607043f, 0.606969f, 0.606895f, 0.606821f, 0.606747f, 0.606672f, 0.606598f, 0.606524f, 0.60645f,
+0.606376f, 0.606302f, 0.606228f, 0.606153f, 0.606079f, 0.606005f, 0.605931f, 0.605857f, 0.605782f, 0.605708f, 0.605634f, 0.60556f, 0.605486f, 0.605411f, 0.605337f, 0.605263f, 0.605189f, 0.605114f, 0.60504f, 0.604966f,
+0.604892f, 0.604817f, 0.604743f, 0.604669f, 0.604594f, 0.60452f, 0.604446f, 0.604372f, 0.604297f, 0.604223f, 0.604149f, 0.604074f, 0.604f, 0.603926f, 0.603851f, 0.603777f, 0.603702f, 0.603628f, 0.603554f, 0.603479f,
+0.603405f, 0.603331f, 0.603256f, 0.603182f, 0.603107f, 0.603033f, 0.602958f, 0.602884f, 0.60281f, 0.602735f, 0.602661f, 0.602586f, 0.602512f, 0.602437f, 0.602363f, 0.602288f, 0.602214f, 0.602139f, 0.602065f, 0.60199f,
+0.601916f, 0.601841f, 0.601767f, 0.601692f, 0.601618f, 0.601543f, 0.601469f, 0.601394f, 0.60132f, 0.601245f, 0.60117f, 0.601096f, 0.601021f, 0.600947f, 0.600872f, 0.600798f, 0.600723f, 0.600648f, 0.600574f, 0.600499f,
+0.600425f, 0.60035f, 0.600275f, 0.600201f, 0.600126f, 0.600051f, 0.599977f, 0.599902f, 0.599827f, 0.599753f, 0.599678f, 0.599603f, 0.599529f, 0.599454f, 0.599379f, 0.599304f, 0.59923f, 0.599155f, 0.59908f, 0.599006f,
+0.598931f, 0.598856f, 0.598781f, 0.598707f, 0.598632f, 0.598557f, 0.598482f, 0.598407f, 0.598333f, 0.598258f, 0.598183f, 0.598108f, 0.598033f, 0.597959f, 0.597884f, 0.597809f, 0.597734f, 0.597659f, 0.597585f, 0.59751f,
+0.597435f, 0.59736f, 0.597285f, 0.59721f, 0.597135f, 0.59706f, 0.596986f, 0.596911f, 0.596836f, 0.596761f, 0.596686f, 0.596611f, 0.596536f, 0.596461f, 0.596386f, 0.596311f, 0.596236f, 0.596161f, 0.596086f, 0.596011f,
+0.595936f, 0.595861f, 0.595787f, 0.595712f, 0.595637f, 0.595562f, 0.595487f, 0.595412f, 0.595336f, 0.595261f, 0.595186f, 0.595111f, 0.595036f, 0.594961f, 0.594886f, 0.594811f, 0.594736f, 0.594661f, 0.594586f, 0.594511f,
+0.594436f, 0.594361f, 0.594286f, 0.594211f, 0.594135f, 0.59406f, 0.593985f, 0.59391f, 0.593835f, 0.59376f, 0.593685f, 0.59361f, 0.593534f, 0.593459f, 0.593384f, 0.593309f, 0.593234f, 0.593158f, 0.593083f, 0.593008f,
+0.592933f, 0.592858f, 0.592782f, 0.592707f, 0.592632f, 0.592557f, 0.592482f, 0.592406f, 0.592331f, 0.592256f, 0.592181f, 0.592105f, 0.59203f, 0.591955f, 0.59188f, 0.591804f, 0.591729f, 0.591654f, 0.591578f, 0.591503f,
+0.591428f, 0.591352f, 0.591277f, 0.591202f, 0.591126f, 0.591051f, 0.590976f, 0.5909f, 0.590825f, 0.59075f, 0.590674f, 0.590599f, 0.590523f, 0.590448f, 0.590373f, 0.590297f, 0.590222f, 0.590147f, 0.590071f, 0.589996f,
+0.58992f, 0.589845f, 0.589769f, 0.589694f, 0.589618f, 0.589543f, 0.589468f, 0.589392f, 0.589317f, 0.589241f, 0.589166f, 0.58909f, 0.589015f, 0.588939f, 0.588864f, 0.588788f, 0.588713f, 0.588637f, 0.588562f, 0.588486f,
+0.588411f, 0.588335f, 0.588259f, 0.588184f, 0.588108f, 0.588033f, 0.587957f, 0.587882f, 0.587806f, 0.58773f, 0.587655f, 0.587579f, 0.587504f, 0.587428f, 0.587352f, 0.587277f, 0.587201f, 0.587125f, 0.58705f, 0.586974f,
+0.586899f, 0.586823f, 0.586747f, 0.586672f, 0.586596f, 0.58652f, 0.586444f, 0.586369f, 0.586293f, 0.586217f, 0.586142f, 0.586066f, 0.58599f, 0.585915f, 0.585839f, 0.585763f, 0.585687f, 0.585612f, 0.585536f, 0.58546f,
+0.585384f, 0.585309f, 0.585233f, 0.585157f, 0.585081f, 0.585005f, 0.58493f, 0.584854f, 0.584778f, 0.584702f, 0.584626f, 0.584551f, 0.584475f, 0.584399f, 0.584323f, 0.584247f, 0.584171f, 0.584095f, 0.58402f, 0.583944f,
+0.583868f, 0.583792f, 0.583716f, 0.58364f, 0.583564f, 0.583488f, 0.583413f, 0.583337f, 0.583261f, 0.583185f, 0.583109f, 0.583033f, 0.582957f, 0.582881f, 0.582805f, 0.582729f, 0.582653f, 0.582577f, 0.582501f, 0.582425f,
+0.582349f, 0.582273f, 0.582197f, 0.582121f, 0.582045f, 0.581969f, 0.581893f, 0.581817f, 0.581741f, 0.581665f, 0.581589f, 0.581513f, 0.581437f, 0.581361f, 0.581285f, 0.581209f, 0.581133f, 0.581057f, 0.580981f, 0.580904f,
+0.580828f, 0.580752f, 0.580676f, 0.5806f, 0.580524f, 0.580448f, 0.580372f, 0.580296f, 0.580219f, 0.580143f, 0.580067f, 0.579991f, 0.579915f, 0.579839f, 0.579762f, 0.579686f, 0.57961f, 0.579534f, 0.579458f, 0.579382f,
+0.579305f, 0.579229f, 0.579153f, 0.579077f, 0.579f, 0.578924f, 0.578848f, 0.578772f, 0.578695f, 0.578619f, 0.578543f, 0.578467f, 0.57839f, 0.578314f, 0.578238f, 0.578162f, 0.578085f, 0.578009f, 0.577933f, 0.577856f,
+0.57778f, 0.577704f, 0.577627f, 0.577551f, 0.577475f, 0.577398f, 0.577322f, 0.577246f, 0.577169f, 0.577093f, 0.577017f, 0.57694f, 0.576864f, 0.576788f, 0.576711f, 0.576635f, 0.576558f, 0.576482f, 0.576406f, 0.576329f,
+0.576253f, 0.576176f, 0.5761f, 0.576023f, 0.575947f, 0.57587f, 0.575794f, 0.575718f, 0.575641f, 0.575565f, 0.575488f, 0.575412f, 0.575335f, 0.575259f, 0.575182f, 0.575106f, 0.575029f, 0.574953f, 0.574876f, 0.5748f,
+0.574723f, 0.574647f, 0.57457f, 0.574493f, 0.574417f, 0.57434f, 0.574264f, 0.574187f, 0.574111f, 0.574034f, 0.573958f, 0.573881f, 0.573804f, 0.573728f, 0.573651f, 0.573575f, 0.573498f, 0.573421f, 0.573345f, 0.573268f,
+0.573191f, 0.573115f, 0.573038f, 0.572961f, 0.572885f, 0.572808f, 0.572731f, 0.572655f, 0.572578f, 0.572501f, 0.572425f, 0.572348f, 0.572271f, 0.572195f, 0.572118f, 0.572041f, 0.571964f, 0.571888f, 0.571811f, 0.571734f,
+0.571658f, 0.571581f, 0.571504f, 0.571427f, 0.571351f, 0.571274f, 0.571197f, 0.57112f, 0.571043f, 0.570967f, 0.57089f, 0.570813f, 0.570736f, 0.570659f, 0.570583f, 0.570506f, 0.570429f, 0.570352f, 0.570275f, 0.570198f,
+0.570122f, 0.570045f, 0.569968f, 0.569891f, 0.569814f, 0.569737f, 0.56966f, 0.569583f, 0.569507f, 0.56943f, 0.569353f, 0.569276f, 0.569199f, 0.569122f, 0.569045f, 0.568968f, 0.568891f, 0.568814f, 0.568737f, 0.56866f,
+0.568583f, 0.568506f, 0.56843f, 0.568353f, 0.568276f, 0.568199f, 0.568122f, 0.568045f, 0.567968f, 0.567891f, 0.567814f, 0.567737f, 0.56766f, 0.567583f, 0.567506f, 0.567428f, 0.567351f, 0.567274f, 0.567197f, 0.56712f,
+0.567043f, 0.566966f, 0.566889f, 0.566812f, 0.566735f, 0.566658f, 0.566581f, 0.566504f, 0.566427f, 0.566349f, 0.566272f, 0.566195f, 0.566118f, 0.566041f, 0.565964f, 0.565887f, 0.56581f, 0.565732f, 0.565655f, 0.565578f,
+0.565501f, 0.565424f, 0.565347f, 0.565269f, 0.565192f, 0.565115f, 0.565038f, 0.564961f, 0.564883f, 0.564806f, 0.564729f, 0.564652f, 0.564575f, 0.564497f, 0.56442f, 0.564343f, 0.564266f, 0.564188f, 0.564111f, 0.564034f,
+0.563957f, 0.563879f, 0.563802f, 0.563725f, 0.563647f, 0.56357f, 0.563493f, 0.563416f, 0.563338f, 0.563261f, 0.563184f, 0.563106f, 0.563029f, 0.562952f, 0.562874f, 0.562797f, 0.56272f, 0.562642f, 0.562565f, 0.562487f,
+0.56241f, 0.562333f, 0.562255f, 0.562178f, 0.562101f, 0.562023f, 0.561946f, 0.561868f, 0.561791f, 0.561714f, 0.561636f, 0.561559f, 0.561481f, 0.561404f, 0.561326f, 0.561249f, 0.561171f, 0.561094f, 0.561017f, 0.560939f,
+0.560862f, 0.560784f, 0.560707f, 0.560629f, 0.560552f, 0.560474f, 0.560397f, 0.560319f, 0.560242f, 0.560164f, 0.560087f, 0.560009f, 0.559932f, 0.559854f, 0.559776f, 0.559699f, 0.559621f, 0.559544f, 0.559466f, 0.559389f,
+0.559311f, 0.559233f, 0.559156f, 0.559078f, 0.559001f, 0.558923f, 0.558845f, 0.558768f, 0.55869f, 0.558613f, 0.558535f, 0.558457f, 0.55838f, 0.558302f, 0.558224f, 0.558147f, 0.558069f, 0.557991f, 0.557914f, 0.557836f,
+0.557758f, 0.557681f, 0.557603f, 0.557525f, 0.557448f, 0.55737f, 0.557292f, 0.557215f, 0.557137f, 0.557059f, 0.556981f, 0.556904f, 0.556826f, 0.556748f, 0.55667f, 0.556593f, 0.556515f, 0.556437f, 0.556359f, 0.556282f,
+0.556204f, 0.556126f, 0.556048f, 0.55597f, 0.555893f, 0.555815f, 0.555737f, 0.555659f, 0.555581f, 0.555504f, 0.555426f, 0.555348f, 0.55527f, 0.555192f, 0.555114f, 0.555037f, 0.554959f, 0.554881f, 0.554803f, 0.554725f,
+0.554647f, 0.554569f, 0.554491f, 0.554413f, 0.554336f, 0.554258f, 0.55418f, 0.554102f, 0.554024f, 0.553946f, 0.553868f, 0.55379f, 0.553712f, 0.553634f, 0.553556f, 0.553478f, 0.5534f, 0.553322f, 0.553244f, 0.553166f,
+0.553089f, 0.553011f, 0.552933f, 0.552855f, 0.552777f, 0.552699f, 0.552621f, 0.552543f, 0.552464f, 0.552386f, 0.552308f, 0.55223f, 0.552152f, 0.552074f, 0.551996f, 0.551918f, 0.55184f, 0.551762f, 0.551684f, 0.551606f,
+0.551528f, 0.55145f, 0.551372f, 0.551294f, 0.551215f, 0.551137f, 0.551059f, 0.550981f, 0.550903f, 0.550825f, 0.550747f, 0.550669f, 0.550591f, 0.550512f, 0.550434f, 0.550356f, 0.550278f, 0.5502f, 0.550122f, 0.550043f,
+0.549965f, 0.549887f, 0.549809f, 0.549731f, 0.549652f, 0.549574f, 0.549496f, 0.549418f, 0.54934f, 0.549261f, 0.549183f, 0.549105f, 0.549027f, 0.548948f, 0.54887f, 0.548792f, 0.548714f, 0.548635f, 0.548557f, 0.548479f,
+0.548401f, 0.548322f, 0.548244f, 0.548166f, 0.548087f, 0.548009f, 0.547931f, 0.547853f, 0.547774f, 0.547696f, 0.547618f, 0.547539f, 0.547461f, 0.547383f, 0.547304f, 0.547226f, 0.547148f, 0.547069f, 0.546991f, 0.546912f,
+0.546834f, 0.546756f, 0.546677f, 0.546599f, 0.546521f, 0.546442f, 0.546364f, 0.546285f, 0.546207f, 0.546128f, 0.54605f, 0.545972f, 0.545893f, 0.545815f, 0.545736f, 0.545658f, 0.545579f, 0.545501f, 0.545423f, 0.545344f,
+0.545266f, 0.545187f, 0.545109f, 0.54503f, 0.544952f, 0.544873f, 0.544795f, 0.544716f, 0.544638f, 0.544559f, 0.544481f, 0.544402f, 0.544324f, 0.544245f, 0.544166f, 0.544088f, 0.544009f, 0.543931f, 0.543852f, 0.543774f,
+0.543695f, 0.543617f, 0.543538f, 0.543459f, 0.543381f, 0.543302f, 0.543224f, 0.543145f, 0.543066f, 0.542988f, 0.542909f, 0.542831f, 0.542752f, 0.542673f, 0.542595f, 0.542516f, 0.542437f, 0.542359f, 0.54228f, 0.542201f,
+0.542123f, 0.542044f, 0.541965f, 0.541887f, 0.541808f, 0.541729f, 0.541651f, 0.541572f, 0.541493f, 0.541415f, 0.541336f, 0.541257f, 0.541178f, 0.5411f, 0.541021f, 0.540942f, 0.540863f, 0.540785f, 0.540706f, 0.540627f,
+0.540548f, 0.54047f, 0.540391f, 0.540312f, 0.540233f, 0.540155f, 0.540076f, 0.539997f, 0.539918f, 0.539839f, 0.539761f, 0.539682f, 0.539603f, 0.539524f, 0.539445f, 0.539366f, 0.539288f, 0.539209f, 0.53913f, 0.539051f,
+0.538972f, 0.538893f, 0.538815f, 0.538736f, 0.538657f, 0.538578f, 0.538499f, 0.53842f, 0.538341f, 0.538262f, 0.538183f, 0.538105f, 0.538026f, 0.537947f, 0.537868f, 0.537789f, 0.53771f, 0.537631f, 0.537552f, 0.537473f,
+0.537394f, 0.537315f, 0.537236f, 0.537157f, 0.537078f, 0.536999f, 0.53692f, 0.536841f, 0.536762f, 0.536683f, 0.536604f, 0.536525f, 0.536446f, 0.536367f, 0.536288f, 0.536209f, 0.53613f, 0.536051f, 0.535972f, 0.535893f,
+0.535814f, 0.535735f, 0.535656f, 0.535577f, 0.535498f, 0.535419f, 0.53534f, 0.535261f, 0.535182f, 0.535103f, 0.535024f, 0.534944f, 0.534865f, 0.534786f, 0.534707f, 0.534628f, 0.534549f, 0.53447f, 0.534391f, 0.534312f,
+0.534232f, 0.534153f, 0.534074f, 0.533995f, 0.533916f, 0.533837f, 0.533757f, 0.533678f, 0.533599f, 0.53352f, 0.533441f, 0.533362f, 0.533282f, 0.533203f, 0.533124f, 0.533045f, 0.532966f, 0.532886f, 0.532807f, 0.532728f,
+0.532649f, 0.532569f, 0.53249f, 0.532411f, 0.532332f, 0.532252f, 0.532173f, 0.532094f, 0.532015f, 0.531935f, 0.531856f, 0.531777f, 0.531698f, 0.531618f, 0.531539f, 0.53146f, 0.53138f, 0.531301f, 0.531222f, 0.531142f,
+0.531063f, 0.530984f, 0.530905f, 0.530825f, 0.530746f, 0.530666f, 0.530587f, 0.530508f, 0.530428f, 0.530349f, 0.53027f, 0.53019f, 0.530111f, 0.530032f, 0.529952f, 0.529873f, 0.529793f, 0.529714f, 0.529635f, 0.529555f,
+0.529476f, 0.529396f, 0.529317f, 0.529238f, 0.529158f, 0.529079f, 0.528999f, 0.52892f, 0.52884f, 0.528761f, 0.528681f, 0.528602f, 0.528522f, 0.528443f, 0.528364f, 0.528284f, 0.528205f, 0.528125f, 0.528046f, 0.527966f,
+0.527887f, 0.527807f, 0.527728f, 0.527648f, 0.527569f, 0.527489f, 0.527409f, 0.52733f, 0.52725f, 0.527171f, 0.527091f, 0.527012f, 0.526932f, 0.526853f, 0.526773f, 0.526694f, 0.526614f, 0.526534f, 0.526455f, 0.526375f,
+0.526296f, 0.526216f, 0.526136f, 0.526057f, 0.525977f, 0.525898f, 0.525818f, 0.525738f, 0.525659f, 0.525579f, 0.525499f, 0.52542f, 0.52534f, 0.52526f, 0.525181f, 0.525101f, 0.525021f, 0.524942f, 0.524862f, 0.524782f,
+0.524703f, 0.524623f, 0.524543f, 0.524464f, 0.524384f, 0.524304f, 0.524225f, 0.524145f, 0.524065f, 0.523985f, 0.523906f, 0.523826f, 0.523746f, 0.523667f, 0.523587f, 0.523507f, 0.523427f, 0.523347f, 0.523268f, 0.523188f,
+0.523108f, 0.523028f, 0.522949f, 0.522869f, 0.522789f, 0.522709f, 0.522629f, 0.52255f, 0.52247f, 0.52239f, 0.52231f, 0.52223f, 0.522151f, 0.522071f, 0.521991f, 0.521911f, 0.521831f, 0.521751f, 0.521672f, 0.521592f,
+0.521512f, 0.521432f, 0.521352f, 0.521272f, 0.521192f, 0.521112f, 0.521033f, 0.520953f, 0.520873f, 0.520793f, 0.520713f, 0.520633f, 0.520553f, 0.520473f, 0.520393f, 0.520313f, 0.520233f, 0.520154f, 0.520074f, 0.519994f,
+0.519914f, 0.519834f, 0.519754f, 0.519674f, 0.519594f, 0.519514f, 0.519434f, 0.519354f, 0.519274f, 0.519194f, 0.519114f, 0.519034f, 0.518954f, 0.518874f, 0.518794f, 0.518714f, 0.518634f, 0.518554f, 0.518474f, 0.518394f,
+0.518314f, 0.518234f, 0.518154f, 0.518074f, 0.517994f, 0.517914f, 0.517833f, 0.517753f, 0.517673f, 0.517593f, 0.517513f, 0.517433f, 0.517353f, 0.517273f, 0.517193f, 0.517113f, 0.517033f, 0.516953f, 0.516872f, 0.516792f,
+0.516712f, 0.516632f, 0.516552f, 0.516472f, 0.516392f, 0.516311f, 0.516231f, 0.516151f, 0.516071f, 0.515991f, 0.515911f, 0.515831f, 0.51575f, 0.51567f, 0.51559f, 0.51551f, 0.51543f, 0.515349f, 0.515269f, 0.515189f,
+0.515109f, 0.515029f, 0.514948f, 0.514868f, 0.514788f, 0.514708f, 0.514627f, 0.514547f, 0.514467f, 0.514387f, 0.514306f, 0.514226f, 0.514146f, 0.514066f, 0.513985f, 0.513905f, 0.513825f, 0.513745f, 0.513664f, 0.513584f,
+0.513504f, 0.513423f, 0.513343f, 0.513263f, 0.513182f, 0.513102f, 0.513022f, 0.512942f, 0.512861f, 0.512781f, 0.512701f, 0.51262f, 0.51254f, 0.512459f, 0.512379f, 0.512299f, 0.512218f, 0.512138f, 0.512058f, 0.511977f,
+0.511897f, 0.511817f, 0.511736f, 0.511656f, 0.511575f, 0.511495f, 0.511415f, 0.511334f, 0.511254f, 0.511173f, 0.511093f, 0.511012f, 0.510932f, 0.510852f, 0.510771f, 0.510691f, 0.51061f, 0.51053f, 0.510449f, 0.510369f,
+0.510288f, 0.510208f, 0.510127f, 0.510047f, 0.509967f, 0.509886f, 0.509806f, 0.509725f, 0.509645f, 0.509564f, 0.509484f, 0.509403f, 0.509323f, 0.509242f, 0.509161f, 0.509081f, 0.509f, 0.50892f, 0.508839f, 0.508759f,
+0.508678f, 0.508598f, 0.508517f, 0.508437f, 0.508356f, 0.508275f, 0.508195f, 0.508114f, 0.508034f, 0.507953f, 0.507873f, 0.507792f, 0.507711f, 0.507631f, 0.50755f, 0.50747f, 0.507389f, 0.507308f, 0.507228f, 0.507147f,
+0.507066f, 0.506986f, 0.506905f, 0.506825f, 0.506744f, 0.506663f, 0.506583f, 0.506502f, 0.506421f, 0.506341f, 0.50626f, 0.506179f, 0.506099f, 0.506018f, 0.505937f, 0.505856f, 0.505776f, 0.505695f, 0.505614f, 0.505534f,
+0.505453f, 0.505372f, 0.505291f, 0.505211f, 0.50513f, 0.505049f, 0.504969f, 0.504888f, 0.504807f, 0.504726f, 0.504646f, 0.504565f, 0.504484f, 0.504403f, 0.504322f, 0.504242f, 0.504161f, 0.50408f, 0.503999f, 0.503919f,
+0.503838f, 0.503757f, 0.503676f, 0.503595f, 0.503515f, 0.503434f, 0.503353f, 0.503272f, 0.503191f, 0.50311f, 0.50303f, 0.502949f, 0.502868f, 0.502787f, 0.502706f, 0.502625f, 0.502544f, 0.502464f, 0.502383f, 0.502302f,
+0.502221f, 0.50214f, 0.502059f, 0.501978f, 0.501897f, 0.501817f, 0.501736f, 0.501655f, 0.501574f, 0.501493f, 0.501412f, 0.501331f, 0.50125f, 0.501169f, 0.501088f, 0.501007f, 0.500926f, 0.500845f, 0.500764f, 0.500684f,
+0.500603f, 0.500522f, 0.500441f, 0.50036f, 0.500279f, 0.500198f, 0.500117f, 0.500036f, 0.499955f, 0.499874f, 0.499793f, 0.499712f, 0.499631f, 0.49955f, 0.499469f, 0.499388f, 0.499307f, 0.499226f, 0.499145f, 0.499064f,
+0.498983f, 0.498902f, 0.49882f, 0.498739f, 0.498658f, 0.498577f, 0.498496f, 0.498415f, 0.498334f, 0.498253f, 0.498172f, 0.498091f, 0.49801f, 0.497929f, 0.497848f, 0.497766f, 0.497685f, 0.497604f, 0.497523f, 0.497442f,
+0.497361f, 0.49728f, 0.497199f, 0.497118f, 0.497036f, 0.496955f, 0.496874f, 0.496793f, 0.496712f, 0.496631f, 0.49655f, 0.496468f, 0.496387f, 0.496306f, 0.496225f, 0.496144f, 0.496062f, 0.495981f, 0.4959f, 0.495819f,
+0.495738f, 0.495657f, 0.495575f, 0.495494f, 0.495413f, 0.495332f, 0.49525f, 0.495169f, 0.495088f, 0.495007f, 0.494926f, 0.494844f, 0.494763f, 0.494682f, 0.494601f, 0.494519f, 0.494438f, 0.494357f, 0.494275f, 0.494194f,
+0.494113f, 0.494032f, 0.49395f, 0.493869f, 0.493788f, 0.493706f, 0.493625f, 0.493544f, 0.493463f, 0.493381f, 0.4933f, 0.493219f, 0.493137f, 0.493056f, 0.492975f, 0.492893f, 0.492812f, 0.492731f, 0.492649f, 0.492568f,
+0.492487f, 0.492405f, 0.492324f, 0.492242f, 0.492161f, 0.49208f, 0.491998f, 0.491917f, 0.491836f, 0.491754f, 0.491673f, 0.491591f, 0.49151f, 0.491429f, 0.491347f, 0.491266f, 0.491184f, 0.491103f, 0.491022f, 0.49094f,
+0.490859f, 0.490777f, 0.490696f, 0.490614f, 0.490533f, 0.490451f, 0.49037f, 0.490289f, 0.490207f, 0.490126f, 0.490044f, 0.489963f, 0.489881f, 0.4898f, 0.489718f, 0.489637f, 0.489555f, 0.489474f, 0.489392f, 0.489311f,
+0.489229f, 0.489148f, 0.489066f, 0.488985f, 0.488903f, 0.488822f, 0.48874f, 0.488659f, 0.488577f, 0.488495f, 0.488414f, 0.488332f, 0.488251f, 0.488169f, 0.488088f, 0.488006f, 0.487925f, 0.487843f, 0.487761f, 0.48768f,
+0.487598f, 0.487517f, 0.487435f, 0.487353f, 0.487272f, 0.48719f, 0.487109f, 0.487027f, 0.486945f, 0.486864f, 0.486782f, 0.486701f, 0.486619f, 0.486537f, 0.486456f, 0.486374f, 0.486292f, 0.486211f, 0.486129f, 0.486047f,
+0.485966f, 0.485884f, 0.485802f, 0.485721f, 0.485639f, 0.485557f, 0.485476f, 0.485394f, 0.485312f, 0.485231f, 0.485149f, 0.485067f, 0.484985f, 0.484904f, 0.484822f, 0.48474f, 0.484659f, 0.484577f, 0.484495f, 0.484413f,
+0.484332f, 0.48425f, 0.484168f, 0.484086f, 0.484005f, 0.483923f, 0.483841f, 0.483759f, 0.483678f, 0.483596f, 0.483514f, 0.483432f, 0.483351f, 0.483269f, 0.483187f, 0.483105f, 0.483023f, 0.482942f, 0.48286f, 0.482778f,
+0.482696f, 0.482614f, 0.482533f, 0.482451f, 0.482369f, 0.482287f, 0.482205f, 0.482123f, 0.482042f, 0.48196f, 0.481878f, 0.481796f, 0.481714f, 0.481632f, 0.48155f, 0.481469f, 0.481387f, 0.481305f, 0.481223f, 0.481141f,
+0.481059f, 0.480977f, 0.480895f, 0.480814f, 0.480732f, 0.48065f, 0.480568f, 0.480486f, 0.480404f, 0.480322f, 0.48024f, 0.480158f, 0.480076f, 0.479994f, 0.479912f, 0.479831f, 0.479749f, 0.479667f, 0.479585f, 0.479503f,
+0.479421f, 0.479339f, 0.479257f, 0.479175f, 0.479093f, 0.479011f, 0.478929f, 0.478847f, 0.478765f, 0.478683f, 0.478601f, 0.478519f, 0.478437f, 0.478355f, 0.478273f, 0.478191f, 0.478109f, 0.478027f, 0.477945f, 0.477863f,
+0.477781f, 0.477699f, 0.477617f, 0.477535f, 0.477453f, 0.477371f, 0.477289f, 0.477207f, 0.477125f, 0.477042f, 0.47696f, 0.476878f, 0.476796f, 0.476714f, 0.476632f, 0.47655f, 0.476468f, 0.476386f, 0.476304f, 0.476222f,
+0.47614f, 0.476057f, 0.475975f, 0.475893f, 0.475811f, 0.475729f, 0.475647f, 0.475565f, 0.475483f, 0.4754f, 0.475318f, 0.475236f, 0.475154f, 0.475072f, 0.47499f, 0.474908f, 0.474825f, 0.474743f, 0.474661f, 0.474579f,
+0.474497f, 0.474415f, 0.474332f, 0.47425f, 0.474168f, 0.474086f, 0.474004f, 0.473921f, 0.473839f, 0.473757f, 0.473675f, 0.473593f, 0.47351f, 0.473428f, 0.473346f, 0.473264f, 0.473181f, 0.473099f, 0.473017f, 0.472935f,
+0.472853f, 0.47277f, 0.472688f, 0.472606f, 0.472524f, 0.472441f, 0.472359f, 0.472277f, 0.472194f, 0.472112f, 0.47203f, 0.471948f, 0.471865f, 0.471783f, 0.471701f, 0.471618f, 0.471536f, 0.471454f, 0.471372f, 0.471289f,
+0.471207f, 0.471125f, 0.471042f, 0.47096f, 0.470878f, 0.470795f, 0.470713f, 0.470631f, 0.470548f, 0.470466f, 0.470384f, 0.470301f, 0.470219f, 0.470136f, 0.470054f, 0.469972f, 0.469889f, 0.469807f, 0.469725f, 0.469642f,
+0.46956f, 0.469477f, 0.469395f, 0.469313f, 0.46923f, 0.469148f, 0.469066f, 0.468983f, 0.468901f, 0.468818f, 0.468736f, 0.468653f, 0.468571f, 0.468489f, 0.468406f, 0.468324f, 0.468241f, 0.468159f, 0.468076f, 0.467994f,
+0.467911f, 0.467829f, 0.467747f, 0.467664f, 0.467582f, 0.467499f, 0.467417f, 0.467334f, 0.467252f, 0.467169f, 0.467087f, 0.467004f, 0.466922f, 0.466839f, 0.466757f, 0.466674f, 0.466592f, 0.466509f, 0.466427f, 0.466344f,
+0.466262f, 0.466179f, 0.466097f, 0.466014f, 0.465932f, 0.465849f, 0.465767f, 0.465684f, 0.465601f, 0.465519f, 0.465436f, 0.465354f, 0.465271f, 0.465189f, 0.465106f, 0.465023f, 0.464941f, 0.464858f, 0.464776f, 0.464693f,
+0.464611f, 0.464528f, 0.464445f, 0.464363f, 0.46428f, 0.464198f, 0.464115f, 0.464032f, 0.46395f, 0.463867f, 0.463784f, 0.463702f, 0.463619f, 0.463537f, 0.463454f, 0.463371f, 0.463289f, 0.463206f, 0.463123f, 0.463041f,
+0.462958f, 0.462875f, 0.462793f, 0.46271f, 0.462627f, 0.462545f, 0.462462f, 0.462379f, 0.462297f, 0.462214f, 0.462131f, 0.462049f, 0.461966f, 0.461883f, 0.461801f, 0.461718f, 0.461635f, 0.461552f, 0.46147f, 0.461387f,
+0.461304f, 0.461222f, 0.461139f, 0.461056f, 0.460973f, 0.460891f, 0.460808f, 0.460725f, 0.460642f, 0.46056f, 0.460477f, 0.460394f, 0.460311f, 0.460229f, 0.460146f, 0.460063f, 0.45998f, 0.459897f, 0.459815f, 0.459732f,
+0.459649f, 0.459566f, 0.459484f, 0.459401f, 0.459318f, 0.459235f, 0.459152f, 0.459069f, 0.458987f, 0.458904f, 0.458821f, 0.458738f, 0.458655f, 0.458573f, 0.45849f, 0.458407f, 0.458324f, 0.458241f, 0.458158f, 0.458076f,
+0.457993f, 0.45791f, 0.457827f, 0.457744f, 0.457661f, 0.457578f, 0.457495f, 0.457413f, 0.45733f, 0.457247f, 0.457164f, 0.457081f, 0.456998f, 0.456915f, 0.456832f, 0.456749f, 0.456667f, 0.456584f, 0.456501f, 0.456418f,
+0.456335f, 0.456252f, 0.456169f, 0.456086f, 0.456003f, 0.45592f, 0.455837f, 0.455754f, 0.455671f, 0.455588f, 0.455506f, 0.455423f, 0.45534f, 0.455257f, 0.455174f, 0.455091f, 0.455008f, 0.454925f, 0.454842f, 0.454759f,
+0.454676f, 0.454593f, 0.45451f, 0.454427f, 0.454344f, 0.454261f, 0.454178f, 0.454095f, 0.454012f, 0.453929f, 0.453846f, 0.453763f, 0.45368f, 0.453597f, 0.453514f, 0.453431f, 0.453348f, 0.453265f, 0.453182f, 0.453099f,
+0.453016f, 0.452932f, 0.452849f, 0.452766f, 0.452683f, 0.4526f, 0.452517f, 0.452434f, 0.452351f, 0.452268f, 0.452185f, 0.452102f, 0.452019f, 0.451936f, 0.451853f, 0.451769f, 0.451686f, 0.451603f, 0.45152f, 0.451437f,
+0.451354f, 0.451271f, 0.451188f, 0.451105f, 0.451021f, 0.450938f, 0.450855f, 0.450772f, 0.450689f, 0.450606f, 0.450523f, 0.45044f, 0.450356f, 0.450273f, 0.45019f, 0.450107f, 0.450024f, 0.449941f, 0.449857f, 0.449774f,
+0.449691f, 0.449608f, 0.449525f, 0.449442f, 0.449358f, 0.449275f, 0.449192f, 0.449109f, 0.449026f, 0.448942f, 0.448859f, 0.448776f, 0.448693f, 0.44861f, 0.448526f, 0.448443f, 0.44836f, 0.448277f, 0.448193f, 0.44811f,
+0.448027f, 0.447944f, 0.447861f, 0.447777f, 0.447694f, 0.447611f, 0.447528f, 0.447444f, 0.447361f, 0.447278f, 0.447195f, 0.447111f, 0.447028f, 0.446945f, 0.446861f, 0.446778f, 0.446695f, 0.446612f, 0.446528f, 0.446445f,
+0.446362f, 0.446278f, 0.446195f, 0.446112f, 0.446029f, 0.445945f, 0.445862f, 0.445779f, 0.445695f, 0.445612f, 0.445529f, 0.445445f, 0.445362f, 0.445279f, 0.445195f, 0.445112f, 0.445029f, 0.444945f, 0.444862f, 0.444779f,
+0.444695f, 0.444612f, 0.444529f, 0.444445f, 0.444362f, 0.444278f, 0.444195f, 0.444112f, 0.444028f, 0.443945f, 0.443862f, 0.443778f, 0.443695f, 0.443611f, 0.443528f, 0.443445f, 0.443361f, 0.443278f, 0.443194f, 0.443111f,
+0.443028f, 0.442944f, 0.442861f, 0.442777f, 0.442694f, 0.44261f, 0.442527f, 0.442444f, 0.44236f, 0.442277f, 0.442193f, 0.44211f, 0.442026f, 0.441943f, 0.441859f, 0.441776f, 0.441692f, 0.441609f, 0.441526f, 0.441442f,
+0.441359f, 0.441275f, 0.441192f, 0.441108f, 0.441025f, 0.440941f, 0.440858f, 0.440774f, 0.440691f, 0.440607f, 0.440524f, 0.44044f, 0.440357f, 0.440273f, 0.44019f, 0.440106f, 0.440023f, 0.439939f, 0.439856f, 0.439772f,
+0.439689f, 0.439605f, 0.439521f, 0.439438f, 0.439354f, 0.439271f, 0.439187f, 0.439104f, 0.43902f, 0.438937f, 0.438853f, 0.438769f, 0.438686f, 0.438602f, 0.438519f, 0.438435f, 0.438352f, 0.438268f, 0.438184f, 0.438101f,
+0.438017f, 0.437934f, 0.43785f, 0.437766f, 0.437683f, 0.437599f, 0.437516f, 0.437432f, 0.437348f, 0.437265f, 0.437181f, 0.437098f, 0.437014f, 0.43693f, 0.436847f, 0.436763f, 0.436679f, 0.436596f, 0.436512f, 0.436429f,
+0.436345f, 0.436261f, 0.436178f, 0.436094f, 0.43601f, 0.435927f, 0.435843f, 0.435759f, 0.435676f, 0.435592f, 0.435508f, 0.435425f, 0.435341f, 0.435257f, 0.435174f, 0.43509f, 0.435006f, 0.434922f, 0.434839f, 0.434755f,
+0.434671f, 0.434588f, 0.434504f, 0.43442f, 0.434336f, 0.434253f, 0.434169f, 0.434085f, 0.434002f, 0.433918f, 0.433834f, 0.43375f, 0.433667f, 0.433583f, 0.433499f, 0.433415f, 0.433332f, 0.433248f, 0.433164f, 0.43308f,
+0.432997f, 0.432913f, 0.432829f, 0.432745f, 0.432662f, 0.432578f, 0.432494f, 0.43241f, 0.432326f, 0.432243f, 0.432159f, 0.432075f, 0.431991f, 0.431908f, 0.431824f, 0.43174f, 0.431656f, 0.431572f, 0.431489f, 0.431405f,
+0.431321f, 0.431237f, 0.431153f, 0.431069f, 0.430986f, 0.430902f, 0.430818f, 0.430734f, 0.43065f, 0.430566f, 0.430483f, 0.430399f, 0.430315f, 0.430231f, 0.430147f, 0.430063f, 0.429979f, 0.429896f, 0.429812f, 0.429728f,
+0.429644f, 0.42956f, 0.429476f, 0.429392f, 0.429309f, 0.429225f, 0.429141f, 0.429057f, 0.428973f, 0.428889f, 0.428805f, 0.428721f, 0.428637f, 0.428553f, 0.42847f, 0.428386f, 0.428302f, 0.428218f, 0.428134f, 0.42805f,
+0.427966f, 0.427882f, 0.427798f, 0.427714f, 0.42763f, 0.427546f, 0.427462f, 0.427379f, 0.427295f, 0.427211f, 0.427127f, 0.427043f, 0.426959f, 0.426875f, 0.426791f, 0.426707f, 0.426623f, 0.426539f, 0.426455f, 0.426371f,
+0.426287f, 0.426203f, 0.426119f, 0.426035f, 0.425951f, 0.425867f, 0.425783f, 0.425699f, 0.425615f, 0.425531f, 0.425447f, 0.425363f, 0.425279f, 0.425195f, 0.425111f, 0.425027f, 0.424943f, 0.424859f, 0.424775f, 0.424691f,
+0.424607f, 0.424523f, 0.424439f, 0.424355f, 0.424271f, 0.424187f, 0.424103f, 0.424019f, 0.423935f, 0.42385f, 0.423766f, 0.423682f, 0.423598f, 0.423514f, 0.42343f, 0.423346f, 0.423262f, 0.423178f, 0.423094f, 0.42301f,
+0.422926f, 0.422842f, 0.422758f, 0.422673f, 0.422589f, 0.422505f, 0.422421f, 0.422337f, 0.422253f, 0.422169f, 0.422085f, 0.422001f, 0.421917f, 0.421832f, 0.421748f, 0.421664f, 0.42158f, 0.421496f, 0.421412f, 0.421328f,
+0.421244f, 0.421159f, 0.421075f, 0.420991f, 0.420907f, 0.420823f, 0.420739f, 0.420655f, 0.42057f, 0.420486f, 0.420402f, 0.420318f, 0.420234f, 0.42015f, 0.420065f, 0.419981f, 0.419897f, 0.419813f, 0.419729f, 0.419644f,
+0.41956f, 0.419476f, 0.419392f, 0.419308f, 0.419224f, 0.419139f, 0.419055f, 0.418971f, 0.418887f, 0.418803f, 0.418718f, 0.418634f, 0.41855f, 0.418466f, 0.418381f, 0.418297f, 0.418213f, 0.418129f, 0.418045f, 0.41796f,
+0.417876f, 0.417792f, 0.417708f, 0.417623f, 0.417539f, 0.417455f, 0.417371f, 0.417286f, 0.417202f, 0.417118f, 0.417034f, 0.416949f, 0.416865f, 0.416781f, 0.416696f, 0.416612f, 0.416528f, 0.416444f, 0.416359f, 0.416275f,
+0.416191f, 0.416107f, 0.416022f, 0.415938f, 0.415854f, 0.415769f, 0.415685f, 0.415601f, 0.415516f, 0.415432f, 0.415348f, 0.415264f, 0.415179f, 0.415095f, 0.415011f, 0.414926f, 0.414842f, 0.414758f, 0.414673f, 0.414589f,
+0.414505f, 0.41442f, 0.414336f, 0.414252f, 0.414167f, 0.414083f, 0.413999f, 0.413914f, 0.41383f, 0.413745f, 0.413661f, 0.413577f, 0.413492f, 0.413408f, 0.413324f, 0.413239f, 0.413155f, 0.413071f, 0.412986f, 0.412902f,
+0.412817f, 0.412733f, 0.412649f, 0.412564f, 0.41248f, 0.412395f, 0.412311f, 0.412227f, 0.412142f, 0.412058f, 0.411973f, 0.411889f, 0.411805f, 0.41172f, 0.411636f, 0.411551f, 0.411467f, 0.411382f, 0.411298f, 0.411214f,
+0.411129f, 0.411045f, 0.41096f, 0.410876f, 0.410791f, 0.410707f, 0.410623f, 0.410538f, 0.410454f, 0.410369f, 0.410285f, 0.4102f, 0.410116f, 0.410031f, 0.409947f, 0.409862f, 0.409778f, 0.409693f, 0.409609f, 0.409525f,
+0.40944f, 0.409356f, 0.409271f, 0.409187f, 0.409102f, 0.409018f, 0.408933f, 0.408849f, 0.408764f, 0.40868f, 0.408595f, 0.408511f, 0.408426f, 0.408342f, 0.408257f, 0.408173f, 0.408088f, 0.408004f, 0.407919f, 0.407835f,
+0.40775f, 0.407665f, 0.407581f, 0.407496f, 0.407412f, 0.407327f, 0.407243f, 0.407158f, 0.407074f, 0.406989f, 0.406905f, 0.40682f, 0.406736f, 0.406651f, 0.406566f, 0.406482f, 0.406397f, 0.406313f, 0.406228f, 0.406144f,
+0.406059f, 0.405974f, 0.40589f, 0.405805f, 0.405721f, 0.405636f, 0.405552f, 0.405467f, 0.405382f, 0.405298f, 0.405213f, 0.405129f, 0.405044f, 0.404959f, 0.404875f, 0.40479f, 0.404706f, 0.404621f, 0.404536f, 0.404452f,
+0.404367f, 0.404282f, 0.404198f, 0.404113f, 0.404029f, 0.403944f, 0.403859f, 0.403775f, 0.40369f, 0.403605f, 0.403521f, 0.403436f, 0.403352f, 0.403267f, 0.403182f, 0.403098f, 0.403013f, 0.402928f, 0.402844f, 0.402759f,
+0.402674f, 0.40259f, 0.402505f, 0.40242f, 0.402336f, 0.402251f, 0.402166f, 0.402082f, 0.401997f, 0.401912f, 0.401828f, 0.401743f, 0.401658f, 0.401573f, 0.401489f, 0.401404f, 0.401319f, 0.401235f, 0.40115f, 0.401065f,
+0.400981f, 0.400896f, 0.400811f, 0.400726f, 0.400642f, 0.400557f, 0.400472f, 0.400388f, 0.400303f, 0.400218f, 0.400133f, 0.400049f, 0.399964f, 0.399879f, 0.399795f, 0.39971f, 0.399625f, 0.39954f, 0.399456f, 0.399371f,
+0.399286f, 0.399201f, 0.399117f, 0.399032f, 0.398947f, 0.398862f, 0.398777f, 0.398693f, 0.398608f, 0.398523f, 0.398438f, 0.398354f, 0.398269f, 0.398184f, 0.398099f, 0.398015f, 0.39793f, 0.397845f, 0.39776f, 0.397675f,
+0.397591f, 0.397506f, 0.397421f, 0.397336f, 0.397251f, 0.397167f, 0.397082f, 0.396997f, 0.396912f, 0.396827f, 0.396743f, 0.396658f, 0.396573f, 0.396488f, 0.396403f, 0.396318f, 0.396234f, 0.396149f, 0.396064f, 0.395979f,
+0.395894f, 0.395809f, 0.395725f, 0.39564f, 0.395555f, 0.39547f, 0.395385f, 0.3953f, 0.395216f, 0.395131f, 0.395046f, 0.394961f, 0.394876f, 0.394791f, 0.394706f, 0.394622f, 0.394537f, 0.394452f, 0.394367f, 0.394282f,
+0.394197f, 0.394112f, 0.394027f, 0.393943f, 0.393858f, 0.393773f, 0.393688f, 0.393603f, 0.393518f, 0.393433f, 0.393348f, 0.393263f, 0.393179f, 0.393094f, 0.393009f, 0.392924f, 0.392839f, 0.392754f, 0.392669f, 0.392584f,
+0.392499f, 0.392414f, 0.392329f, 0.392245f, 0.39216f, 0.392075f, 0.39199f, 0.391905f, 0.39182f, 0.391735f, 0.39165f, 0.391565f, 0.39148f, 0.391395f, 0.39131f, 0.391225f, 0.39114f, 0.391055f, 0.39097f, 0.390885f,
+0.390801f, 0.390716f, 0.390631f, 0.390546f, 0.390461f, 0.390376f, 0.390291f, 0.390206f, 0.390121f, 0.390036f, 0.389951f, 0.389866f, 0.389781f, 0.389696f, 0.389611f, 0.389526f, 0.389441f, 0.389356f, 0.389271f, 0.389186f,
+0.389101f, 0.389016f, 0.388931f, 0.388846f, 0.388761f, 0.388676f, 0.388591f, 0.388506f, 0.388421f, 0.388336f, 0.388251f, 0.388166f, 0.388081f, 0.387996f, 0.387911f, 0.387826f, 0.387741f, 0.387656f, 0.387571f, 0.387486f,
+0.387401f, 0.387316f, 0.387231f, 0.387146f, 0.38706f, 0.386975f, 0.38689f, 0.386805f, 0.38672f, 0.386635f, 0.38655f, 0.386465f, 0.38638f, 0.386295f, 0.38621f, 0.386125f, 0.38604f, 0.385955f, 0.38587f, 0.385785f,
+0.3857f, 0.385614f, 0.385529f, 0.385444f, 0.385359f, 0.385274f, 0.385189f, 0.385104f, 0.385019f, 0.384934f, 0.384849f, 0.384764f, 0.384678f, 0.384593f, 0.384508f, 0.384423f, 0.384338f, 0.384253f, 0.384168f, 0.384083f,
+0.383998f, 0.383913f, 0.383827f, 0.383742f, 0.383657f, 0.383572f, 0.383487f, 0.383402f, 0.383317f, 0.383232f, 0.383146f, 0.383061f, 0.382976f, 0.382891f, 0.382806f, 0.382721f, 0.382636f, 0.38255f, 0.382465f, 0.38238f,
+0.382295f, 0.38221f, 0.382125f, 0.38204f, 0.381954f, 0.381869f, 0.381784f, 0.381699f, 0.381614f, 0.381529f, 0.381443f, 0.381358f, 0.381273f, 0.381188f, 0.381103f, 0.381018f, 0.380932f, 0.380847f, 0.380762f, 0.380677f,
+0.380592f, 0.380506f, 0.380421f, 0.380336f, 0.380251f, 0.380166f, 0.380081f, 0.379995f, 0.37991f, 0.379825f, 0.37974f, 0.379655f, 0.379569f, 0.379484f, 0.379399f, 0.379314f, 0.379228f, 0.379143f, 0.379058f, 0.378973f,
+0.378888f, 0.378802f, 0.378717f, 0.378632f, 0.378547f, 0.378461f, 0.378376f, 0.378291f, 0.378206f, 0.378121f, 0.378035f, 0.37795f, 0.377865f, 0.37778f, 0.377694f, 0.377609f, 0.377524f, 0.377439f, 0.377353f, 0.377268f,
+0.377183f, 0.377098f, 0.377012f, 0.376927f, 0.376842f, 0.376757f, 0.376671f, 0.376586f, 0.376501f, 0.376415f, 0.37633f, 0.376245f, 0.37616f, 0.376074f, 0.375989f, 0.375904f, 0.375819f, 0.375733f, 0.375648f, 0.375563f,
+0.375477f, 0.375392f, 0.375307f, 0.375221f, 0.375136f, 0.375051f, 0.374966f, 0.37488f, 0.374795f, 0.37471f, 0.374624f, 0.374539f, 0.374454f, 0.374368f, 0.374283f, 0.374198f, 0.374112f, 0.374027f, 0.373942f, 0.373857f,
+0.373771f, 0.373686f, 0.373601f, 0.373515f, 0.37343f, 0.373345f, 0.373259f, 0.373174f, 0.373089f, 0.373003f, 0.372918f, 0.372833f, 0.372747f, 0.372662f, 0.372576f, 0.372491f, 0.372406f, 0.37232f, 0.372235f, 0.37215f,
+0.372064f, 0.371979f, 0.371894f, 0.371808f, 0.371723f, 0.371638f, 0.371552f, 0.371467f, 0.371381f, 0.371296f, 0.371211f, 0.371125f, 0.37104f, 0.370955f, 0.370869f, 0.370784f, 0.370698f, 0.370613f, 0.370528f, 0.370442f,
+0.370357f, 0.370271f, 0.370186f, 0.370101f, 0.370015f, 0.36993f, 0.369845f, 0.369759f, 0.369674f, 0.369588f, 0.369503f, 0.369417f, 0.369332f, 0.369247f, 0.369161f, 0.369076f, 0.36899f, 0.368905f, 0.36882f, 0.368734f,
+0.368649f, 0.368563f, 0.368478f, 0.368392f, 0.368307f, 0.368222f, 0.368136f, 0.368051f, 0.367965f, 0.36788f, 0.367794f, 0.367709f, 0.367624f, 0.367538f, 0.367453f, 0.367367f, 0.367282f, 0.367196f, 0.367111f, 0.367025f,
+0.36694f, 0.366855f, 0.366769f, 0.366684f, 0.366598f, 0.366513f, 0.366427f, 0.366342f, 0.366256f, 0.366171f, 0.366085f, 0.366f, 0.365914f, 0.365829f, 0.365743f, 0.365658f, 0.365573f, 0.365487f, 0.365402f, 0.365316f,
+0.365231f, 0.365145f, 0.36506f, 0.364974f, 0.364889f, 0.364803f, 0.364718f, 0.364632f, 0.364547f, 0.364461f, 0.364376f, 0.36429f, 0.364205f, 0.364119f, 0.364034f, 0.363948f, 0.363863f, 0.363777f, 0.363692f, 0.363606f,
+0.363521f, 0.363435f, 0.36335f, 0.363264f, 0.363179f, 0.363093f, 0.363008f, 0.362922f, 0.362836f, 0.362751f, 0.362665f, 0.36258f, 0.362494f, 0.362409f, 0.362323f, 0.362238f, 0.362152f, 0.362067f, 0.361981f, 0.361896f,
+0.36181f, 0.361724f, 0.361639f, 0.361553f, 0.361468f, 0.361382f, 0.361297f, 0.361211f, 0.361126f, 0.36104f, 0.360955f, 0.360869f, 0.360783f, 0.360698f, 0.360612f, 0.360527f, 0.360441f, 0.360356f, 0.36027f, 0.360184f,
+0.360099f, 0.360013f, 0.359928f, 0.359842f, 0.359757f, 0.359671f, 0.359585f, 0.3595f, 0.359414f, 0.359329f, 0.359243f, 0.359157f, 0.359072f, 0.358986f, 0.358901f, 0.358815f, 0.35873f, 0.358644f, 0.358558f, 0.358473f,
+0.358387f, 0.358302f, 0.358216f, 0.35813f, 0.358045f, 0.357959f, 0.357874f, 0.357788f, 0.357702f, 0.357617f, 0.357531f, 0.357445f, 0.35736f, 0.357274f, 0.357189f, 0.357103f, 0.357017f, 0.356932f, 0.356846f, 0.356761f,
+0.356675f, 0.356589f, 0.356504f, 0.356418f, 0.356332f, 0.356247f, 0.356161f, 0.356075f, 0.35599f, 0.355904f, 0.355819f, 0.355733f, 0.355647f, 0.355562f, 0.355476f, 0.35539f, 0.355305f, 0.355219f, 0.355133f, 0.355048f,
+0.354962f, 0.354876f, 0.354791f, 0.354705f, 0.354619f, 0.354534f, 0.354448f, 0.354362f, 0.354277f, 0.354191f, 0.354105f, 0.35402f, 0.353934f, 0.353848f, 0.353763f, 0.353677f, 0.353591f, 0.353506f, 0.35342f, 0.353334f,
+0.353249f, 0.353163f, 0.353077f, 0.352992f, 0.352906f, 0.35282f, 0.352735f, 0.352649f, 0.352563f, 0.352478f, 0.352392f, 0.352306f, 0.35222f, 0.352135f, 0.352049f, 0.351963f, 0.351878f, 0.351792f, 0.351706f, 0.351621f,
+0.351535f, 0.351449f, 0.351363f, 0.351278f, 0.351192f, 0.351106f, 0.351021f, 0.350935f, 0.350849f, 0.350763f, 0.350678f, 0.350592f, 0.350506f, 0.350421f, 0.350335f, 0.350249f, 0.350163f, 0.350078f, 0.349992f, 0.349906f,
+0.34982f, 0.349735f, 0.349649f, 0.349563f, 0.349478f, 0.349392f, 0.349306f, 0.34922f, 0.349135f, 0.349049f, 0.348963f, 0.348877f, 0.348792f, 0.348706f, 0.34862f, 0.348534f, 0.348449f, 0.348363f, 0.348277f, 0.348191f,
+0.348106f, 0.34802f, 0.347934f, 0.347848f, 0.347763f, 0.347677f, 0.347591f, 0.347505f, 0.34742f, 0.347334f, 0.347248f, 0.347162f, 0.347077f, 0.346991f, 0.346905f, 0.346819f, 0.346733f, 0.346648f, 0.346562f, 0.346476f,
+0.34639f, 0.346305f, 0.346219f, 0.346133f, 0.346047f, 0.345961f, 0.345876f, 0.34579f, 0.345704f, 0.345618f, 0.345532f, 0.345447f, 0.345361f, 0.345275f, 0.345189f, 0.345104f, 0.345018f, 0.344932f, 0.344846f, 0.34476f,
+0.344675f, 0.344589f, 0.344503f, 0.344417f, 0.344331f, 0.344246f, 0.34416f, 0.344074f, 0.343988f, 0.343902f, 0.343816f, 0.343731f, 0.343645f, 0.343559f, 0.343473f, 0.343387f, 0.343302f, 0.343216f, 0.34313f, 0.343044f,
+0.342958f, 0.342872f, 0.342787f, 0.342701f, 0.342615f, 0.342529f, 0.342443f, 0.342358f, 0.342272f, 0.342186f, 0.3421f, 0.342014f, 0.341928f, 0.341843f, 0.341757f, 0.341671f, 0.341585f, 0.341499f, 0.341413f, 0.341327f,
+0.341242f, 0.341156f, 0.34107f, 0.340984f, 0.340898f, 0.340812f, 0.340727f, 0.340641f, 0.340555f, 0.340469f, 0.340383f, 0.340297f, 0.340211f, 0.340126f, 0.34004f, 0.339954f, 0.339868f, 0.339782f, 0.339696f, 0.33961f,
+0.339525f, 0.339439f, 0.339353f, 0.339267f, 0.339181f, 0.339095f, 0.339009f, 0.338923f, 0.338838f, 0.338752f, 0.338666f, 0.33858f, 0.338494f, 0.338408f, 0.338322f, 0.338236f, 0.338151f, 0.338065f, 0.337979f, 0.337893f,
+0.337807f, 0.337721f, 0.337635f, 0.337549f, 0.337463f, 0.337378f, 0.337292f, 0.337206f, 0.33712f, 0.337034f, 0.336948f, 0.336862f, 0.336776f, 0.33669f, 0.336605f, 0.336519f, 0.336433f, 0.336347f, 0.336261f, 0.336175f,
+0.336089f, 0.336003f, 0.335917f, 0.335831f, 0.335746f, 0.33566f, 0.335574f, 0.335488f, 0.335402f, 0.335316f, 0.33523f, 0.335144f, 0.335058f, 0.334972f, 0.334886f, 0.3348f, 0.334715f, 0.334629f, 0.334543f, 0.334457f,
+0.334371f, 0.334285f, 0.334199f, 0.334113f, 0.334027f, 0.333941f, 0.333855f, 0.333769f, 0.333683f, 0.333598f, 0.333512f, 0.333426f, 0.33334f, 0.333254f, 0.333168f, 0.333082f, 0.332996f, 0.33291f, 0.332824f, 0.332738f,
+0.332652f, 0.332566f, 0.33248f, 0.332394f, 0.332308f, 0.332222f, 0.332137f, 0.332051f, 0.331965f, 0.331879f, 0.331793f, 0.331707f, 0.331621f, 0.331535f, 0.331449f, 0.331363f, 0.331277f, 0.331191f, 0.331105f, 0.331019f,
+0.330933f, 0.330847f, 0.330761f, 0.330675f, 0.330589f, 0.330503f, 0.330417f, 0.330331f, 0.330245f, 0.33016f, 0.330074f, 0.329988f, 0.329902f, 0.329816f, 0.32973f, 0.329644f, 0.329558f, 0.329472f, 0.329386f, 0.3293f,
+0.329214f, 0.329128f, 0.329042f, 0.328956f, 0.32887f, 0.328784f, 0.328698f, 0.328612f, 0.328526f, 0.32844f, 0.328354f, 0.328268f, 0.328182f, 0.328096f, 0.32801f, 0.327924f, 0.327838f, 0.327752f, 0.327666f, 0.32758f,
+0.327494f, 0.327408f, 0.327322f, 0.327236f, 0.32715f, 0.327064f, 0.326978f, 0.326892f, 0.326806f, 0.32672f, 0.326634f, 0.326548f, 0.326462f, 0.326376f, 0.32629f, 0.326204f, 0.326118f, 0.326032f, 0.325946f, 0.32586f,
+0.325774f, 0.325688f, 0.325602f, 0.325516f, 0.32543f, 0.325344f, 0.325258f, 0.325172f, 0.325086f, 0.325f, 0.324914f, 0.324828f, 0.324742f, 0.324656f, 0.32457f, 0.324484f, 0.324398f, 0.324312f, 0.324226f, 0.32414f,
+0.324054f, 0.323968f, 0.323882f, 0.323796f, 0.32371f, 0.323624f, 0.323538f, 0.323452f, 0.323366f, 0.32328f, 0.323194f, 0.323108f, 0.323022f, 0.322935f, 0.322849f, 0.322763f, 0.322677f, 0.322591f, 0.322505f, 0.322419f,
+0.322333f, 0.322247f, 0.322161f, 0.322075f, 0.321989f, 0.321903f, 0.321817f, 0.321731f, 0.321645f, 0.321559f, 0.321473f, 0.321387f, 0.321301f, 0.321215f, 0.321129f, 0.321043f, 0.320957f, 0.320871f, 0.320784f, 0.320698f,
+0.320612f, 0.320526f, 0.32044f, 0.320354f, 0.320268f, 0.320182f, 0.320096f, 0.32001f, 0.319924f, 0.319838f, 0.319752f, 0.319666f, 0.31958f, 0.319494f, 0.319408f, 0.319322f, 0.319235f, 0.319149f, 0.319063f, 0.318977f,
+0.318891f, 0.318805f, 0.318719f, 0.318633f, 0.318547f, 0.318461f, 0.318375f, 0.318289f, 0.318203f, 0.318117f, 0.318031f, 0.317945f, 0.317858f, 0.317772f, 0.317686f, 0.3176f, 0.317514f, 0.317428f, 0.317342f, 0.317256f,
+0.31717f, 0.317084f, 0.316998f, 0.316912f, 0.316826f, 0.316739f, 0.316653f, 0.316567f, 0.316481f, 0.316395f, 0.316309f, 0.316223f, 0.316137f, 0.316051f, 0.315965f, 0.315879f, 0.315793f, 0.315706f, 0.31562f, 0.315534f,
+0.315448f, 0.315362f, 0.315276f, 0.31519f, 0.315104f, 0.315018f, 0.314932f, 0.314846f, 0.31476f, 0.314673f, 0.314587f, 0.314501f, 0.314415f, 0.314329f, 0.314243f, 0.314157f, 0.314071f, 0.313985f, 0.313899f, 0.313812f,
+0.313726f, 0.31364f, 0.313554f, 0.313468f, 0.313382f, 0.313296f, 0.31321f, 0.313124f, 0.313038f, 0.312951f, 0.312865f, 0.312779f, 0.312693f, 0.312607f, 0.312521f, 0.312435f, 0.312349f, 0.312263f, 0.312177f, 0.31209f,
+0.312004f, 0.311918f, 0.311832f, 0.311746f, 0.31166f, 0.311574f, 0.311488f, 0.311402f, 0.311315f, 0.311229f, 0.311143f, 0.311057f, 0.310971f, 0.310885f, 0.310799f, 0.310713f, 0.310627f, 0.31054f, 0.310454f, 0.310368f,
+0.310282f, 0.310196f, 0.31011f, 0.310024f, 0.309938f, 0.309851f, 0.309765f, 0.309679f, 0.309593f, 0.309507f, 0.309421f, 0.309335f, 0.309249f, 0.309162f, 0.309076f, 0.30899f, 0.308904f, 0.308818f, 0.308732f, 0.308646f,
+0.30856f, 0.308473f, 0.308387f, 0.308301f, 0.308215f, 0.308129f, 0.308043f, 0.307957f, 0.307871f, 0.307784f, 0.307698f, 0.307612f, 0.307526f, 0.30744f, 0.307354f, 0.307268f, 0.307182f, 0.307095f, 0.307009f, 0.306923f,
+0.306837f, 0.306751f, 0.306665f, 0.306579f, 0.306492f, 0.306406f, 0.30632f, 0.306234f, 0.306148f, 0.306062f, 0.305976f, 0.305889f, 0.305803f, 0.305717f, 0.305631f, 0.305545f, 0.305459f, 0.305373f, 0.305286f, 0.3052f,
+0.305114f, 0.305028f, 0.304942f, 0.304856f, 0.30477f, 0.304683f, 0.304597f, 0.304511f, 0.304425f, 0.304339f, 0.304253f, 0.304167f, 0.30408f, 0.303994f, 0.303908f, 0.303822f, 0.303736f, 0.30365f, 0.303564f, 0.303477f,
+0.303391f, 0.303305f, 0.303219f, 0.303133f, 0.303047f, 0.302961f, 0.302874f, 0.302788f, 0.302702f, 0.302616f, 0.30253f, 0.302444f, 0.302357f, 0.302271f, 0.302185f, 0.302099f, 0.302013f, 0.301927f, 0.301841f, 0.301754f,
+0.301668f, 0.301582f, 0.301496f, 0.30141f, 0.301324f, 0.301237f, 0.301151f, 0.301065f, 0.300979f, 0.300893f, 0.300807f, 0.30072f, 0.300634f, 0.300548f, 0.300462f, 0.300376f, 0.30029f, 0.300204f, 0.300117f, 0.300031f,
+0.299945f, 0.299859f, 0.299773f, 0.299687f, 0.2996f, 0.299514f, 0.299428f, 0.299342f, 0.299256f, 0.29917f, 0.299083f, 0.298997f, 0.298911f, 0.298825f, 0.298739f, 0.298653f, 0.298566f, 0.29848f, 0.298394f, 0.298308f,
+0.298222f, 0.298136f, 0.298049f, 0.297963f, 0.297877f, 0.297791f, 0.297705f, 0.297619f, 0.297532f, 0.297446f, 0.29736f, 0.297274f, 0.297188f, 0.297102f, 0.297015f, 0.296929f, 0.296843f, 0.296757f, 0.296671f, 0.296585f,
+0.296498f, 0.296412f, 0.296326f, 0.29624f, 0.296154f, 0.296068f, 0.295981f, 0.295895f, 0.295809f, 0.295723f, 0.295637f, 0.295551f, 0.295464f, 0.295378f, 0.295292f, 0.295206f, 0.29512f, 0.295033f, 0.294947f, 0.294861f,
+0.294775f, 0.294689f, 0.294603f, 0.294516f, 0.29443f, 0.294344f, 0.294258f, 0.294172f, 0.294086f, 0.293999f, 0.293913f, 0.293827f, 0.293741f, 0.293655f, 0.293569f, 0.293482f, 0.293396f, 0.29331f, 0.293224f, 0.293138f,
+0.293051f, 0.292965f, 0.292879f, 0.292793f, 0.292707f, 0.292621f, 0.292534f, 0.292448f, 0.292362f, 0.292276f, 0.29219f, 0.292103f, 0.292017f, 0.291931f, 0.291845f, 0.291759f, 0.291673f, 0.291586f, 0.2915f, 0.291414f,
+0.291328f, 0.291242f, 0.291156f, 0.291069f, 0.290983f, 0.290897f, 0.290811f, 0.290725f, 0.290638f, 0.290552f, 0.290466f, 0.29038f, 0.290294f, 0.290208f, 0.290121f, 0.290035f, 0.289949f, 0.289863f, 0.289777f, 0.28969f,
+0.289604f, 0.289518f, 0.289432f, 0.289346f, 0.28926f, 0.289173f, 0.289087f, 0.289001f, 0.288915f, 0.288829f, 0.288742f, 0.288656f, 0.28857f, 0.288484f, 0.288398f, 0.288312f, 0.288225f, 0.288139f, 0.288053f, 0.287967f,
+0.287881f, 0.287794f, 0.287708f, 0.287622f, 0.287536f, 0.28745f, 0.287364f, 0.287277f, 0.287191f, 0.287105f, 0.287019f, 0.286933f, 0.286846f, 0.28676f, 0.286674f, 0.286588f, 0.286502f, 0.286416f, 0.286329f, 0.286243f,
+0.286157f, 0.286071f, 0.285985f, 0.285898f, 0.285812f, 0.285726f, 0.28564f, 0.285554f, 0.285468f, 0.285381f, 0.285295f, 0.285209f, 0.285123f, 0.285037f, 0.28495f, 0.284864f, 0.284778f, 0.284692f, 0.284606f, 0.28452f,
+0.284433f, 0.284347f, 0.284261f, 0.284175f, 0.284089f, 0.284002f, 0.283916f, 0.28383f, 0.283744f, 0.283658f, 0.283572f, 0.283485f, 0.283399f, 0.283313f, 0.283227f, 0.283141f, 0.283054f, 0.282968f, 0.282882f, 0.282796f,
+0.28271f, 0.282624f, 0.282537f, 0.282451f, 0.282365f, 0.282279f, 0.282193f, 0.282106f, 0.28202f, 0.281934f, 0.281848f, 0.281762f, 0.281676f, 0.281589f, 0.281503f, 0.281417f, 0.281331f, 0.281245f, 0.281159f, 0.281072f,
+0.280986f, 0.2809f, 0.280814f, 0.280728f, 0.280641f, 0.280555f, 0.280469f, 0.280383f, 0.280297f, 0.280211f, 0.280124f, 0.280038f, 0.279952f, 0.279866f, 0.27978f, 0.279694f, 0.279607f, 0.279521f, 0.279435f, 0.279349f,
+0.279263f, 0.279176f, 0.27909f, 0.279004f, 0.278918f, 0.278832f, 0.278746f, 0.278659f, 0.278573f, 0.278487f, 0.278401f, 0.278315f, 0.278229f, 0.278142f, 0.278056f, 0.27797f, 0.277884f, 0.277798f, 0.277711f, 0.277625f,
+0.277539f, 0.277453f, 0.277367f, 0.277281f, 0.277194f, 0.277108f, 0.277022f, 0.276936f, 0.27685f, 0.276764f, 0.276677f, 0.276591f, 0.276505f, 0.276419f, 0.276333f, 0.276247f, 0.27616f, 0.276074f, 0.275988f, 0.275902f,
+0.275816f, 0.27573f, 0.275643f, 0.275557f, 0.275471f, 0.275385f, 0.275299f, 0.275213f, 0.275126f, 0.27504f, 0.274954f, 0.274868f, 0.274782f, 0.274696f, 0.274609f, 0.274523f, 0.274437f, 0.274351f, 0.274265f, 0.274179f,
+0.274092f, 0.274006f, 0.27392f, 0.273834f, 0.273748f, 0.273662f, 0.273575f, 0.273489f, 0.273403f, 0.273317f, 0.273231f, 0.273145f, 0.273058f, 0.272972f, 0.272886f, 0.2728f, 0.272714f, 0.272628f, 0.272541f, 0.272455f,
+0.272369f, 0.272283f, 0.272197f, 0.272111f, 0.272024f, 0.271938f, 0.271852f, 0.271766f, 0.27168f, 0.271594f, 0.271508f, 0.271421f, 0.271335f, 0.271249f, 0.271163f, 0.271077f, 0.270991f, 0.270904f, 0.270818f, 0.270732f,
+0.270646f, 0.27056f, 0.270474f, 0.270388f, 0.270301f, 0.270215f, 0.270129f, 0.270043f, 0.269957f, 0.269871f, 0.269784f, 0.269698f, 0.269612f, 0.269526f, 0.26944f, 0.269354f, 0.269268f, 0.269181f, 0.269095f, 0.269009f,
+0.268923f, 0.268837f, 0.268751f, 0.268665f, 0.268578f, 0.268492f, 0.268406f, 0.26832f, 0.268234f, 0.268148f, 0.268061f, 0.267975f, 0.267889f, 0.267803f, 0.267717f, 0.267631f, 0.267545f, 0.267458f, 0.267372f, 0.267286f,
+0.2672f, 0.267114f, 0.267028f, 0.266942f, 0.266856f, 0.266769f, 0.266683f, 0.266597f, 0.266511f, 0.266425f, 0.266339f, 0.266253f, 0.266166f, 0.26608f, 0.265994f, 0.265908f, 0.265822f, 0.265736f, 0.26565f, 0.265563f,
+0.265477f, 0.265391f, 0.265305f, 0.265219f, 0.265133f, 0.265047f, 0.264961f, 0.264874f, 0.264788f, 0.264702f, 0.264616f, 0.26453f, 0.264444f, 0.264358f, 0.264272f, 0.264185f, 0.264099f, 0.264013f, 0.263927f, 0.263841f,
+0.263755f, 0.263669f, 0.263583f, 0.263496f, 0.26341f, 0.263324f, 0.263238f, 0.263152f, 0.263066f, 0.26298f, 0.262894f, 0.262807f, 0.262721f, 0.262635f, 0.262549f, 0.262463f, 0.262377f, 0.262291f, 0.262205f, 0.262118f,
+0.262032f, 0.261946f, 0.26186f, 0.261774f, 0.261688f, 0.261602f, 0.261516f, 0.26143f, 0.261343f, 0.261257f, 0.261171f, 0.261085f, 0.260999f, 0.260913f, 0.260827f, 0.260741f, 0.260655f, 0.260568f, 0.260482f, 0.260396f,
+0.26031f, 0.260224f, 0.260138f, 0.260052f, 0.259966f, 0.25988f, 0.259794f, 0.259707f, 0.259621f, 0.259535f, 0.259449f, 0.259363f, 0.259277f, 0.259191f, 0.259105f, 0.259019f, 0.258933f, 0.258846f, 0.25876f, 0.258674f,
+0.258588f, 0.258502f, 0.258416f, 0.25833f, 0.258244f, 0.258158f, 0.258072f, 0.257986f, 0.257899f, 0.257813f, 0.257727f, 0.257641f, 0.257555f, 0.257469f, 0.257383f, 0.257297f, 0.257211f, 0.257125f, 0.257039f, 0.256952f,
+0.256866f, 0.25678f, 0.256694f, 0.256608f, 0.256522f, 0.256436f, 0.25635f, 0.256264f, 0.256178f, 0.256092f, 0.256006f, 0.25592f, 0.255833f, 0.255747f, 0.255661f, 0.255575f, 0.255489f, 0.255403f, 0.255317f, 0.255231f,
+0.255145f, 0.255059f, 0.254973f, 0.254887f, 0.254801f, 0.254714f, 0.254628f, 0.254542f, 0.254456f, 0.25437f, 0.254284f, 0.254198f, 0.254112f, 0.254026f, 0.25394f, 0.253854f, 0.253768f, 0.253682f, 0.253596f, 0.25351f,
+0.253424f, 0.253337f, 0.253251f, 0.253165f, 0.253079f, 0.252993f, 0.252907f, 0.252821f, 0.252735f, 0.252649f, 0.252563f, 0.252477f, 0.252391f, 0.252305f, 0.252219f, 0.252133f, 0.252047f, 0.251961f, 0.251875f, 0.251789f,
+0.251702f, 0.251616f, 0.25153f, 0.251444f, 0.251358f, 0.251272f, 0.251186f, 0.2511f, 0.251014f, 0.250928f, 0.250842f, 0.250756f, 0.25067f, 0.250584f, 0.250498f, 0.250412f, 0.250326f, 0.25024f, 0.250154f, 0.250068f,
+0.249982f, 0.249896f, 0.24981f, 0.249724f, 0.249638f, 0.249552f, 0.249466f, 0.24938f, 0.249293f, 0.249207f, 0.249121f, 0.249035f, 0.248949f, 0.248863f, 0.248777f, 0.248691f, 0.248605f, 0.248519f, 0.248433f, 0.248347f,
+0.248261f, 0.248175f, 0.248089f, 0.248003f, 0.247917f, 0.247831f, 0.247745f, 0.247659f, 0.247573f, 0.247487f, 0.247401f, 0.247315f, 0.247229f, 0.247143f, 0.247057f, 0.246971f, 0.246885f, 0.246799f, 0.246713f, 0.246627f,
+0.246541f, 0.246455f, 0.246369f, 0.246283f, 0.246197f, 0.246111f, 0.246025f, 0.245939f, 0.245853f, 0.245767f, 0.245681f, 0.245595f, 0.245509f, 0.245423f, 0.245337f, 0.245251f, 0.245165f, 0.245079f, 0.244993f, 0.244907f,
+0.244821f, 0.244735f, 0.244649f, 0.244563f, 0.244477f, 0.244391f, 0.244305f, 0.244219f, 0.244133f, 0.244047f, 0.243961f, 0.243875f, 0.243789f, 0.243703f, 0.243617f, 0.243531f, 0.243445f, 0.243359f, 0.243274f, 0.243188f,
+0.243102f, 0.243016f, 0.24293f, 0.242844f, 0.242758f, 0.242672f, 0.242586f, 0.2425f, 0.242414f, 0.242328f, 0.242242f, 0.242156f, 0.24207f, 0.241984f, 0.241898f, 0.241812f, 0.241726f, 0.24164f, 0.241554f, 0.241468f,
+0.241382f, 0.241296f, 0.24121f, 0.241125f, 0.241039f, 0.240953f, 0.240867f, 0.240781f, 0.240695f, 0.240609f, 0.240523f, 0.240437f, 0.240351f, 0.240265f, 0.240179f, 0.240093f, 0.240007f, 0.239921f, 0.239835f, 0.239749f,
+0.239663f, 0.239578f, 0.239492f, 0.239406f, 0.23932f, 0.239234f, 0.239148f, 0.239062f, 0.238976f, 0.23889f, 0.238804f, 0.238718f, 0.238632f, 0.238546f, 0.23846f, 0.238375f, 0.238289f, 0.238203f, 0.238117f, 0.238031f,
+0.237945f, 0.237859f, 0.237773f, 0.237687f, 0.237601f, 0.237515f, 0.23743f, 0.237344f, 0.237258f, 0.237172f, 0.237086f, 0.237f, 0.236914f, 0.236828f, 0.236742f, 0.236656f, 0.23657f, 0.236485f, 0.236399f, 0.236313f,
+0.236227f, 0.236141f, 0.236055f, 0.235969f, 0.235883f, 0.235797f, 0.235712f, 0.235626f, 0.23554f, 0.235454f, 0.235368f, 0.235282f, 0.235196f, 0.23511f, 0.235024f, 0.234939f, 0.234853f, 0.234767f, 0.234681f, 0.234595f,
+0.234509f, 0.234423f, 0.234337f, 0.234252f, 0.234166f, 0.23408f, 0.233994f, 0.233908f, 0.233822f, 0.233736f, 0.23365f, 0.233565f, 0.233479f, 0.233393f, 0.233307f, 0.233221f, 0.233135f, 0.233049f, 0.232964f, 0.232878f,
+0.232792f, 0.232706f, 0.23262f, 0.232534f, 0.232448f, 0.232363f, 0.232277f, 0.232191f, 0.232105f, 0.232019f, 0.231933f, 0.231847f, 0.231762f, 0.231676f, 0.23159f, 0.231504f, 0.231418f, 0.231332f, 0.231247f, 0.231161f,
+0.231075f, 0.230989f, 0.230903f, 0.230817f, 0.230732f, 0.230646f, 0.23056f, 0.230474f, 0.230388f, 0.230302f, 0.230217f, 0.230131f, 0.230045f, 0.229959f, 0.229873f, 0.229788f, 0.229702f, 0.229616f, 0.22953f, 0.229444f,
+0.229358f, 0.229273f, 0.229187f, 0.229101f, 0.229015f, 0.228929f, 0.228844f, 0.228758f, 0.228672f, 0.228586f, 0.2285f, 0.228415f, 0.228329f, 0.228243f, 0.228157f, 0.228071f, 0.227986f, 0.2279f, 0.227814f, 0.227728f,
+0.227642f, 0.227557f, 0.227471f, 0.227385f, 0.227299f, 0.227213f, 0.227128f, 0.227042f, 0.226956f, 0.22687f, 0.226785f, 0.226699f, 0.226613f, 0.226527f, 0.226441f, 0.226356f, 0.22627f, 0.226184f, 0.226098f, 0.226013f,
+0.225927f, 0.225841f, 0.225755f, 0.22567f, 0.225584f, 0.225498f, 0.225412f, 0.225327f, 0.225241f, 0.225155f, 0.225069f, 0.224983f, 0.224898f, 0.224812f, 0.224726f, 0.22464f, 0.224555f, 0.224469f, 0.224383f, 0.224298f,
+0.224212f, 0.224126f, 0.22404f, 0.223955f, 0.223869f, 0.223783f, 0.223697f, 0.223612f, 0.223526f, 0.22344f, 0.223354f, 0.223269f, 0.223183f, 0.223097f, 0.223011f, 0.222926f, 0.22284f, 0.222754f, 0.222669f, 0.222583f,
+0.222497f, 0.222411f, 0.222326f, 0.22224f, 0.222154f, 0.222069f, 0.221983f, 0.221897f, 0.221811f, 0.221726f, 0.22164f, 0.221554f, 0.221469f, 0.221383f, 0.221297f, 0.221212f, 0.221126f, 0.22104f, 0.220954f, 0.220869f,
+0.220783f, 0.220697f, 0.220612f, 0.220526f, 0.22044f, 0.220355f, 0.220269f, 0.220183f, 0.220098f, 0.220012f, 0.219926f, 0.219841f, 0.219755f, 0.219669f, 0.219584f, 0.219498f, 0.219412f, 0.219326f, 0.219241f, 0.219155f,
+0.219069f, 0.218984f, 0.218898f, 0.218812f, 0.218727f, 0.218641f, 0.218556f, 0.21847f, 0.218384f, 0.218299f, 0.218213f, 0.218127f, 0.218042f, 0.217956f, 0.21787f, 0.217785f, 0.217699f, 0.217613f, 0.217528f, 0.217442f,
+0.217356f, 0.217271f, 0.217185f, 0.2171f, 0.217014f, 0.216928f, 0.216843f, 0.216757f, 0.216671f, 0.216586f, 0.2165f, 0.216414f, 0.216329f, 0.216243f, 0.216158f, 0.216072f, 0.215986f, 0.215901f, 0.215815f, 0.21573f,
+0.215644f, 0.215558f, 0.215473f, 0.215387f, 0.215301f, 0.215216f, 0.21513f, 0.215045f, 0.214959f, 0.214873f, 0.214788f, 0.214702f, 0.214617f, 0.214531f, 0.214445f, 0.21436f, 0.214274f, 0.214189f, 0.214103f, 0.214018f,
+0.213932f, 0.213846f, 0.213761f, 0.213675f, 0.21359f, 0.213504f, 0.213418f, 0.213333f, 0.213247f, 0.213162f, 0.213076f, 0.212991f, 0.212905f, 0.212819f, 0.212734f, 0.212648f, 0.212563f, 0.212477f, 0.212392f, 0.212306f,
+0.212221f, 0.212135f, 0.212049f, 0.211964f, 0.211878f, 0.211793f, 0.211707f, 0.211622f, 0.211536f, 0.211451f, 0.211365f, 0.21128f, 0.211194f, 0.211108f, 0.211023f, 0.210937f, 0.210852f, 0.210766f, 0.210681f, 0.210595f,
+0.21051f, 0.210424f, 0.210339f, 0.210253f, 0.210168f, 0.210082f, 0.209997f, 0.209911f, 0.209826f, 0.20974f, 0.209655f, 0.209569f, 0.209484f, 0.209398f, 0.209313f, 0.209227f, 0.209142f, 0.209056f, 0.208971f, 0.208885f,
+0.2088f, 0.208714f, 0.208629f, 0.208543f, 0.208458f, 0.208372f, 0.208287f, 0.208201f, 0.208116f, 0.20803f, 0.207945f, 0.207859f, 0.207774f, 0.207688f, 0.207603f, 0.207517f, 0.207432f, 0.207346f, 0.207261f, 0.207175f,
+0.20709f, 0.207005f, 0.206919f, 0.206834f, 0.206748f, 0.206663f, 0.206577f, 0.206492f, 0.206406f, 0.206321f, 0.206235f, 0.20615f, 0.206065f, 0.205979f, 0.205894f, 0.205808f, 0.205723f, 0.205637f, 0.205552f, 0.205466f,
+0.205381f, 0.205296f, 0.20521f, 0.205125f, 0.205039f, 0.204954f, 0.204868f, 0.204783f, 0.204698f, 0.204612f, 0.204527f, 0.204441f, 0.204356f, 0.204271f, 0.204185f, 0.2041f, 0.204014f, 0.203929f, 0.203843f, 0.203758f,
+0.203673f, 0.203587f, 0.203502f, 0.203416f, 0.203331f, 0.203246f, 0.20316f, 0.203075f, 0.20299f, 0.202904f, 0.202819f, 0.202733f, 0.202648f, 0.202563f, 0.202477f, 0.202392f, 0.202306f, 0.202221f, 0.202136f, 0.20205f,
+0.201965f, 0.20188f, 0.201794f, 0.201709f, 0.201624f, 0.201538f, 0.201453f, 0.201367f, 0.201282f, 0.201197f, 0.201111f, 0.201026f, 0.200941f, 0.200855f, 0.20077f, 0.200685f, 0.200599f, 0.200514f, 0.200429f, 0.200343f,
+0.200258f, 0.200173f, 0.200087f, 0.200002f, 0.199917f, 0.199831f, 0.199746f, 0.199661f, 0.199575f, 0.19949f, 0.199405f, 0.199319f, 0.199234f, 0.199149f, 0.199063f, 0.198978f, 0.198893f, 0.198808f, 0.198722f, 0.198637f,
+0.198552f, 0.198466f, 0.198381f, 0.198296f, 0.19821f, 0.198125f, 0.19804f, 0.197955f, 0.197869f, 0.197784f, 0.197699f, 0.197613f, 0.197528f, 0.197443f, 0.197358f, 0.197272f, 0.197187f, 0.197102f, 0.197017f, 0.196931f,
+0.196846f, 0.196761f, 0.196675f, 0.19659f, 0.196505f, 0.19642f, 0.196334f, 0.196249f, 0.196164f, 0.196079f, 0.195993f, 0.195908f, 0.195823f, 0.195738f, 0.195652f, 0.195567f, 0.195482f, 0.195397f, 0.195311f, 0.195226f,
+0.195141f, 0.195056f, 0.194971f, 0.194885f, 0.1948f, 0.194715f, 0.19463f, 0.194544f, 0.194459f, 0.194374f, 0.194289f, 0.194204f, 0.194118f, 0.194033f, 0.193948f, 0.193863f, 0.193778f, 0.193692f, 0.193607f, 0.193522f,
+0.193437f, 0.193352f, 0.193266f, 0.193181f, 0.193096f, 0.193011f, 0.192926f, 0.192841f, 0.192755f, 0.19267f, 0.192585f, 0.1925f, 0.192415f, 0.192329f, 0.192244f, 0.192159f, 0.192074f, 0.191989f, 0.191904f, 0.191818f,
+0.191733f, 0.191648f, 0.191563f, 0.191478f, 0.191393f, 0.191308f, 0.191222f, 0.191137f, 0.191052f, 0.190967f, 0.190882f, 0.190797f, 0.190712f, 0.190626f, 0.190541f, 0.190456f, 0.190371f, 0.190286f, 0.190201f, 0.190116f,
+0.190031f, 0.189945f, 0.18986f, 0.189775f, 0.18969f, 0.189605f, 0.18952f, 0.189435f, 0.18935f, 0.189265f, 0.189179f, 0.189094f, 0.189009f, 0.188924f, 0.188839f, 0.188754f, 0.188669f, 0.188584f, 0.188499f, 0.188414f,
+0.188329f, 0.188244f, 0.188158f, 0.188073f, 0.187988f, 0.187903f, 0.187818f, 0.187733f, 0.187648f, 0.187563f, 0.187478f, 0.187393f, 0.187308f, 0.187223f, 0.187138f, 0.187053f, 0.186968f, 0.186883f, 0.186797f, 0.186712f,
+0.186627f, 0.186542f, 0.186457f, 0.186372f, 0.186287f, 0.186202f, 0.186117f, 0.186032f, 0.185947f, 0.185862f, 0.185777f, 0.185692f, 0.185607f, 0.185522f, 0.185437f, 0.185352f, 0.185267f, 0.185182f, 0.185097f, 0.185012f,
+0.184927f, 0.184842f, 0.184757f, 0.184672f, 0.184587f, 0.184502f, 0.184417f, 0.184332f, 0.184247f, 0.184162f, 0.184077f, 0.183992f, 0.183907f, 0.183822f, 0.183737f, 0.183652f, 0.183567f, 0.183482f, 0.183397f, 0.183312f,
+0.183227f, 0.183142f, 0.183057f, 0.182972f, 0.182888f, 0.182803f, 0.182718f, 0.182633f, 0.182548f, 0.182463f, 0.182378f, 0.182293f, 0.182208f, 0.182123f, 0.182038f, 0.181953f, 0.181868f, 0.181783f, 0.181698f, 0.181613f,
+0.181529f, 0.181444f, 0.181359f, 0.181274f, 0.181189f, 0.181104f, 0.181019f, 0.180934f, 0.180849f, 0.180764f, 0.180679f, 0.180595f, 0.18051f, 0.180425f, 0.18034f, 0.180255f, 0.18017f, 0.180085f, 0.18f, 0.179915f,
+0.179831f, 0.179746f, 0.179661f, 0.179576f, 0.179491f, 0.179406f, 0.179321f, 0.179236f, 0.179152f, 0.179067f, 0.178982f, 0.178897f, 0.178812f, 0.178727f, 0.178642f, 0.178558f, 0.178473f, 0.178388f, 0.178303f, 0.178218f,
+0.178133f, 0.178049f, 0.177964f, 0.177879f, 0.177794f, 0.177709f, 0.177624f, 0.17754f, 0.177455f, 0.17737f, 0.177285f, 0.1772f, 0.177116f, 0.177031f, 0.176946f, 0.176861f, 0.176776f, 0.176692f, 0.176607f, 0.176522f,
+0.176437f, 0.176352f, 0.176268f, 0.176183f, 0.176098f, 0.176013f, 0.175928f, 0.175844f, 0.175759f, 0.175674f, 0.175589f, 0.175505f, 0.17542f, 0.175335f, 0.17525f, 0.175166f, 0.175081f, 0.174996f, 0.174911f, 0.174827f,
+0.174742f, 0.174657f, 0.174572f, 0.174488f, 0.174403f, 0.174318f, 0.174233f, 0.174149f, 0.174064f, 0.173979f, 0.173894f, 0.17381f, 0.173725f, 0.17364f, 0.173555f, 0.173471f, 0.173386f, 0.173301f, 0.173217f, 0.173132f,
+0.173047f, 0.172963f, 0.172878f, 0.172793f, 0.172708f, 0.172624f, 0.172539f, 0.172454f, 0.17237f, 0.172285f, 0.1722f, 0.172116f, 0.172031f, 0.171946f, 0.171862f, 0.171777f, 0.171692f, 0.171608f, 0.171523f, 0.171438f,
+0.171354f, 0.171269f, 0.171184f, 0.1711f, 0.171015f, 0.17093f, 0.170846f, 0.170761f, 0.170676f, 0.170592f, 0.170507f, 0.170422f, 0.170338f, 0.170253f, 0.170169f, 0.170084f, 0.169999f, 0.169915f, 0.16983f, 0.169746f,
+0.169661f, 0.169576f, 0.169492f, 0.169407f, 0.169322f, 0.169238f, 0.169153f, 0.169069f, 0.168984f, 0.168899f, 0.168815f, 0.16873f, 0.168646f, 0.168561f, 0.168477f, 0.168392f, 0.168307f, 0.168223f, 0.168138f, 0.168054f,
+0.167969f, 0.167885f, 0.1678f, 0.167715f, 0.167631f, 0.167546f, 0.167462f, 0.167377f, 0.167293f, 0.167208f, 0.167124f, 0.167039f, 0.166954f, 0.16687f, 0.166785f, 0.166701f, 0.166616f, 0.166532f, 0.166447f, 0.166363f,
+0.166278f, 0.166194f, 0.166109f, 0.166025f, 0.16594f, 0.165856f, 0.165771f, 0.165687f, 0.165602f, 0.165518f, 0.165433f, 0.165349f, 0.165264f, 0.16518f, 0.165095f, 0.165011f, 0.164926f, 0.164842f, 0.164757f, 0.164673f,
+0.164588f, 0.164504f, 0.164419f, 0.164335f, 0.16425f, 0.164166f, 0.164082f, 0.163997f, 0.163913f, 0.163828f, 0.163744f, 0.163659f, 0.163575f, 0.16349f, 0.163406f, 0.163322f, 0.163237f, 0.163153f, 0.163068f, 0.162984f,
+0.162899f, 0.162815f, 0.162731f, 0.162646f, 0.162562f, 0.162477f, 0.162393f, 0.162309f, 0.162224f, 0.16214f, 0.162055f, 0.161971f, 0.161887f, 0.161802f, 0.161718f, 0.161633f, 0.161549f, 0.161465f, 0.16138f, 0.161296f,
+0.161211f, 0.161127f, 0.161043f, 0.160958f, 0.160874f, 0.16079f, 0.160705f, 0.160621f, 0.160537f, 0.160452f, 0.160368f, 0.160283f, 0.160199f, 0.160115f, 0.16003f, 0.159946f, 0.159862f, 0.159777f, 0.159693f, 0.159609f,
+0.159524f, 0.15944f, 0.159356f, 0.159272f, 0.159187f, 0.159103f, 0.159019f, 0.158934f, 0.15885f, 0.158766f, 0.158681f, 0.158597f, 0.158513f, 0.158428f, 0.158344f, 0.15826f, 0.158176f, 0.158091f, 0.158007f, 0.157923f,
+0.157839f, 0.157754f, 0.15767f, 0.157586f, 0.157501f, 0.157417f, 0.157333f, 0.157249f, 0.157164f, 0.15708f, 0.156996f, 0.156912f, 0.156827f, 0.156743f, 0.156659f, 0.156575f, 0.15649f, 0.156406f, 0.156322f, 0.156238f,
+0.156154f, 0.156069f, 0.155985f, 0.155901f, 0.155817f, 0.155733f, 0.155648f, 0.155564f, 0.15548f, 0.155396f, 0.155311f, 0.155227f, 0.155143f, 0.155059f, 0.154975f, 0.154891f, 0.154806f, 0.154722f, 0.154638f, 0.154554f,
+0.15447f, 0.154386f, 0.154301f, 0.154217f, 0.154133f, 0.154049f, 0.153965f, 0.153881f, 0.153796f, 0.153712f, 0.153628f, 0.153544f, 0.15346f, 0.153376f, 0.153292f, 0.153207f, 0.153123f, 0.153039f, 0.152955f, 0.152871f,
+0.152787f, 0.152703f, 0.152619f, 0.152534f, 0.15245f, 0.152366f, 0.152282f, 0.152198f, 0.152114f, 0.15203f, 0.151946f, 0.151862f, 0.151778f, 0.151694f, 0.151609f, 0.151525f, 0.151441f, 0.151357f, 0.151273f, 0.151189f,
+0.151105f, 0.151021f, 0.150937f, 0.150853f, 0.150769f, 0.150685f, 0.150601f, 0.150517f, 0.150433f, 0.150349f, 0.150265f, 0.15018f, 0.150096f, 0.150012f, 0.149928f, 0.149844f, 0.14976f, 0.149676f, 0.149592f, 0.149508f,
+0.149424f, 0.14934f, 0.149256f, 0.149172f, 0.149088f, 0.149004f, 0.14892f, 0.148836f, 0.148752f, 0.148668f, 0.148584f, 0.1485f, 0.148416f, 0.148332f, 0.148248f, 0.148164f, 0.14808f, 0.147997f, 0.147913f, 0.147829f,
+0.147745f, 0.147661f, 0.147577f, 0.147493f, 0.147409f, 0.147325f, 0.147241f, 0.147157f, 0.147073f, 0.146989f, 0.146905f, 0.146821f, 0.146737f, 0.146653f, 0.14657f, 0.146486f, 0.146402f, 0.146318f, 0.146234f, 0.14615f,
+0.146066f, 0.145982f, 0.145898f, 0.145814f, 0.145731f, 0.145647f, 0.145563f, 0.145479f, 0.145395f, 0.145311f, 0.145227f, 0.145143f, 0.14506f, 0.144976f, 0.144892f, 0.144808f, 0.144724f, 0.14464f, 0.144556f, 0.144473f,
+0.144389f, 0.144305f, 0.144221f, 0.144137f, 0.144053f, 0.14397f, 0.143886f, 0.143802f, 0.143718f, 0.143634f, 0.14355f, 0.143467f, 0.143383f, 0.143299f, 0.143215f, 0.143131f, 0.143048f, 0.142964f, 0.14288f, 0.142796f,
+0.142712f, 0.142629f, 0.142545f, 0.142461f, 0.142377f, 0.142294f, 0.14221f, 0.142126f, 0.142042f, 0.141958f, 0.141875f, 0.141791f, 0.141707f, 0.141623f, 0.14154f, 0.141456f, 0.141372f, 0.141288f, 0.141205f, 0.141121f,
+0.141037f, 0.140954f, 0.14087f, 0.140786f, 0.140702f, 0.140619f, 0.140535f, 0.140451f, 0.140368f, 0.140284f, 0.1402f, 0.140116f, 0.140033f, 0.139949f, 0.139865f, 0.139782f, 0.139698f, 0.139614f, 0.139531f, 0.139447f,
+0.139363f, 0.13928f, 0.139196f, 0.139112f, 0.139029f, 0.138945f, 0.138861f, 0.138778f, 0.138694f, 0.13861f, 0.138527f, 0.138443f, 0.138359f, 0.138276f, 0.138192f, 0.138109f, 0.138025f, 0.137941f, 0.137858f, 0.137774f,
+0.13769f, 0.137607f, 0.137523f, 0.13744f, 0.137356f, 0.137272f, 0.137189f, 0.137105f, 0.137022f, 0.136938f, 0.136854f, 0.136771f, 0.136687f, 0.136604f, 0.13652f, 0.136437f, 0.136353f, 0.136269f, 0.136186f, 0.136102f,
+0.136019f, 0.135935f, 0.135852f, 0.135768f, 0.135685f, 0.135601f, 0.135518f, 0.135434f, 0.135351f, 0.135267f, 0.135183f, 0.1351f, 0.135016f, 0.134933f, 0.134849f, 0.134766f, 0.134682f, 0.134599f, 0.134515f, 0.134432f,
+0.134348f, 0.134265f, 0.134181f, 0.134098f, 0.134014f, 0.133931f, 0.133847f, 0.133764f, 0.133681f, 0.133597f, 0.133514f, 0.13343f, 0.133347f, 0.133263f, 0.13318f, 0.133096f, 0.133013f, 0.132929f, 0.132846f, 0.132763f,
+0.132679f, 0.132596f, 0.132512f, 0.132429f, 0.132345f, 0.132262f, 0.132179f, 0.132095f, 0.132012f, 0.131928f, 0.131845f, 0.131762f, 0.131678f, 0.131595f, 0.131511f, 0.131428f, 0.131345f, 0.131261f, 0.131178f, 0.131095f,
+0.131011f, 0.130928f, 0.130844f, 0.130761f, 0.130678f, 0.130594f, 0.130511f, 0.130428f, 0.130344f, 0.130261f, 0.130178f, 0.130094f, 0.130011f, 0.129928f, 0.129844f, 0.129761f, 0.129678f, 0.129594f, 0.129511f, 0.129428f,
+0.129344f, 0.129261f, 0.129178f, 0.129094f, 0.129011f, 0.128928f, 0.128845f, 0.128761f, 0.128678f, 0.128595f, 0.128511f, 0.128428f, 0.128345f, 0.128262f, 0.128178f, 0.128095f, 0.128012f, 0.127929f, 0.127845f, 0.127762f,
+0.127679f, 0.127596f, 0.127512f, 0.127429f, 0.127346f, 0.127263f, 0.127179f, 0.127096f, 0.127013f, 0.12693f, 0.126847f, 0.126763f, 0.12668f, 0.126597f, 0.126514f, 0.126431f, 0.126347f, 0.126264f, 0.126181f, 0.126098f,
+0.126015f, 0.125931f, 0.125848f, 0.125765f, 0.125682f, 0.125599f, 0.125516f, 0.125432f, 0.125349f, 0.125266f, 0.125183f, 0.1251f, 0.125017f, 0.124934f, 0.12485f, 0.124767f, 0.124684f, 0.124601f, 0.124518f, 0.124435f,
+0.124352f, 0.124269f, 0.124185f, 0.124102f, 0.124019f, 0.123936f, 0.123853f, 0.12377f, 0.123687f, 0.123604f, 0.123521f, 0.123438f, 0.123355f, 0.123271f, 0.123188f, 0.123105f, 0.123022f, 0.122939f, 0.122856f, 0.122773f,
+0.12269f, 0.122607f, 0.122524f, 0.122441f, 0.122358f, 0.122275f, 0.122192f, 0.122109f, 0.122026f, 0.121943f, 0.12186f, 0.121777f, 0.121694f, 0.121611f, 0.121528f, 0.121445f, 0.121362f, 0.121279f, 0.121196f, 0.121113f,
+0.12103f, 0.120947f, 0.120864f, 0.120781f, 0.120698f, 0.120615f, 0.120532f, 0.120449f, 0.120366f, 0.120283f, 0.1202f, 0.120117f, 0.120034f, 0.119951f, 0.119868f, 0.119785f, 0.119702f, 0.119619f, 0.119536f, 0.119454f,
+0.119371f, 0.119288f, 0.119205f, 0.119122f, 0.119039f, 0.118956f, 0.118873f, 0.11879f, 0.118707f, 0.118624f, 0.118542f, 0.118459f, 0.118376f, 0.118293f, 0.11821f, 0.118127f, 0.118044f, 0.117961f, 0.117879f, 0.117796f,
+0.117713f, 0.11763f, 0.117547f, 0.117464f, 0.117381f, 0.117299f, 0.117216f, 0.117133f, 0.11705f, 0.116967f, 0.116885f, 0.116802f, 0.116719f, 0.116636f, 0.116553f, 0.11647f, 0.116388f, 0.116305f, 0.116222f, 0.116139f,
+0.116057f, 0.115974f, 0.115891f, 0.115808f, 0.115725f, 0.115643f, 0.11556f, 0.115477f, 0.115394f, 0.115312f, 0.115229f, 0.115146f, 0.115063f, 0.114981f, 0.114898f, 0.114815f, 0.114732f, 0.11465f, 0.114567f, 0.114484f,
+0.114402f, 0.114319f, 0.114236f, 0.114153f, 0.114071f, 0.113988f, 0.113905f, 0.113823f, 0.11374f, 0.113657f, 0.113575f, 0.113492f, 0.113409f, 0.113326f, 0.113244f, 0.113161f, 0.113078f, 0.112996f, 0.112913f, 0.112831f,
+0.112748f, 0.112665f, 0.112583f, 0.1125f, 0.112417f, 0.112335f, 0.112252f, 0.112169f, 0.112087f, 0.112004f, 0.111922f, 0.111839f, 0.111756f, 0.111674f, 0.111591f, 0.111509f, 0.111426f, 0.111343f, 0.111261f, 0.111178f,
+0.111096f, 0.111013f, 0.11093f, 0.110848f, 0.110765f, 0.110683f, 0.1106f, 0.110518f, 0.110435f, 0.110353f, 0.11027f, 0.110187f, 0.110105f, 0.110022f, 0.10994f, 0.109857f, 0.109775f, 0.109692f, 0.10961f, 0.109527f,
+0.109445f, 0.109362f, 0.10928f, 0.109197f, 0.109115f, 0.109032f, 0.10895f, 0.108867f, 0.108785f, 0.108702f, 0.10862f, 0.108537f, 0.108455f, 0.108373f, 0.10829f, 0.108208f, 0.108125f, 0.108043f, 0.10796f, 0.107878f,
+0.107795f, 0.107713f, 0.107631f, 0.107548f, 0.107466f, 0.107383f, 0.107301f, 0.107218f, 0.107136f, 0.107054f, 0.106971f, 0.106889f, 0.106806f, 0.106724f, 0.106642f, 0.106559f, 0.106477f, 0.106394f, 0.106312f, 0.10623f,
+0.106147f, 0.106065f, 0.105983f, 0.1059f, 0.105818f, 0.105736f, 0.105653f, 0.105571f, 0.105489f, 0.105406f, 0.105324f, 0.105242f, 0.105159f, 0.105077f, 0.104995f, 0.104912f, 0.10483f, 0.104748f, 0.104665f, 0.104583f,
+0.104501f, 0.104419f, 0.104336f, 0.104254f, 0.104172f, 0.104089f, 0.104007f, 0.103925f, 0.103843f, 0.10376f, 0.103678f, 0.103596f, 0.103514f, 0.103431f, 0.103349f, 0.103267f, 0.103185f, 0.103102f, 0.10302f, 0.102938f,
+0.102856f, 0.102774f, 0.102691f, 0.102609f, 0.102527f, 0.102445f, 0.102362f, 0.10228f, 0.102198f, 0.102116f, 0.102034f, 0.101952f, 0.101869f, 0.101787f, 0.101705f, 0.101623f, 0.101541f, 0.101459f, 0.101376f, 0.101294f,
+0.101212f, 0.10113f, 0.101048f, 0.100966f, 0.100884f, 0.100801f, 0.100719f, 0.100637f, 0.100555f, 0.100473f, 0.100391f, 0.100309f, 0.100227f, 0.100145f, 0.100062f, 0.09998f, 0.099898f, 0.099816f, 0.099734f, 0.099652f,
+0.09957f, 0.099488f, 0.099406f, 0.099324f, 0.099242f, 0.09916f, 0.099078f, 0.098996f, 0.098914f, 0.098831f, 0.098749f, 0.098667f, 0.098585f, 0.098503f, 0.098421f, 0.098339f, 0.098257f, 0.098175f, 0.098093f, 0.098011f,
+0.097929f, 0.097847f, 0.097765f, 0.097683f, 0.097601f, 0.097519f, 0.097437f, 0.097355f, 0.097273f, 0.097192f, 0.09711f, 0.097028f, 0.096946f, 0.096864f, 0.096782f, 0.0967f, 0.096618f, 0.096536f, 0.096454f, 0.096372f,
+0.09629f, 0.096208f, 0.096126f, 0.096044f, 0.095963f, 0.095881f, 0.095799f, 0.095717f, 0.095635f, 0.095553f, 0.095471f, 0.095389f, 0.095307f, 0.095226f, 0.095144f, 0.095062f, 0.09498f, 0.094898f, 0.094816f, 0.094734f,
+0.094653f, 0.094571f, 0.094489f, 0.094407f, 0.094325f, 0.094243f, 0.094162f, 0.09408f, 0.093998f, 0.093916f, 0.093834f, 0.093753f, 0.093671f, 0.093589f, 0.093507f, 0.093425f, 0.093344f, 0.093262f, 0.09318f, 0.093098f,
+0.093016f, 0.092935f, 0.092853f, 0.092771f, 0.092689f, 0.092608f, 0.092526f, 0.092444f, 0.092362f, 0.092281f, 0.092199f, 0.092117f, 0.092036f, 0.091954f, 0.091872f, 0.09179f, 0.091709f, 0.091627f, 0.091545f, 0.091464f,
+0.091382f, 0.0913f, 0.091219f, 0.091137f, 0.091055f, 0.090974f, 0.090892f, 0.09081f, 0.090729f, 0.090647f, 0.090565f, 0.090484f, 0.090402f, 0.09032f, 0.090239f, 0.090157f, 0.090075f, 0.089994f, 0.089912f, 0.089831f,
+0.089749f, 0.089667f, 0.089586f, 0.089504f, 0.089423f, 0.089341f, 0.089259f, 0.089178f, 0.089096f, 0.089015f, 0.088933f, 0.088852f, 0.08877f, 0.088688f, 0.088607f, 0.088525f, 0.088444f, 0.088362f, 0.088281f, 0.088199f,
+0.088118f, 0.088036f, 0.087955f, 0.087873f, 0.087792f, 0.08771f, 0.087629f, 0.087547f, 0.087466f, 0.087384f, 0.087303f, 0.087221f, 0.08714f, 0.087058f, 0.086977f, 0.086895f, 0.086814f, 0.086732f, 0.086651f, 0.086569f,
+0.086488f, 0.086406f, 0.086325f, 0.086244f, 0.086162f, 0.086081f, 0.085999f, 0.085918f, 0.085836f, 0.085755f, 0.085674f, 0.085592f, 0.085511f, 0.085429f, 0.085348f, 0.085267f, 0.085185f, 0.085104f, 0.085022f, 0.084941f,
+0.08486f, 0.084778f, 0.084697f, 0.084616f, 0.084534f, 0.084453f, 0.084372f, 0.08429f, 0.084209f, 0.084128f, 0.084046f, 0.083965f, 0.083884f, 0.083802f, 0.083721f, 0.08364f, 0.083558f, 0.083477f, 0.083396f, 0.083314f,
+0.083233f, 0.083152f, 0.083071f, 0.082989f, 0.082908f, 0.082827f, 0.082745f, 0.082664f, 0.082583f, 0.082502f, 0.08242f, 0.082339f, 0.082258f, 0.082177f, 0.082095f, 0.082014f, 0.081933f, 0.081852f, 0.081771f, 0.081689f,
+0.081608f, 0.081527f, 0.081446f, 0.081365f, 0.081283f, 0.081202f, 0.081121f, 0.08104f, 0.080959f, 0.080878f, 0.080796f, 0.080715f, 0.080634f, 0.080553f, 0.080472f, 0.080391f, 0.080309f, 0.080228f, 0.080147f, 0.080066f,
+0.079985f, 0.079904f, 0.079823f, 0.079742f, 0.07966f, 0.079579f, 0.079498f, 0.079417f, 0.079336f, 0.079255f, 0.079174f, 0.079093f, 0.079012f, 0.078931f, 0.07885f, 0.078769f, 0.078687f, 0.078606f, 0.078525f, 0.078444f,
+0.078363f, 0.078282f, 0.078201f, 0.07812f, 0.078039f, 0.077958f, 0.077877f, 0.077796f, 0.077715f, 0.077634f, 0.077553f, 0.077472f, 0.077391f, 0.07731f, 0.077229f, 0.077148f, 0.077067f, 0.076986f, 0.076905f, 0.076824f,
+0.076743f, 0.076662f, 0.076581f, 0.0765f, 0.07642f, 0.076339f, 0.076258f, 0.076177f, 0.076096f, 0.076015f, 0.075934f, 0.075853f, 0.075772f, 0.075691f, 0.07561f, 0.075529f, 0.075449f, 0.075368f, 0.075287f, 0.075206f,
+0.075125f, 0.075044f, 0.074963f, 0.074882f, 0.074802f, 0.074721f, 0.07464f, 0.074559f, 0.074478f, 0.074397f, 0.074317f, 0.074236f, 0.074155f, 0.074074f, 0.073993f, 0.073912f, 0.073832f, 0.073751f, 0.07367f, 0.073589f,
+0.073509f, 0.073428f, 0.073347f, 0.073266f, 0.073185f, 0.073105f, 0.073024f, 0.072943f, 0.072862f, 0.072782f, 0.072701f, 0.07262f, 0.072539f, 0.072459f, 0.072378f, 0.072297f, 0.072217f, 0.072136f, 0.072055f, 0.071974f,
+0.071894f, 0.071813f, 0.071732f, 0.071652f, 0.071571f, 0.07149f, 0.07141f, 0.071329f, 0.071248f, 0.071168f, 0.071087f, 0.071006f, 0.070926f, 0.070845f, 0.070764f, 0.070684f, 0.070603f, 0.070522f, 0.070442f, 0.070361f,
+0.070281f, 0.0702f, 0.070119f, 0.070039f, 0.069958f, 0.069878f, 0.069797f, 0.069716f, 0.069636f, 0.069555f, 0.069475f, 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
+0.068669f, 0.068589f, 0.068508f, 0.068428f, 0.068347f, 0.068267f, 0.068186f, 0.068106f, 0.068025f, 0.067945f, 0.067864f, 0.067784f, 0.067703f, 0.067623f, 0.067542f, 0.067462f, 0.067381f, 0.067301f, 0.06722f, 0.06714f,
+0.06706f, 0.066979f, 0.066899f, 0.066818f, 0.066738f, 0.066657f, 0.066577f, 0.066497f, 0.066416f, 0.066336f, 0.066255f, 0.066175f, 0.066095f, 0.066014f, 0.065934f, 0.065853f, 0.065773f, 0.065693f, 0.065612f, 0.065532f,
+0.065452f, 0.065371f, 0.065291f, 0.065211f, 0.06513f, 0.06505f, 0.06497f, 0.064889f, 0.064809f, 0.064729f, 0.064648f, 0.064568f, 0.064488f, 0.064408f, 0.064327f, 0.064247f, 0.064167f, 0.064086f, 0.064006f, 0.063926f,
+0.063846f, 0.063765f, 0.063685f, 0.063605f, 0.063525f, 0.063444f, 0.063364f, 0.063284f, 0.063204f, 0.063123f, 0.063043f, 0.062963f, 0.062883f, 0.062803f, 0.062722f, 0.062642f, 0.062562f, 0.062482f, 0.062402f, 0.062322f,
+0.062241f, 0.062161f, 0.062081f, 0.062001f, 0.061921f, 0.061841f, 0.06176f, 0.06168f, 0.0616f, 0.06152f, 0.06144f, 0.06136f, 0.06128f, 0.0612f, 0.061119f, 0.061039f, 0.060959f, 0.060879f, 0.060799f, 0.060719f,
+0.060639f, 0.060559f, 0.060479f, 0.060399f, 0.060319f, 0.060239f, 0.060158f, 0.060078f, 0.059998f, 0.059918f, 0.059838f, 0.059758f, 0.059678f, 0.059598f, 0.059518f, 0.059438f, 0.059358f, 0.059278f, 0.059198f, 0.059118f,
+0.059038f, 0.058958f, 0.058878f, 0.058798f, 0.058718f, 0.058638f, 0.058558f, 0.058478f, 0.058398f, 0.058319f, 0.058239f, 0.058159f, 0.058079f, 0.057999f, 0.057919f, 0.057839f, 0.057759f, 0.057679f, 0.057599f, 0.057519f,
+0.057439f, 0.05736f, 0.05728f, 0.0572f, 0.05712f, 0.05704f, 0.05696f, 0.05688f, 0.0568f, 0.056721f, 0.056641f, 0.056561f, 0.056481f, 0.056401f, 0.056321f, 0.056242f, 0.056162f, 0.056082f, 0.056002f, 0.055922f,
+0.055842f, 0.055763f, 0.055683f, 0.055603f, 0.055523f, 0.055443f, 0.055364f, 0.055284f, 0.055204f, 0.055124f, 0.055045f, 0.054965f, 0.054885f, 0.054805f, 0.054726f, 0.054646f, 0.054566f, 0.054486f, 0.054407f, 0.054327f,
+0.054247f, 0.054168f, 0.054088f, 0.054008f, 0.053929f, 0.053849f, 0.053769f, 0.053689f, 0.05361f, 0.05353f, 0.05345f, 0.053371f, 0.053291f, 0.053212f, 0.053132f, 0.053052f, 0.052973f, 0.052893f, 0.052813f, 0.052734f,
+0.052654f, 0.052574f, 0.052495f, 0.052415f, 0.052336f, 0.052256f, 0.052177f, 0.052097f, 0.052017f, 0.051938f, 0.051858f, 0.051779f, 0.051699f, 0.05162f, 0.05154f, 0.05146f, 0.051381f, 0.051301f, 0.051222f, 0.051142f,
+0.051063f, 0.050983f, 0.050904f, 0.050824f, 0.050745f, 0.050665f, 0.050586f, 0.050506f, 0.050427f, 0.050347f, 0.050268f, 0.050188f, 0.050109f, 0.050029f, 0.04995f, 0.049871f, 0.049791f, 0.049712f, 0.049632f, 0.049553f,
+0.049473f, 0.049394f, 0.049314f, 0.049235f, 0.049156f, 0.049076f, 0.048997f, 0.048917f, 0.048838f, 0.048759f, 0.048679f, 0.0486f, 0.048521f, 0.048441f, 0.048362f, 0.048283f, 0.048203f, 0.048124f, 0.048044f, 0.047965f,
+0.047886f, 0.047806f, 0.047727f, 0.047648f, 0.047569f, 0.047489f, 0.04741f, 0.047331f, 0.047251f, 0.047172f, 0.047093f, 0.047013f, 0.046934f, 0.046855f, 0.046776f, 0.046696f, 0.046617f, 0.046538f, 0.046459f, 0.046379f,
+0.0463f, 0.046221f, 0.046142f, 0.046063f, 0.045983f, 0.045904f, 0.045825f, 0.045746f, 0.045667f, 0.045587f, 0.045508f, 0.045429f, 0.04535f, 0.045271f, 0.045191f, 0.045112f, 0.045033f, 0.044954f, 0.044875f, 0.044796f,
+0.044717f, 0.044637f, 0.044558f, 0.044479f, 0.0444f, 0.044321f, 0.044242f, 0.044163f, 0.044084f, 0.044005f, 0.043925f, 0.043846f, 0.043767f, 0.043688f, 0.043609f, 0.04353f, 0.043451f, 0.043372f, 0.043293f, 0.043214f,
+0.043135f, 0.043056f, 0.042977f, 0.042898f, 0.042819f, 0.04274f, 0.042661f, 0.042582f, 0.042503f, 0.042424f, 0.042345f, 0.042266f, 0.042187f, 0.042108f, 0.042029f, 0.04195f, 0.041871f, 0.041792f, 0.041713f, 0.041634f,
+0.041555f, 0.041476f, 0.041397f, 0.041318f, 0.041239f, 0.041161f, 0.041082f, 0.041003f, 0.040924f, 0.040845f, 0.040766f, 0.040687f, 0.040608f, 0.040529f, 0.040451f, 0.040372f, 0.040293f, 0.040214f, 0.040135f, 0.040056f,
+0.039977f, 0.039899f, 0.03982f, 0.039741f, 0.039662f, 0.039583f, 0.039504f, 0.039426f, 0.039347f, 0.039268f, 0.039189f, 0.039111f, 0.039032f, 0.038953f, 0.038874f, 0.038795f, 0.038717f, 0.038638f, 0.038559f, 0.03848f,
+0.038402f, 0.038323f, 0.038244f, 0.038165f, 0.038087f, 0.038008f, 0.037929f, 0.037851f, 0.037772f, 0.037693f, 0.037615f, 0.037536f, 0.037457f, 0.037379f, 0.0373f, 0.037221f, 0.037143f, 0.037064f, 0.036985f, 0.036907f,
+0.036828f, 0.036749f, 0.036671f, 0.036592f, 0.036513f, 0.036435f, 0.036356f, 0.036278f, 0.036199f, 0.03612f, 0.036042f, 0.035963f, 0.035885f, 0.035806f, 0.035728f, 0.035649f, 0.03557f, 0.035492f, 0.035413f, 0.035335f,
+0.035256f, 0.035178f, 0.035099f, 0.035021f, 0.034942f, 0.034864f, 0.034785f, 0.034707f, 0.034628f, 0.03455f, 0.034471f, 0.034393f, 0.034314f, 0.034236f, 0.034157f, 0.034079f, 0.034f, 0.033922f, 0.033843f, 0.033765f,
+0.033687f, 0.033608f, 0.03353f, 0.033451f, 0.033373f, 0.033294f, 0.033216f, 0.033138f, 0.033059f, 0.032981f, 0.032902f, 0.032824f, 0.032746f, 0.032667f, 0.032589f, 0.032511f, 0.032432f, 0.032354f, 0.032276f, 0.032197f,
+0.032119f, 0.032041f, 0.031962f, 0.031884f, 0.031806f, 0.031727f, 0.031649f, 0.031571f, 0.031492f, 0.031414f, 0.031336f, 0.031258f, 0.031179f, 0.031101f, 0.031023f, 0.030945f, 0.030866f, 0.030788f, 0.03071f, 0.030632f,
+0.030553f, 0.030475f, 0.030397f, 0.030319f, 0.03024f, 0.030162f, 0.030084f, 0.030006f, 0.029928f, 0.02985f, 0.029771f, 0.029693f, 0.029615f, 0.029537f, 0.029459f, 0.029381f, 0.029302f, 0.029224f, 0.029146f, 0.029068f,
+0.02899f, 0.028912f, 0.028834f, 0.028756f, 0.028677f, 0.028599f, 0.028521f, 0.028443f, 0.028365f, 0.028287f, 0.028209f, 0.028131f, 0.028053f, 0.027975f, 0.027897f, 0.027819f, 0.027741f, 0.027663f, 0.027585f, 0.027506f,
+0.027428f, 0.02735f, 0.027272f, 0.027194f, 0.027116f, 0.027038f, 0.02696f, 0.026882f, 0.026804f, 0.026727f, 0.026649f, 0.026571f, 0.026493f, 0.026415f, 0.026337f, 0.026259f, 0.026181f, 0.026103f, 0.026025f, 0.025947f,
+0.025869f, 0.025791f, 0.025713f, 0.025635f, 0.025558f, 0.02548f, 0.025402f, 0.025324f, 0.025246f, 0.025168f, 0.02509f, 0.025012f, 0.024935f, 0.024857f, 0.024779f, 0.024701f, 0.024623f, 0.024545f, 0.024468f, 0.02439f,
+0.024312f, 0.024234f, 0.024156f, 0.024079f, 0.024001f, 0.023923f, 0.023845f, 0.023767f, 0.02369f, 0.023612f, 0.023534f, 0.023456f, 0.023379f, 0.023301f, 0.023223f, 0.023145f, 0.023068f, 0.02299f, 0.022912f, 0.022835f,
+0.022757f, 0.022679f, 0.022602f, 0.022524f, 0.022446f, 0.022368f, 0.022291f, 0.022213f, 0.022136f, 0.022058f, 0.02198f, 0.021903f, 0.021825f, 0.021747f, 0.02167f, 0.021592f, 0.021514f, 0.021437f, 0.021359f, 0.021282f,
+0.021204f, 0.021126f, 0.021049f, 0.020971f, 0.020894f, 0.020816f, 0.020739f, 0.020661f, 0.020583f, 0.020506f, 0.020428f, 0.020351f, 0.020273f, 0.020196f, 0.020118f, 0.020041f, 0.019963f, 0.019886f, 0.019808f, 0.019731f,
+0.019653f, 0.019576f, 0.019498f, 0.019421f, 0.019343f, 0.019266f, 0.019188f, 0.019111f, 0.019034f, 0.018956f, 0.018879f, 0.018801f, 0.018724f, 0.018646f, 0.018569f, 0.018492f, 0.018414f, 0.018337f, 0.018259f, 0.018182f,
+0.018105f, 0.018027f, 0.01795f, 0.017873f, 0.017795f, 0.017718f, 0.017641f, 0.017563f, 0.017486f, 0.017409f, 0.017331f, 0.017254f, 0.017177f, 0.017099f, 0.017022f, 0.016945f, 0.016867f, 0.01679f, 0.016713f, 0.016636f,
+0.016558f, 0.016481f, 0.016404f, 0.016326f, 0.016249f, 0.016172f, 0.016095f, 0.016018f, 0.01594f, 0.015863f, 0.015786f, 0.015709f, 0.015631f, 0.015554f, 0.015477f, 0.0154f, 0.015323f, 0.015246f, 0.015168f, 0.015091f,
+0.015014f, 0.014937f, 0.01486f, 0.014783f, 0.014705f, 0.014628f, 0.014551f, 0.014474f, 0.014397f, 0.01432f, 0.014243f, 0.014166f, 0.014089f, 0.014012f, 0.013934f, 0.013857f, 0.01378f, 0.013703f, 0.013626f, 0.013549f,
+0.013472f, 0.013395f, 0.013318f, 0.013241f, 0.013164f, 0.013087f, 0.01301f, 0.012933f, 0.012856f, 0.012779f, 0.012702f, 0.012625f, 0.012548f, 0.012471f, 0.012394f, 0.012317f, 0.01224f, 0.012163f, 0.012086f, 0.012009f,
+0.011932f, 0.011855f, 0.011778f, 0.011702f, 0.011625f, 0.011548f, 0.011471f, 0.011394f, 0.011317f, 0.01124f, 0.011163f, 0.011086f, 0.011009f, 0.010933f, 0.010856f, 0.010779f, 0.010702f, 0.010625f, 0.010548f, 0.010472f,
+0.010395f, 0.010318f, 0.010241f, 0.010164f, 0.010087f, 0.010011f, 0.009934f, 0.009857f, 0.00978f, 0.009704f, 0.009627f, 0.00955f, 0.009473f, 0.009397f, 0.00932f, 0.009243f, 0.009166f, 0.00909f, 0.009013f, 0.008936f,
+0.008859f, 0.008783f, 0.008706f, 0.008629f, 0.008553f, 0.008476f, 0.008399f, 0.008323f, 0.008246f, 0.008169f, 0.008093f, 0.008016f, 0.007939f, 0.007863f, 0.007786f, 0.007709f, 0.007633f, 0.007556f, 0.00748f, 0.007403f,
+0.007326f, 0.00725f, 0.007173f, 0.007097f, 0.00702f, 0.006944f, 0.006867f, 0.00679f, 0.006714f, 0.006637f, 0.006561f, 0.006484f, 0.006408f, 0.006331f, 0.006255f, 0.006178f, 0.006102f, 0.006025f, 0.005949f, 0.005872f,
+0.005796f, 0.005719f, 0.005643f, 0.005566f, 0.00549f, 0.005413f, 0.005337f, 0.00526f, 0.005184f, 0.005108f, 0.005031f, 0.004955f, 0.004878f, 0.004802f, 0.004725f, 0.004649f, 0.004573f, 0.004496f, 0.00442f, 0.004344f,
+0.004267f, 0.004191f, 0.004114f, 0.004038f, 0.003962f, 0.003885f, 0.003809f, 0.003733f, 0.003656f, 0.00358f, 0.003504f, 0.003427f, 0.003351f, 0.003275f, 0.003199f, 0.003122f, 0.003046f, 0.00297f, 0.002894f, 0.002817f,
+0.002741f, 0.002665f, 0.002589f, 0.002512f, 0.002436f, 0.00236f, 0.002284f, 0.002207f, 0.002131f, 0.002055f, 0.001979f, 0.001903f, 0.001826f, 0.00175f, 0.001674f, 0.001598f, 0.001522f, 0.001446f, 0.001369f, 0.001293f,
+0.001217f, 0.001141f, 0.001065f, 0.000989f, 0.000913f, 0.000837f, 0.00076f, 0.000684f, 0.000608f, 0.000532f, 0.000456f, 0.00038f, 0.000304f, 0.000228f, 0.000152f, 7.6e-05f, -0.0f, -7.6e-05f, -0.000152f, -0.000228f,
+-0.000304f, -0.00038f, -0.000456f, -0.000532f, -0.000608f, -0.000684f, -0.00076f, -0.000836f, -0.000912f, -0.000988f, -0.001064f, -0.00114f, -0.001216f, -0.001292f, -0.001368f, -0.001444f, -0.00152f, -0.001596f, -0.001672f, -0.001748f,
+-0.001824f, -0.001899f, -0.001975f, -0.002051f, -0.002127f, -0.002203f, -0.002279f, -0.002355f, -0.002431f, -0.002506f, -0.002582f, -0.002658f, -0.002734f, -0.00281f, -0.002886f, -0.002961f, -0.003037f, -0.003113f, -0.003189f, -0.003265f,
+-0.00334f, -0.003416f, -0.003492f, -0.003568f, -0.003644f, -0.003719f, -0.003795f, -0.003871f, -0.003946f, -0.004022f, -0.004098f, -0.004174f, -0.004249f, -0.004325f, -0.004401f, -0.004477f, -0.004552f, -0.004628f, -0.004704f, -0.004779f,
+-0.004855f, -0.004931f, -0.005006f, -0.005082f, -0.005158f, -0.005233f, -0.005309f, -0.005384f, -0.00546f, -0.005536f, -0.005611f, -0.005687f, -0.005762f, -0.005838f, -0.005914f, -0.005989f, -0.006065f, -0.00614f, -0.006216f, -0.006291f,
+-0.006367f, -0.006443f, -0.006518f, -0.006594f, -0.006669f, -0.006745f, -0.00682f, -0.006896f, -0.006971f, -0.007047f, -0.007122f, -0.007198f, -0.007273f, -0.007349f, -0.007424f, -0.007499f, -0.007575f, -0.00765f, -0.007726f, -0.007801f,
+-0.007877f, -0.007952f, -0.008028f, -0.008103f, -0.008178f, -0.008254f, -0.008329f, -0.008405f, -0.00848f, -0.008555f, -0.008631f, -0.008706f, -0.008781f, -0.008857f, -0.008932f, -0.009007f, -0.009083f, -0.009158f, -0.009233f, -0.009309f,
+-0.009384f, -0.009459f, -0.009535f, -0.00961f, -0.009685f, -0.00976f, -0.009836f, -0.009911f, -0.009986f, -0.010061f, -0.010137f, -0.010212f, -0.010287f, -0.010362f, -0.010438f, -0.010513f, -0.010588f, -0.010663f, -0.010738f, -0.010814f,
+-0.010889f, -0.010964f, -0.011039f, -0.011114f, -0.01119f, -0.011265f, -0.01134f, -0.011415f, -0.01149f, -0.011565f, -0.01164f, -0.011716f, -0.011791f, -0.011866f, -0.011941f, -0.012016f, -0.012091f, -0.012166f, -0.012241f, -0.012316f,
+-0.012391f, -0.012466f, -0.012541f, -0.012616f, -0.012692f, -0.012767f, -0.012842f, -0.012917f, -0.012992f, -0.013067f, -0.013142f, -0.013217f, -0.013292f, -0.013367f, -0.013442f, -0.013517f, -0.013592f, -0.013666f, -0.013741f, -0.013816f,
+-0.013891f, -0.013966f, -0.014041f, -0.014116f, -0.014191f, -0.014266f, -0.014341f, -0.014416f, -0.014491f, -0.014566f, -0.01464f, -0.014715f, -0.01479f, -0.014865f, -0.01494f, -0.015015f, -0.01509f, -0.015164f, -0.015239f, -0.015314f,
+-0.015389f, -0.015464f, -0.015538f, -0.015613f, -0.015688f, -0.015763f, -0.015838f, -0.015912f, -0.015987f, -0.016062f, -0.016137f, -0.016211f, -0.016286f, -0.016361f, -0.016436f, -0.01651f, -0.016585f, -0.01666f, -0.016735f, -0.016809f,
+-0.016884f, -0.016959f, -0.017033f, -0.017108f, -0.017183f, -0.017257f, -0.017332f, -0.017407f, -0.017481f, -0.017556f, -0.017631f, -0.017705f, -0.01778f, -0.017854f, -0.017929f, -0.018004f, -0.018078f, -0.018153f, -0.018227f, -0.018302f,
+-0.018377f, -0.018451f, -0.018526f, -0.0186f, -0.018675f, -0.018749f, -0.018824f, -0.018898f, -0.018973f, -0.019047f, -0.019122f, -0.019196f, -0.019271f, -0.019345f, -0.01942f, -0.019494f, -0.019569f, -0.019643f, -0.019718f, -0.019792f,
+-0.019867f, -0.019941f, -0.020016f, -0.02009f, -0.020164f, -0.020239f, -0.020313f, -0.020388f, -0.020462f, -0.020536f, -0.020611f, -0.020685f, -0.020759f, -0.020834f, -0.020908f, -0.020983f, -0.021057f, -0.021131f, -0.021206f, -0.02128f,
+-0.021354f, -0.021429f, -0.021503f, -0.021577f, -0.021651f, -0.021726f, -0.0218f, -0.021874f, -0.021949f, -0.022023f, -0.022097f, -0.022171f, -0.022246f, -0.02232f, -0.022394f, -0.022468f, -0.022542f, -0.022617f, -0.022691f, -0.022765f,
+-0.022839f, -0.022913f, -0.022988f, -0.023062f, -0.023136f, -0.02321f, -0.023284f, -0.023358f, -0.023433f, -0.023507f, -0.023581f, -0.023655f, -0.023729f, -0.023803f, -0.023877f, -0.023951f, -0.024026f, -0.0241f, -0.024174f, -0.024248f,
+-0.024322f, -0.024396f, -0.02447f, -0.024544f, -0.024618f, -0.024692f, -0.024766f, -0.02484f, -0.024914f, -0.024988f, -0.025062f, -0.025136f, -0.02521f, -0.025284f, -0.025358f, -0.025432f, -0.025506f, -0.02558f, -0.025654f, -0.025728f,
+-0.025802f, -0.025876f, -0.02595f, -0.026024f, -0.026097f, -0.026171f, -0.026245f, -0.026319f, -0.026393f, -0.026467f, -0.026541f, -0.026615f, -0.026689f, -0.026762f, -0.026836f, -0.02691f, -0.026984f, -0.027058f, -0.027132f, -0.027205f,
+-0.027279f, -0.027353f, -0.027427f, -0.027501f, -0.027574f, -0.027648f, -0.027722f, -0.027796f, -0.027869f, -0.027943f, -0.028017f, -0.028091f, -0.028164f, -0.028238f, -0.028312f, -0.028386f, -0.028459f, -0.028533f, -0.028607f, -0.02868f,
+-0.028754f, -0.028828f, -0.028901f, -0.028975f, -0.029049f, -0.029122f, -0.029196f, -0.02927f, -0.029343f, -0.029417f, -0.029491f, -0.029564f, -0.029638f, -0.029711f, -0.029785f, -0.029859f, -0.029932f, -0.030006f, -0.030079f, -0.030153f,
+-0.030226f, -0.0303f, -0.030373f, -0.030447f, -0.03052f, -0.030594f, -0.030668f, -0.030741f, -0.030815f, -0.030888f, -0.030962f, -0.031035f, -0.031108f, -0.031182f, -0.031255f, -0.031329f, -0.031402f, -0.031476f, -0.031549f, -0.031623f,
+-0.031696f, -0.031769f, -0.031843f, -0.031916f, -0.03199f, -0.032063f, -0.032136f, -0.03221f, -0.032283f, -0.032357f, -0.03243f, -0.032503f, -0.032577f, -0.03265f, -0.032723f, -0.032797f, -0.03287f, -0.032943f, -0.033016f, -0.03309f,
+-0.033163f, -0.033236f, -0.03331f, -0.033383f, -0.033456f, -0.033529f, -0.033603f, -0.033676f, -0.033749f, -0.033822f, -0.033896f, -0.033969f, -0.034042f, -0.034115f, -0.034188f, -0.034262f, -0.034335f, -0.034408f, -0.034481f, -0.034554f,
+-0.034627f, -0.034701f, -0.034774f, -0.034847f, -0.03492f, -0.034993f, -0.035066f, -0.035139f, -0.035213f, -0.035286f, -0.035359f, -0.035432f, -0.035505f, -0.035578f, -0.035651f, -0.035724f, -0.035797f, -0.03587f, -0.035943f, -0.036016f,
+-0.036089f, -0.036162f, -0.036235f, -0.036308f, -0.036381f, -0.036454f, -0.036527f, -0.0366f, -0.036673f, -0.036746f, -0.036819f, -0.036892f, -0.036965f, -0.037038f, -0.037111f, -0.037184f, -0.037257f, -0.03733f, -0.037403f, -0.037476f,
+-0.037548f, -0.037621f, -0.037694f, -0.037767f, -0.03784f, -0.037913f, -0.037986f, -0.038058f, -0.038131f, -0.038204f, -0.038277f, -0.03835f, -0.038423f, -0.038495f, -0.038568f, -0.038641f, -0.038714f, -0.038787f, -0.038859f, -0.038932f,
+-0.039005f, -0.039078f, -0.03915f, -0.039223f, -0.039296f, -0.039369f, -0.039441f, -0.039514f, -0.039587f, -0.039659f, -0.039732f, -0.039805f, -0.039878f, -0.03995f, -0.040023f, -0.040096f, -0.040168f, -0.040241f, -0.040313f, -0.040386f,
+-0.040459f, -0.040531f, -0.040604f, -0.040677f, -0.040749f, -0.040822f, -0.040894f, -0.040967f, -0.041039f, -0.041112f, -0.041185f, -0.041257f, -0.04133f, -0.041402f, -0.041475f, -0.041547f, -0.04162f, -0.041692f, -0.041765f, -0.041837f,
+-0.04191f, -0.041982f, -0.042055f, -0.042127f, -0.0422f, -0.042272f, -0.042345f, -0.042417f, -0.04249f, -0.042562f, -0.042634f, -0.042707f, -0.042779f, -0.042852f, -0.042924f, -0.042996f, -0.043069f, -0.043141f, -0.043214f, -0.043286f,
+-0.043358f, -0.043431f, -0.043503f, -0.043575f, -0.043648f, -0.04372f, -0.043792f, -0.043865f, -0.043937f, -0.044009f, -0.044081f, -0.044154f, -0.044226f, -0.044298f, -0.044371f, -0.044443f, -0.044515f, -0.044587f, -0.044659f, -0.044732f,
+-0.044804f, -0.044876f, -0.044948f, -0.045021f, -0.045093f, -0.045165f, -0.045237f, -0.045309f, -0.045381f, -0.045454f, -0.045526f, -0.045598f, -0.04567f, -0.045742f, -0.045814f, -0.045886f, -0.045959f, -0.046031f, -0.046103f, -0.046175f,
+-0.046247f, -0.046319f, -0.046391f, -0.046463f, -0.046535f, -0.046607f, -0.046679f, -0.046751f, -0.046823f, -0.046895f, -0.046967f, -0.047039f, -0.047111f, -0.047183f, -0.047255f, -0.047327f, -0.047399f, -0.047471f, -0.047543f, -0.047615f,
+-0.047687f, -0.047759f, -0.047831f, -0.047903f, -0.047975f, -0.048047f, -0.048119f, -0.048191f, -0.048262f, -0.048334f, -0.048406f, -0.048478f, -0.04855f, -0.048622f, -0.048694f, -0.048766f, -0.048837f, -0.048909f, -0.048981f, -0.049053f,
+-0.049125f, -0.049196f, -0.049268f, -0.04934f, -0.049412f, -0.049484f, -0.049555f, -0.049627f, -0.049699f, -0.049771f, -0.049842f, -0.049914f, -0.049986f, -0.050058f, -0.050129f, -0.050201f, -0.050273f, -0.050344f, -0.050416f, -0.050488f,
+-0.050559f, -0.050631f, -0.050703f, -0.050774f, -0.050846f, -0.050918f, -0.050989f, -0.051061f, -0.051132f, -0.051204f, -0.051276f, -0.051347f, -0.051419f, -0.05149f, -0.051562f, -0.051634f, -0.051705f, -0.051777f, -0.051848f, -0.05192f,
+-0.051991f, -0.052063f, -0.052134f, -0.052206f, -0.052277f, -0.052349f, -0.05242f, -0.052492f, -0.052563f, -0.052635f, -0.052706f, -0.052778f, -0.052849f, -0.052921f, -0.052992f, -0.053063f, -0.053135f, -0.053206f, -0.053278f, -0.053349f,
+-0.05342f, -0.053492f, -0.053563f, -0.053635f, -0.053706f, -0.053777f, -0.053849f, -0.05392f, -0.053991f, -0.054063f, -0.054134f, -0.054205f, -0.054277f, -0.054348f, -0.054419f, -0.05449f, -0.054562f, -0.054633f, -0.054704f, -0.054776f,
+-0.054847f, -0.054918f, -0.054989f, -0.05506f, -0.055132f, -0.055203f, -0.055274f, -0.055345f, -0.055417f, -0.055488f, -0.055559f, -0.05563f, -0.055701f, -0.055772f, -0.055844f, -0.055915f, -0.055986f, -0.056057f, -0.056128f, -0.056199f,
+-0.05627f, -0.056341f, -0.056413f, -0.056484f, -0.056555f, -0.056626f, -0.056697f, -0.056768f, -0.056839f, -0.05691f, -0.056981f, -0.057052f, -0.057123f, -0.057194f, -0.057265f, -0.057336f, -0.057407f, -0.057478f, -0.057549f, -0.05762f,
+-0.057691f, -0.057762f, -0.057833f, -0.057904f, -0.057975f, -0.058046f, -0.058117f, -0.058188f, -0.058259f, -0.058329f, -0.0584f, -0.058471f, -0.058542f, -0.058613f, -0.058684f, -0.058755f, -0.058826f, -0.058896f, -0.058967f, -0.059038f,
+-0.059109f, -0.05918f, -0.059251f, -0.059321f, -0.059392f, -0.059463f, -0.059534f, -0.059604f, -0.059675f, -0.059746f, -0.059817f, -0.059888f, -0.059958f, -0.060029f, -0.0601f, -0.06017f, -0.060241f, -0.060312f, -0.060383f, -0.060453f,
+-0.060524f, -0.060595f, -0.060665f, -0.060736f, -0.060807f, -0.060877f, -0.060948f, -0.061018f, -0.061089f, -0.06116f, -0.06123f, -0.061301f, -0.061372f, -0.061442f, -0.061513f, -0.061583f, -0.061654f, -0.061724f, -0.061795f, -0.061866f,
+-0.061936f, -0.062007f, -0.062077f, -0.062148f, -0.062218f, -0.062289f, -0.062359f, -0.06243f, -0.0625f, -0.062571f, -0.062641f, -0.062712f, -0.062782f, -0.062852f, -0.062923f, -0.062993f, -0.063064f, -0.063134f, -0.063205f, -0.063275f,
+-0.063345f, -0.063416f, -0.063486f, -0.063556f, -0.063627f, -0.063697f, -0.063768f, -0.063838f, -0.063908f, -0.063979f, -0.064049f, -0.064119f, -0.06419f, -0.06426f, -0.06433f, -0.0644f, -0.064471f, -0.064541f, -0.064611f, -0.064681f,
+-0.064752f, -0.064822f, -0.064892f, -0.064962f, -0.065033f, -0.065103f, -0.065173f, -0.065243f, -0.065313f, -0.065384f, -0.065454f, -0.065524f, -0.065594f, -0.065664f, -0.065734f, -0.065805f, -0.065875f, -0.065945f, -0.066015f, -0.066085f,
+-0.066155f, -0.066225f, -0.066295f, -0.066365f, -0.066436f, -0.066506f, -0.066576f, -0.066646f, -0.066716f, -0.066786f, -0.066856f, -0.066926f, -0.066996f, -0.067066f, -0.067136f, -0.067206f, -0.067276f, -0.067346f, -0.067416f, -0.067486f,
+-0.067556f, -0.067626f, -0.067696f, -0.067766f, -0.067836f, -0.067905f, -0.067975f, -0.068045f, -0.068115f, -0.068185f, -0.068255f, -0.068325f, -0.068395f, -0.068465f, -0.068534f, -0.068604f, -0.068674f, -0.068744f, -0.068814f, -0.068884f,
+-0.068953f, -0.069023f, -0.069093f, -0.069163f, -0.069233f, -0.069302f, -0.069372f, -0.069442f, -0.069512f, -0.069581f, -0.069651f, -0.069721f, -0.069791f, -0.06986f, -0.06993f, -0.07f, -0.070069f, -0.070139f, -0.070209f, -0.070278f,
+-0.070348f, -0.070418f, -0.070487f, -0.070557f, -0.070627f, -0.070696f, -0.070766f, -0.070836f, -0.070905f, -0.070975f, -0.071044f, -0.071114f, -0.071184f, -0.071253f, -0.071323f, -0.071392f, -0.071462f, -0.071531f, -0.071601f, -0.07167f,
+-0.07174f, -0.071809f, -0.071879f, -0.071948f, -0.072018f, -0.072087f, -0.072157f, -0.072226f, -0.072296f, -0.072365f, -0.072435f, -0.072504f, -0.072573f, -0.072643f, -0.072712f, -0.072782f, -0.072851f, -0.072921f, -0.07299f, -0.073059f,
+-0.073129f, -0.073198f, -0.073267f, -0.073337f, -0.073406f, -0.073475f, -0.073545f, -0.073614f, -0.073683f, -0.073753f, -0.073822f, -0.073891f, -0.07396f, -0.07403f, -0.074099f, -0.074168f, -0.074238f, -0.074307f, -0.074376f, -0.074445f,
+-0.074514f, -0.074584f, -0.074653f, -0.074722f, -0.074791f, -0.07486f, -0.07493f, -0.074999f, -0.075068f, -0.075137f, -0.075206f, -0.075275f, -0.075345f, -0.075414f, -0.075483f, -0.075552f, -0.075621f, -0.07569f, -0.075759f, -0.075828f,
+-0.075897f, -0.075966f, -0.076035f, -0.076104f, -0.076173f, -0.076243f, -0.076312f, -0.076381f, -0.07645f, -0.076519f, -0.076588f, -0.076657f, -0.076726f, -0.076794f, -0.076863f, -0.076932f, -0.077001f, -0.07707f, -0.077139f, -0.077208f,
+-0.077277f, -0.077346f, -0.077415f, -0.077484f, -0.077553f, -0.077622f, -0.07769f, -0.077759f, -0.077828f, -0.077897f, -0.077966f, -0.078035f, -0.078104f, -0.078172f, -0.078241f, -0.07831f, -0.078379f, -0.078448f, -0.078516f, -0.078585f,
+-0.078654f, -0.078723f, -0.078791f, -0.07886f, -0.078929f, -0.078998f, -0.079066f, -0.079135f, -0.079204f, -0.079272f, -0.079341f, -0.07941f, -0.079479f, -0.079547f, -0.079616f, -0.079685f, -0.079753f, -0.079822f, -0.07989f, -0.079959f,
+-0.080028f, -0.080096f, -0.080165f, -0.080233f, -0.080302f, -0.080371f, -0.080439f, -0.080508f, -0.080576f, -0.080645f, -0.080713f, -0.080782f, -0.08085f, -0.080919f, -0.080988f, -0.081056f, -0.081125f, -0.081193f, -0.081261f, -0.08133f,
+-0.081398f, -0.081467f, -0.081535f, -0.081604f, -0.081672f, -0.081741f, -0.081809f, -0.081877f, -0.081946f, -0.082014f, -0.082083f, -0.082151f, -0.082219f, -0.082288f, -0.082356f, -0.082424f, -0.082493f, -0.082561f, -0.082629f, -0.082698f,
+-0.082766f, -0.082834f, -0.082903f, -0.082971f, -0.083039f, -0.083108f, -0.083176f, -0.083244f, -0.083312f, -0.083381f, -0.083449f, -0.083517f, -0.083585f, -0.083653f, -0.083722f, -0.08379f, -0.083858f, -0.083926f, -0.083994f, -0.084063f,
+-0.084131f, -0.084199f, -0.084267f, -0.084335f, -0.084403f, -0.084471f, -0.08454f, -0.084608f, -0.084676f, -0.084744f, -0.084812f, -0.08488f, -0.084948f, -0.085016f, -0.085084f, -0.085152f, -0.08522f, -0.085288f, -0.085356f, -0.085424f,
+-0.085492f, -0.08556f, -0.085628f, -0.085696f, -0.085764f, -0.085832f, -0.0859f, -0.085968f, -0.086036f, -0.086104f, -0.086172f, -0.08624f, -0.086308f, -0.086376f, -0.086444f, -0.086511f, -0.086579f, -0.086647f, -0.086715f, -0.086783f,
+-0.086851f, -0.086919f, -0.086986f, -0.087054f, -0.087122f, -0.08719f, -0.087258f, -0.087326f, -0.087393f, -0.087461f, -0.087529f, -0.087597f, -0.087664f, -0.087732f, -0.0878f, -0.087868f, -0.087935f, -0.088003f, -0.088071f, -0.088138f,
+-0.088206f, -0.088274f, -0.088342f, -0.088409f, -0.088477f, -0.088545f, -0.088612f, -0.08868f, -0.088747f, -0.088815f, -0.088883f, -0.08895f, -0.089018f, -0.089085f, -0.089153f, -0.089221f, -0.089288f, -0.089356f, -0.089423f, -0.089491f,
+-0.089558f, -0.089626f, -0.089693f, -0.089761f, -0.089828f, -0.089896f, -0.089963f, -0.090031f, -0.090098f, -0.090166f, -0.090233f, -0.090301f, -0.090368f, -0.090436f, -0.090503f, -0.090571f, -0.090638f, -0.090705f, -0.090773f, -0.09084f,
+-0.090908f, -0.090975f, -0.091042f, -0.09111f, -0.091177f, -0.091244f, -0.091312f, -0.091379f, -0.091446f, -0.091514f, -0.091581f, -0.091648f, -0.091716f, -0.091783f, -0.09185f, -0.091917f, -0.091985f, -0.092052f, -0.092119f, -0.092186f,
+-0.092254f, -0.092321f, -0.092388f, -0.092455f, -0.092522f, -0.09259f, -0.092657f, -0.092724f, -0.092791f, -0.092858f, -0.092925f, -0.092993f, -0.09306f, -0.093127f, -0.093194f, -0.093261f, -0.093328f, -0.093395f, -0.093462f, -0.093529f,
+-0.093596f, -0.093663f, -0.093731f, -0.093798f, -0.093865f, -0.093932f, -0.093999f, -0.094066f, -0.094133f, -0.0942f, -0.094267f, -0.094334f, -0.094401f, -0.094468f, -0.094535f, -0.094601f, -0.094668f, -0.094735f, -0.094802f, -0.094869f,
+-0.094936f, -0.095003f, -0.09507f, -0.095137f, -0.095204f, -0.095271f, -0.095337f, -0.095404f, -0.095471f, -0.095538f, -0.095605f, -0.095672f, -0.095738f, -0.095805f, -0.095872f, -0.095939f, -0.096006f, -0.096072f, -0.096139f, -0.096206f,
+-0.096273f, -0.096339f, -0.096406f, -0.096473f, -0.09654f, -0.096606f, -0.096673f, -0.09674f, -0.096806f, -0.096873f, -0.09694f, -0.097006f, -0.097073f, -0.09714f, -0.097206f, -0.097273f, -0.09734f, -0.097406f, -0.097473f, -0.097539f,
+-0.097606f, -0.097673f, -0.097739f, -0.097806f, -0.097872f, -0.097939f, -0.098005f, -0.098072f, -0.098138f, -0.098205f, -0.098271f, -0.098338f, -0.098404f, -0.098471f, -0.098537f, -0.098604f, -0.09867f, -0.098737f, -0.098803f, -0.09887f,
+-0.098936f, -0.099003f, -0.099069f, -0.099135f, -0.099202f, -0.099268f, -0.099335f, -0.099401f, -0.099467f, -0.099534f, -0.0996f, -0.099666f, -0.099733f, -0.099799f, -0.099865f, -0.099932f, -0.099998f, -0.100064f, -0.100131f, -0.100197f,
+-0.100263f, -0.100329f, -0.100396f, -0.100462f, -0.100528f, -0.100594f, -0.100661f, -0.100727f, -0.100793f, -0.100859f, -0.100925f, -0.100992f, -0.101058f, -0.101124f, -0.10119f, -0.101256f, -0.101322f, -0.101388f, -0.101455f, -0.101521f,
+-0.101587f, -0.101653f, -0.101719f, -0.101785f, -0.101851f, -0.101917f, -0.101983f, -0.102049f, -0.102115f, -0.102181f, -0.102247f, -0.102313f, -0.102379f, -0.102445f, -0.102511f, -0.102577f, -0.102643f, -0.102709f, -0.102775f, -0.102841f,
+-0.102907f, -0.102973f, -0.103039f, -0.103105f, -0.103171f, -0.103237f, -0.103303f, -0.103369f, -0.103435f, -0.1035f, -0.103566f, -0.103632f, -0.103698f, -0.103764f, -0.10383f, -0.103896f, -0.103961f, -0.104027f, -0.104093f, -0.104159f,
+-0.104225f, -0.10429f, -0.104356f, -0.104422f, -0.104488f, -0.104553f, -0.104619f, -0.104685f, -0.104751f, -0.104816f, -0.104882f, -0.104948f, -0.105013f, -0.105079f, -0.105145f, -0.10521f, -0.105276f, -0.105342f, -0.105407f, -0.105473f,
+-0.105539f, -0.105604f, -0.10567f, -0.105735f, -0.105801f, -0.105867f, -0.105932f, -0.105998f, -0.106063f, -0.106129f, -0.106194f, -0.10626f, -0.106325f, -0.106391f, -0.106456f, -0.106522f, -0.106587f, -0.106653f, -0.106718f, -0.106784f,
+-0.106849f, -0.106915f, -0.10698f, -0.107046f, -0.107111f, -0.107176f, -0.107242f, -0.107307f, -0.107373f, -0.107438f, -0.107503f, -0.107569f, -0.107634f, -0.107699f, -0.107765f, -0.10783f, -0.107895f, -0.107961f, -0.108026f, -0.108091f,
+-0.108157f, -0.108222f, -0.108287f, -0.108353f, -0.108418f, -0.108483f, -0.108548f, -0.108614f, -0.108679f, -0.108744f, -0.108809f, -0.108874f, -0.10894f, -0.109005f, -0.10907f, -0.109135f, -0.1092f, -0.109265f, -0.109331f, -0.109396f,
+-0.109461f, -0.109526f, -0.109591f, -0.109656f, -0.109721f, -0.109786f, -0.109851f, -0.109917f, -0.109982f, -0.110047f, -0.110112f, -0.110177f, -0.110242f, -0.110307f, -0.110372f, -0.110437f, -0.110502f, -0.110567f, -0.110632f, -0.110697f,
+-0.110762f, -0.110827f, -0.110892f, -0.110957f, -0.111022f, -0.111086f, -0.111151f, -0.111216f, -0.111281f, -0.111346f, -0.111411f, -0.111476f, -0.111541f, -0.111606f, -0.11167f, -0.111735f, -0.1118f, -0.111865f, -0.11193f, -0.111994f,
+-0.112059f, -0.112124f, -0.112189f, -0.112254f, -0.112318f, -0.112383f, -0.112448f, -0.112513f, -0.112577f, -0.112642f, -0.112707f, -0.112772f, -0.112836f, -0.112901f, -0.112966f, -0.11303f, -0.113095f, -0.11316f, -0.113224f, -0.113289f,
+-0.113353f, -0.113418f, -0.113483f, -0.113547f, -0.113612f, -0.113677f, -0.113741f, -0.113806f, -0.11387f, -0.113935f, -0.113999f, -0.114064f, -0.114128f, -0.114193f, -0.114257f, -0.114322f, -0.114386f, -0.114451f, -0.114515f, -0.11458f,
+-0.114644f, -0.114709f, -0.114773f, -0.114838f, -0.114902f, -0.114967f, -0.115031f, -0.115095f, -0.11516f, -0.115224f, -0.115289f, -0.115353f, -0.115417f, -0.115482f, -0.115546f, -0.11561f, -0.115675f, -0.115739f, -0.115803f, -0.115868f,
+-0.115932f, -0.115996f, -0.11606f, -0.116125f, -0.116189f, -0.116253f, -0.116318f, -0.116382f, -0.116446f, -0.11651f, -0.116574f, -0.116639f, -0.116703f, -0.116767f, -0.116831f, -0.116895f, -0.11696f, -0.117024f, -0.117088f, -0.117152f,
+-0.117216f, -0.11728f, -0.117344f, -0.117408f, -0.117473f, -0.117537f, -0.117601f, -0.117665f, -0.117729f, -0.117793f, -0.117857f, -0.117921f, -0.117985f, -0.118049f, -0.118113f, -0.118177f, -0.118241f, -0.118305f, -0.118369f, -0.118433f,
+-0.118497f, -0.118561f, -0.118625f, -0.118689f, -0.118753f, -0.118817f, -0.11888f, -0.118944f, -0.119008f, -0.119072f, -0.119136f, -0.1192f, -0.119264f, -0.119328f, -0.119391f, -0.119455f, -0.119519f, -0.119583f, -0.119647f, -0.119711f,
+-0.119774f, -0.119838f, -0.119902f, -0.119966f, -0.120029f, -0.120093f, -0.120157f, -0.120221f, -0.120284f, -0.120348f, -0.120412f, -0.120475f, -0.120539f, -0.120603f, -0.120667f, -0.12073f, -0.120794f, -0.120857f, -0.120921f, -0.120985f,
+-0.121048f, -0.121112f, -0.121176f, -0.121239f, -0.121303f, -0.121366f, -0.12143f, -0.121493f, -0.121557f, -0.121621f, -0.121684f, -0.121748f, -0.121811f, -0.121875f, -0.121938f, -0.122002f, -0.122065f, -0.122129f, -0.122192f, -0.122256f,
+-0.122319f, -0.122382f, -0.122446f, -0.122509f, -0.122573f, -0.122636f, -0.122699f, -0.122763f, -0.122826f, -0.12289f, -0.122953f, -0.123016f, -0.12308f, -0.123143f, -0.123206f, -0.12327f, -0.123333f, -0.123396f, -0.12346f, -0.123523f,
+-0.123586f, -0.123649f, -0.123713f, -0.123776f, -0.123839f, -0.123902f, -0.123966f, -0.124029f, -0.124092f, -0.124155f, -0.124218f, -0.124282f, -0.124345f, -0.124408f, -0.124471f, -0.124534f, -0.124597f, -0.124661f, -0.124724f, -0.124787f,
+-0.12485f, -0.124913f, -0.124976f, -0.125039f, -0.125102f, -0.125165f, -0.125228f, -0.125291f, -0.125354f, -0.125418f, -0.125481f, -0.125544f, -0.125607f, -0.12567f, -0.125733f, -0.125796f, -0.125858f, -0.125921f, -0.125984f, -0.126047f,
+-0.12611f, -0.126173f, -0.126236f, -0.126299f, -0.126362f, -0.126425f, -0.126488f, -0.126551f, -0.126613f, -0.126676f, -0.126739f, -0.126802f, -0.126865f, -0.126928f, -0.12699f, -0.127053f, -0.127116f, -0.127179f, -0.127242f, -0.127304f,
+-0.127367f, -0.12743f, -0.127493f, -0.127555f, -0.127618f, -0.127681f, -0.127744f, -0.127806f, -0.127869f, -0.127932f, -0.127994f, -0.128057f, -0.12812f, -0.128182f, -0.128245f, -0.128308f, -0.12837f, -0.128433f, -0.128495f, -0.128558f,
+-0.128621f, -0.128683f, -0.128746f, -0.128808f, -0.128871f, -0.128933f, -0.128996f, -0.129058f, -0.129121f, -0.129183f, -0.129246f, -0.129308f, -0.129371f, -0.129433f, -0.129496f, -0.129558f, -0.129621f, -0.129683f, -0.129746f, -0.129808f,
+-0.129871f, -0.129933f, -0.129995f, -0.130058f, -0.13012f, -0.130182f, -0.130245f, -0.130307f, -0.13037f, -0.130432f, -0.130494f, -0.130556f, -0.130619f, -0.130681f, -0.130743f, -0.130806f, -0.130868f, -0.13093f, -0.130992f, -0.131055f,
+-0.131117f, -0.131179f, -0.131241f, -0.131304f, -0.131366f, -0.131428f, -0.13149f, -0.131552f, -0.131615f, -0.131677f, -0.131739f, -0.131801f, -0.131863f, -0.131925f, -0.131987f, -0.13205f, -0.132112f, -0.132174f, -0.132236f, -0.132298f,
+-0.13236f, -0.132422f, -0.132484f, -0.132546f, -0.132608f, -0.13267f, -0.132732f, -0.132794f, -0.132856f, -0.132918f, -0.13298f, -0.133042f, -0.133104f, -0.133166f, -0.133228f, -0.13329f, -0.133352f, -0.133414f, -0.133476f, -0.133537f,
+-0.133599f, -0.133661f, -0.133723f, -0.133785f, -0.133847f, -0.133909f, -0.133971f, -0.134032f, -0.134094f, -0.134156f, -0.134218f, -0.13428f, -0.134341f, -0.134403f, -0.134465f, -0.134527f, -0.134588f, -0.13465f, -0.134712f, -0.134774f,
+-0.134835f, -0.134897f, -0.134959f, -0.13502f, -0.135082f, -0.135144f, -0.135205f, -0.135267f, -0.135329f, -0.13539f, -0.135452f, -0.135514f, -0.135575f, -0.135637f, -0.135698f, -0.13576f, -0.135821f, -0.135883f, -0.135945f, -0.136006f,
+-0.136068f, -0.136129f, -0.136191f, -0.136252f, -0.136314f, -0.136375f, -0.136437f, -0.136498f, -0.13656f, -0.136621f, -0.136683f, -0.136744f, -0.136805f, -0.136867f, -0.136928f, -0.13699f, -0.137051f, -0.137112f, -0.137174f, -0.137235f,
+-0.137297f, -0.137358f, -0.137419f, -0.137481f, -0.137542f, -0.137603f, -0.137665f, -0.137726f, -0.137787f, -0.137848f, -0.13791f, -0.137971f, -0.138032f, -0.138093f, -0.138155f, -0.138216f, -0.138277f, -0.138338f, -0.138399f, -0.138461f,
+-0.138522f, -0.138583f, -0.138644f, -0.138705f, -0.138766f, -0.138828f, -0.138889f, -0.13895f, -0.139011f, -0.139072f, -0.139133f, -0.139194f, -0.139255f, -0.139316f, -0.139377f, -0.139438f, -0.1395f, -0.139561f, -0.139622f, -0.139683f,
+-0.139744f, -0.139805f, -0.139866f, -0.139927f, -0.139987f, -0.140048f, -0.140109f, -0.14017f, -0.140231f, -0.140292f, -0.140353f, -0.140414f, -0.140475f, -0.140536f, -0.140597f, -0.140658f, -0.140718f, -0.140779f, -0.14084f, -0.140901f,
+-0.140962f, -0.141023f, -0.141083f, -0.141144f, -0.141205f, -0.141266f, -0.141326f, -0.141387f, -0.141448f, -0.141509f, -0.141569f, -0.14163f, -0.141691f, -0.141752f, -0.141812f, -0.141873f, -0.141934f, -0.141994f, -0.142055f, -0.142116f,
+-0.142176f, -0.142237f, -0.142298f, -0.142358f, -0.142419f, -0.142479f, -0.14254f, -0.142601f, -0.142661f, -0.142722f, -0.142782f, -0.142843f, -0.142903f, -0.142964f, -0.143024f, -0.143085f, -0.143145f, -0.143206f, -0.143266f, -0.143327f,
+-0.143387f, -0.143448f, -0.143508f, -0.143569f, -0.143629f, -0.143689f, -0.14375f, -0.14381f, -0.143871f, -0.143931f, -0.143991f, -0.144052f, -0.144112f, -0.144172f, -0.144233f, -0.144293f, -0.144353f, -0.144414f, -0.144474f, -0.144534f,
+-0.144595f, -0.144655f, -0.144715f, -0.144775f, -0.144836f, -0.144896f, -0.144956f, -0.145016f, -0.145077f, -0.145137f, -0.145197f, -0.145257f, -0.145317f, -0.145377f, -0.145438f, -0.145498f, -0.145558f, -0.145618f, -0.145678f, -0.145738f,
+-0.145798f, -0.145858f, -0.145919f, -0.145979f, -0.146039f, -0.146099f, -0.146159f, -0.146219f, -0.146279f, -0.146339f, -0.146399f, -0.146459f, -0.146519f, -0.146579f, -0.146639f, -0.146699f, -0.146759f, -0.146819f, -0.146879f, -0.146939f,
+-0.146998f, -0.147058f, -0.147118f, -0.147178f, -0.147238f, -0.147298f, -0.147358f, -0.147418f, -0.147477f, -0.147537f, -0.147597f, -0.147657f, -0.147717f, -0.147777f, -0.147836f, -0.147896f, -0.147956f, -0.148016f, -0.148075f, -0.148135f,
+-0.148195f, -0.148255f, -0.148314f, -0.148374f, -0.148434f, -0.148493f, -0.148553f, -0.148613f, -0.148672f, -0.148732f, -0.148792f, -0.148851f, -0.148911f, -0.148971f, -0.14903f, -0.14909f, -0.149149f, -0.149209f, -0.149269f, -0.149328f,
+-0.149388f, -0.149447f, -0.149507f, -0.149566f, -0.149626f, -0.149685f, -0.149745f, -0.149804f, -0.149864f, -0.149923f, -0.149983f, -0.150042f, -0.150102f, -0.150161f, -0.150221f, -0.15028f, -0.150339f, -0.150399f, -0.150458f, -0.150517f,
+-0.150577f, -0.150636f, -0.150696f, -0.150755f, -0.150814f, -0.150874f, -0.150933f, -0.150992f, -0.151051f, -0.151111f, -0.15117f, -0.151229f, -0.151289f, -0.151348f, -0.151407f, -0.151466f, -0.151526f, -0.151585f, -0.151644f, -0.151703f,
+-0.151762f, -0.151822f, -0.151881f, -0.15194f, -0.151999f, -0.152058f, -0.152117f, -0.152176f, -0.152235f, -0.152295f, -0.152354f, -0.152413f, -0.152472f, -0.152531f, -0.15259f, -0.152649f, -0.152708f, -0.152767f, -0.152826f, -0.152885f,
+-0.152944f, -0.153003f, -0.153062f, -0.153121f, -0.15318f, -0.153239f, -0.153298f, -0.153357f, -0.153416f, -0.153475f, -0.153534f, -0.153593f, -0.153651f, -0.15371f, -0.153769f, -0.153828f, -0.153887f, -0.153946f, -0.154005f, -0.154063f,
+-0.154122f, -0.154181f, -0.15424f, -0.154299f, -0.154357f, -0.154416f, -0.154475f, -0.154534f, -0.154592f, -0.154651f, -0.15471f, -0.154769f, -0.154827f, -0.154886f, -0.154945f, -0.155003f, -0.155062f, -0.155121f, -0.155179f, -0.155238f,
+-0.155297f, -0.155355f, -0.155414f, -0.155472f, -0.155531f, -0.15559f, -0.155648f, -0.155707f, -0.155765f, -0.155824f, -0.155882f, -0.155941f, -0.155999f, -0.156058f, -0.156116f, -0.156175f, -0.156233f, -0.156292f, -0.15635f, -0.156409f,
+-0.156467f, -0.156526f, -0.156584f, -0.156642f, -0.156701f, -0.156759f, -0.156818f, -0.156876f, -0.156934f, -0.156993f, -0.157051f, -0.157109f, -0.157168f, -0.157226f, -0.157284f, -0.157343f, -0.157401f, -0.157459f, -0.157518f, -0.157576f,
+-0.157634f, -0.157692f, -0.157751f, -0.157809f, -0.157867f, -0.157925f, -0.157983f, -0.158042f, -0.1581f, -0.158158f, -0.158216f, -0.158274f, -0.158332f, -0.158391f, -0.158449f, -0.158507f, -0.158565f, -0.158623f, -0.158681f, -0.158739f,
+-0.158797f, -0.158855f, -0.158913f, -0.158971f, -0.15903f, -0.159088f, -0.159146f, -0.159204f, -0.159262f, -0.15932f, -0.159378f, -0.159435f, -0.159493f, -0.159551f, -0.159609f, -0.159667f, -0.159725f, -0.159783f, -0.159841f, -0.159899f,
+-0.159957f, -0.160015f, -0.160072f, -0.16013f, -0.160188f, -0.160246f, -0.160304f, -0.160362f, -0.160419f, -0.160477f, -0.160535f, -0.160593f, -0.160651f, -0.160708f, -0.160766f, -0.160824f, -0.160882f, -0.160939f, -0.160997f, -0.161055f,
+-0.161112f, -0.16117f, -0.161228f, -0.161285f, -0.161343f, -0.161401f, -0.161458f, -0.161516f, -0.161574f, -0.161631f, -0.161689f, -0.161746f, -0.161804f, -0.161862f, -0.161919f, -0.161977f, -0.162034f, -0.162092f, -0.162149f, -0.162207f,
+-0.162264f, -0.162322f, -0.162379f, -0.162437f, -0.162494f, -0.162552f, -0.162609f, -0.162667f, -0.162724f, -0.162781f, -0.162839f, -0.162896f, -0.162954f, -0.163011f, -0.163068f, -0.163126f, -0.163183f, -0.16324f, -0.163298f, -0.163355f,
+-0.163412f, -0.16347f, -0.163527f, -0.163584f, -0.163642f, -0.163699f, -0.163756f, -0.163813f, -0.163871f, -0.163928f, -0.163985f, -0.164042f, -0.164099f, -0.164157f, -0.164214f, -0.164271f, -0.164328f, -0.164385f, -0.164442f, -0.1645f,
+-0.164557f, -0.164614f, -0.164671f, -0.164728f, -0.164785f, -0.164842f, -0.164899f, -0.164956f, -0.165013f, -0.16507f, -0.165127f, -0.165184f, -0.165241f, -0.165298f, -0.165355f, -0.165412f, -0.165469f, -0.165526f, -0.165583f, -0.16564f,
+-0.165697f, -0.165754f, -0.165811f, -0.165868f, -0.165925f, -0.165982f, -0.166039f, -0.166096f, -0.166152f, -0.166209f, -0.166266f, -0.166323f, -0.16638f, -0.166437f, -0.166493f, -0.16655f, -0.166607f, -0.166664f, -0.16672f, -0.166777f,
+-0.166834f, -0.166891f, -0.166947f, -0.167004f, -0.167061f, -0.167118f, -0.167174f, -0.167231f, -0.167288f, -0.167344f, -0.167401f, -0.167457f, -0.167514f, -0.167571f, -0.167627f, -0.167684f, -0.167741f, -0.167797f, -0.167854f, -0.16791f,
+-0.167967f, -0.168023f, -0.16808f, -0.168136f, -0.168193f, -0.168249f, -0.168306f, -0.168362f, -0.168419f, -0.168475f, -0.168532f, -0.168588f, -0.168645f, -0.168701f, -0.168758f, -0.168814f, -0.16887f, -0.168927f, -0.168983f, -0.169039f,
+-0.169096f, -0.169152f, -0.169209f, -0.169265f, -0.169321f, -0.169377f, -0.169434f, -0.16949f, -0.169546f, -0.169603f, -0.169659f, -0.169715f, -0.169771f, -0.169828f, -0.169884f, -0.16994f, -0.169996f, -0.170052f, -0.170109f, -0.170165f,
+-0.170221f, -0.170277f, -0.170333f, -0.170389f, -0.170446f, -0.170502f, -0.170558f, -0.170614f, -0.17067f, -0.170726f, -0.170782f, -0.170838f, -0.170894f, -0.17095f, -0.171006f, -0.171062f, -0.171118f, -0.171174f, -0.17123f, -0.171286f,
+-0.171342f, -0.171398f, -0.171454f, -0.17151f, -0.171566f, -0.171622f, -0.171678f, -0.171734f, -0.17179f, -0.171846f, -0.171902f, -0.171957f, -0.172013f, -0.172069f, -0.172125f, -0.172181f, -0.172237f, -0.172292f, -0.172348f, -0.172404f,
+-0.17246f, -0.172516f, -0.172571f, -0.172627f, -0.172683f, -0.172739f, -0.172794f, -0.17285f, -0.172906f, -0.172961f, -0.173017f, -0.173073f, -0.173128f, -0.173184f, -0.17324f, -0.173295f, -0.173351f, -0.173407f, -0.173462f, -0.173518f,
+-0.173573f, -0.173629f, -0.173685f, -0.17374f, -0.173796f, -0.173851f, -0.173907f, -0.173962f, -0.174018f, -0.174073f, -0.174129f, -0.174184f, -0.17424f, -0.174295f, -0.174351f, -0.174406f, -0.174461f, -0.174517f, -0.174572f, -0.174628f,
+-0.174683f, -0.174738f, -0.174794f, -0.174849f, -0.174905f, -0.17496f, -0.175015f, -0.175071f, -0.175126f, -0.175181f, -0.175236f, -0.175292f, -0.175347f, -0.175402f, -0.175458f, -0.175513f, -0.175568f, -0.175623f, -0.175678f, -0.175734f,
+-0.175789f, -0.175844f, -0.175899f, -0.175954f, -0.17601f, -0.176065f, -0.17612f, -0.176175f, -0.17623f, -0.176285f, -0.17634f, -0.176395f, -0.17645f, -0.176506f, -0.176561f, -0.176616f, -0.176671f, -0.176726f, -0.176781f, -0.176836f,
+-0.176891f, -0.176946f, -0.177001f, -0.177056f, -0.177111f, -0.177166f, -0.177221f, -0.177275f, -0.17733f, -0.177385f, -0.17744f, -0.177495f, -0.17755f, -0.177605f, -0.17766f, -0.177715f, -0.177769f, -0.177824f, -0.177879f, -0.177934f,
+-0.177989f, -0.178044f, -0.178098f, -0.178153f, -0.178208f, -0.178263f, -0.178317f, -0.178372f, -0.178427f, -0.178482f, -0.178536f, -0.178591f, -0.178646f, -0.1787f, -0.178755f, -0.17881f, -0.178864f, -0.178919f, -0.178974f, -0.179028f,
+-0.179083f, -0.179137f, -0.179192f, -0.179247f, -0.179301f, -0.179356f, -0.17941f, -0.179465f, -0.179519f, -0.179574f, -0.179628f, -0.179683f, -0.179737f, -0.179792f, -0.179846f, -0.179901f, -0.179955f, -0.18001f, -0.180064f, -0.180118f,
+-0.180173f, -0.180227f, -0.180282f, -0.180336f, -0.18039f, -0.180445f, -0.180499f, -0.180553f, -0.180608f, -0.180662f, -0.180716f, -0.180771f, -0.180825f, -0.180879f, -0.180934f, -0.180988f, -0.181042f, -0.181096f, -0.181151f, -0.181205f,
+-0.181259f, -0.181313f, -0.181367f, -0.181422f, -0.181476f, -0.18153f, -0.181584f, -0.181638f, -0.181692f, -0.181746f, -0.181801f, -0.181855f, -0.181909f, -0.181963f, -0.182017f, -0.182071f, -0.182125f, -0.182179f, -0.182233f, -0.182287f,
+-0.182341f, -0.182395f, -0.182449f, -0.182503f, -0.182557f, -0.182611f, -0.182665f, -0.182719f, -0.182773f, -0.182827f, -0.182881f, -0.182935f, -0.182989f, -0.183042f, -0.183096f, -0.18315f, -0.183204f, -0.183258f, -0.183312f, -0.183366f,
+-0.183419f, -0.183473f, -0.183527f, -0.183581f, -0.183635f, -0.183688f, -0.183742f, -0.183796f, -0.18385f, -0.183903f, -0.183957f, -0.184011f, -0.184064f, -0.184118f, -0.184172f, -0.184225f, -0.184279f, -0.184333f, -0.184386f, -0.18444f,
+-0.184494f, -0.184547f, -0.184601f, -0.184654f, -0.184708f, -0.184762f, -0.184815f, -0.184869f, -0.184922f, -0.184976f, -0.185029f, -0.185083f, -0.185136f, -0.18519f, -0.185243f, -0.185297f, -0.18535f, -0.185404f, -0.185457f, -0.18551f,
+-0.185564f, -0.185617f, -0.185671f, -0.185724f, -0.185777f, -0.185831f, -0.185884f, -0.185938f, -0.185991f, -0.186044f, -0.186098f, -0.186151f, -0.186204f, -0.186257f, -0.186311f, -0.186364f, -0.186417f, -0.18647f, -0.186524f, -0.186577f,
+-0.18663f, -0.186683f, -0.186737f, -0.18679f, -0.186843f, -0.186896f, -0.186949f, -0.187002f, -0.187056f, -0.187109f, -0.187162f, -0.187215f, -0.187268f, -0.187321f, -0.187374f, -0.187427f, -0.18748f, -0.187533f, -0.187586f, -0.187639f,
+-0.187692f, -0.187745f, -0.187798f, -0.187851f, -0.187904f, -0.187957f, -0.18801f, -0.188063f, -0.188116f, -0.188169f, -0.188222f, -0.188275f, -0.188328f, -0.188381f, -0.188434f, -0.188486f, -0.188539f, -0.188592f, -0.188645f, -0.188698f,
+-0.188751f, -0.188803f, -0.188856f, -0.188909f, -0.188962f, -0.189015f, -0.189067f, -0.18912f, -0.189173f, -0.189225f, -0.189278f, -0.189331f, -0.189384f, -0.189436f, -0.189489f, -0.189542f, -0.189594f, -0.189647f, -0.1897f, -0.189752f,
+-0.189805f, -0.189857f, -0.18991f, -0.189963f, -0.190015f, -0.190068f, -0.19012f, -0.190173f, -0.190225f, -0.190278f, -0.19033f, -0.190383f, -0.190435f, -0.190488f, -0.19054f, -0.190593f, -0.190645f, -0.190698f, -0.19075f, -0.190802f,
+-0.190855f, -0.190907f, -0.19096f, -0.191012f, -0.191064f, -0.191117f, -0.191169f, -0.191221f, -0.191274f, -0.191326f, -0.191378f, -0.191431f, -0.191483f, -0.191535f, -0.191588f, -0.19164f, -0.191692f, -0.191744f, -0.191797f, -0.191849f,
+-0.191901f, -0.191953f, -0.192005f, -0.192058f, -0.19211f, -0.192162f, -0.192214f, -0.192266f, -0.192318f, -0.19237f, -0.192423f, -0.192475f, -0.192527f, -0.192579f, -0.192631f, -0.192683f, -0.192735f, -0.192787f, -0.192839f, -0.192891f,
+-0.192943f, -0.192995f, -0.193047f, -0.193099f, -0.193151f, -0.193203f, -0.193255f, -0.193307f, -0.193359f, -0.193411f, -0.193463f, -0.193514f, -0.193566f, -0.193618f, -0.19367f, -0.193722f, -0.193774f, -0.193826f, -0.193877f, -0.193929f,
+-0.193981f, -0.194033f, -0.194085f, -0.194136f, -0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
+-0.195015f, -0.195066f, -0.195118f, -0.19517f, -0.195221f, -0.195273f, -0.195324f, -0.195376f, -0.195427f, -0.195479f, -0.19553f, -0.195582f, -0.195633f, -0.195685f, -0.195736f, -0.195788f, -0.195839f, -0.19589f, -0.195942f, -0.195993f,
+-0.196045f, -0.196096f, -0.196147f, -0.196199f, -0.19625f, -0.196301f, -0.196353f, -0.196404f, -0.196455f, -0.196507f, -0.196558f, -0.196609f, -0.196661f, -0.196712f, -0.196763f, -0.196814f, -0.196866f, -0.196917f, -0.196968f, -0.197019f,
+-0.19707f, -0.197122f, -0.197173f, -0.197224f, -0.197275f, -0.197326f, -0.197377f, -0.197428f, -0.19748f, -0.197531f, -0.197582f, -0.197633f, -0.197684f, -0.197735f, -0.197786f, -0.197837f, -0.197888f, -0.197939f, -0.19799f, -0.198041f,
+-0.198092f, -0.198143f, -0.198194f, -0.198245f, -0.198296f, -0.198347f, -0.198398f, -0.198449f, -0.198499f, -0.19855f, -0.198601f, -0.198652f, -0.198703f, -0.198754f, -0.198805f, -0.198855f, -0.198906f, -0.198957f, -0.199008f, -0.199059f,
+-0.199109f, -0.19916f, -0.199211f, -0.199262f, -0.199312f, -0.199363f, -0.199414f, -0.199465f, -0.199515f, -0.199566f, -0.199617f, -0.199667f, -0.199718f, -0.199769f, -0.199819f, -0.19987f, -0.19992f, -0.199971f, -0.200022f, -0.200072f,
+-0.200123f, -0.200173f, -0.200224f, -0.200274f, -0.200325f, -0.200375f, -0.200426f, -0.200477f, -0.200527f, -0.200577f, -0.200628f, -0.200678f, -0.200729f, -0.200779f, -0.20083f, -0.20088f, -0.200931f, -0.200981f, -0.201031f, -0.201082f,
+-0.201132f, -0.201182f, -0.201233f, -0.201283f, -0.201333f, -0.201384f, -0.201434f, -0.201484f, -0.201535f, -0.201585f, -0.201635f, -0.201685f, -0.201736f, -0.201786f, -0.201836f, -0.201886f, -0.201936f, -0.201987f, -0.202037f, -0.202087f,
+-0.202137f, -0.202187f, -0.202237f, -0.202287f, -0.202338f, -0.202388f, -0.202438f, -0.202488f, -0.202538f, -0.202588f, -0.202638f, -0.202688f, -0.202738f, -0.202788f, -0.202838f, -0.202888f, -0.202938f, -0.202988f, -0.203038f, -0.203088f,
+-0.203138f, -0.203188f, -0.203238f, -0.203288f, -0.203338f, -0.203388f, -0.203437f, -0.203487f, -0.203537f, -0.203587f, -0.203637f, -0.203687f, -0.203737f, -0.203786f, -0.203836f, -0.203886f, -0.203936f, -0.203985f, -0.204035f, -0.204085f,
+-0.204135f, -0.204184f, -0.204234f, -0.204284f, -0.204334f, -0.204383f, -0.204433f, -0.204483f, -0.204532f, -0.204582f, -0.204632f, -0.204681f, -0.204731f, -0.20478f, -0.20483f, -0.20488f, -0.204929f, -0.204979f, -0.205028f, -0.205078f,
+-0.205127f, -0.205177f, -0.205226f, -0.205276f, -0.205325f, -0.205375f, -0.205424f, -0.205474f, -0.205523f, -0.205573f, -0.205622f, -0.205671f, -0.205721f, -0.20577f, -0.20582f, -0.205869f, -0.205918f, -0.205968f, -0.206017f, -0.206066f,
+-0.206116f, -0.206165f, -0.206214f, -0.206264f, -0.206313f, -0.206362f, -0.206411f, -0.206461f, -0.20651f, -0.206559f, -0.206608f, -0.206658f, -0.206707f, -0.206756f, -0.206805f, -0.206854f, -0.206903f, -0.206953f, -0.207002f, -0.207051f,
+-0.2071f, -0.207149f, -0.207198f, -0.207247f, -0.207296f, -0.207345f, -0.207394f, -0.207443f, -0.207492f, -0.207541f, -0.20759f, -0.207639f, -0.207688f, -0.207737f, -0.207786f, -0.207835f, -0.207884f, -0.207933f, -0.207982f, -0.208031f,
+-0.20808f, -0.208129f, -0.208178f, -0.208227f, -0.208275f, -0.208324f, -0.208373f, -0.208422f, -0.208471f, -0.20852f, -0.208568f, -0.208617f, -0.208666f, -0.208715f, -0.208763f, -0.208812f, -0.208861f, -0.20891f, -0.208958f, -0.209007f,
+-0.209056f, -0.209104f, -0.209153f, -0.209202f, -0.20925f, -0.209299f, -0.209348f, -0.209396f, -0.209445f, -0.209493f, -0.209542f, -0.209591f, -0.209639f, -0.209688f, -0.209736f, -0.209785f, -0.209833f, -0.209882f, -0.20993f, -0.209979f,
+-0.210027f, -0.210076f, -0.210124f, -0.210173f, -0.210221f, -0.210269f, -0.210318f, -0.210366f, -0.210415f, -0.210463f, -0.210511f, -0.21056f, -0.210608f, -0.210656f, -0.210705f, -0.210753f, -0.210801f, -0.21085f, -0.210898f, -0.210946f,
+-0.210995f, -0.211043f, -0.211091f, -0.211139f, -0.211188f, -0.211236f, -0.211284f, -0.211332f, -0.21138f, -0.211428f, -0.211477f, -0.211525f, -0.211573f, -0.211621f, -0.211669f, -0.211717f, -0.211765f, -0.211813f, -0.211862f, -0.21191f,
+-0.211958f, -0.212006f, -0.212054f, -0.212102f, -0.21215f, -0.212198f, -0.212246f, -0.212294f, -0.212342f, -0.21239f, -0.212438f, -0.212486f, -0.212533f, -0.212581f, -0.212629f, -0.212677f, -0.212725f, -0.212773f, -0.212821f, -0.212869f,
+-0.212917f, -0.212964f, -0.213012f, -0.21306f, -0.213108f, -0.213156f, -0.213203f, -0.213251f, -0.213299f, -0.213347f, -0.213394f, -0.213442f, -0.21349f, -0.213537f, -0.213585f, -0.213633f, -0.213681f, -0.213728f, -0.213776f, -0.213823f,
+-0.213871f, -0.213919f, -0.213966f, -0.214014f, -0.214062f, -0.214109f, -0.214157f, -0.214204f, -0.214252f, -0.214299f, -0.214347f, -0.214394f, -0.214442f, -0.214489f, -0.214537f, -0.214584f, -0.214632f, -0.214679f, -0.214727f, -0.214774f,
+-0.214821f, -0.214869f, -0.214916f, -0.214964f, -0.215011f, -0.215058f, -0.215106f, -0.215153f, -0.2152f, -0.215248f, -0.215295f, -0.215342f, -0.21539f, -0.215437f, -0.215484f, -0.215531f, -0.215579f, -0.215626f, -0.215673f, -0.21572f,
+-0.215767f, -0.215815f, -0.215862f, -0.215909f, -0.215956f, -0.216003f, -0.21605f, -0.216098f, -0.216145f, -0.216192f, -0.216239f, -0.216286f, -0.216333f, -0.21638f, -0.216427f, -0.216474f, -0.216521f, -0.216568f, -0.216615f, -0.216662f,
+-0.216709f, -0.216756f, -0.216803f, -0.21685f, -0.216897f, -0.216944f, -0.216991f, -0.217038f, -0.217085f, -0.217132f, -0.217179f, -0.217225f, -0.217272f, -0.217319f, -0.217366f, -0.217413f, -0.21746f, -0.217506f, -0.217553f, -0.2176f,
+-0.217647f, -0.217693f, -0.21774f, -0.217787f, -0.217834f, -0.21788f, -0.217927f, -0.217974f, -0.21802f, -0.218067f, -0.218114f, -0.21816f, -0.218207f, -0.218254f, -0.2183f, -0.218347f, -0.218394f, -0.21844f, -0.218487f, -0.218533f,
+-0.21858f, -0.218626f, -0.218673f, -0.218719f, -0.218766f, -0.218813f, -0.218859f, -0.218905f, -0.218952f, -0.218998f, -0.219045f, -0.219091f, -0.219138f, -0.219184f, -0.219231f, -0.219277f, -0.219323f, -0.21937f, -0.219416f, -0.219462f,
+-0.219509f, -0.219555f, -0.219601f, -0.219648f, -0.219694f, -0.21974f, -0.219787f, -0.219833f, -0.219879f, -0.219925f, -0.219972f, -0.220018f, -0.220064f, -0.22011f, -0.220156f, -0.220203f, -0.220249f, -0.220295f, -0.220341f, -0.220387f,
+-0.220433f, -0.220479f, -0.220526f, -0.220572f, -0.220618f, -0.220664f, -0.22071f, -0.220756f, -0.220802f, -0.220848f, -0.220894f, -0.22094f, -0.220986f, -0.221032f, -0.221078f, -0.221124f, -0.22117f, -0.221216f, -0.221262f, -0.221308f,
+-0.221354f, -0.221399f, -0.221445f, -0.221491f, -0.221537f, -0.221583f, -0.221629f, -0.221675f, -0.22172f, -0.221766f, -0.221812f, -0.221858f, -0.221904f, -0.221949f, -0.221995f, -0.222041f, };
+#endif
+
+
+#ifdef USE_SAWTOOTH_TABLE
+const float __leaf_table_sawtooth[11][SAW_TABLE_SIZE] =
+{
+
+ {
+ -0.0f, -0.92083f, -0.71616f, -0.82246f, -0.759278f, -0.79369f, -0.776532f, -0.77849f, -0.785048f, -0.769729f, -0.788402f, -0.765306f, -0.788036f, -0.764071f, -0.784983f, -0.765029f, -0.780229f, -0.767199f, -0.774742f, -0.769647f, -0.769397f, -0.771579f, -0.764884f, -0.77243f, -0.761631f, -0.771916f, -0.759774f, -0.770046f, -0.759167f, -0.767085f, -0.75945f, -0.763468f, -0.760134f, -0.759709f, -0.760712f, -0.756285f, -0.760756f, -0.753555f, -0.759992f, -0.751696f, -0.758342f, -0.750691f, -0.755916f, -0.750345f, -0.752977f, -0.750345f, -0.749871f, -0.750332f, -0.74695f, -0.74998f, -0.744496f, -0.749062f, -0.742672f, -0.747488f, -0.741493f, -0.745316f, -0.740835f, -0.742726f, -0.740471f, -0.739978f, -0.740127f, -0.737346f, -0.739541f, -0.735062f, -0.738521f, -0.73327f, -0.736983f, -0.731995f, -0.734957f, -0.731151f, -0.73258f, -0.730561f, -0.730057f, -0.730004f, -0.727613f, -0.729263f, -0.725445f, -0.728173f, -0.723678f, -0.726654f, -0.722343f, -0.724724f, -0.721375f, -0.72249f, -0.720631f, -0.720122f, -0.719927f, -0.71781f, -0.719076f, -0.715725f, -0.717933f, -0.713977f, -0.716426f, -0.712601f, -0.714563f, -0.711545f, -0.712432f, -0.71069f, -0.710177f, -0.709877f, -0.707964f, -0.708944f, -0.70594f, -0.707762f, -0.704209f, -0.706262f, -0.702803f, -0.704448f, -0.701682f, -0.702395f, -0.700742f, -0.700227f, -0.699846f, -0.698088f, -0.698849f, -0.696114f, -0.697635f, -0.694396f, -0.69614f, -0.692967f, -0.694365f, -0.691795f, -0.692373f, -0.690789f, -0.690272f, -0.689827f, -0.688194f, -0.688779f, -0.686258f, -0.68754f, -0.684552f, -0.686049f, -0.683105f, -0.684304f, -0.681891f, -0.68236f, -0.680832f, -0.680314f, -0.679817f, -0.678285f, -0.678728f, -0.676382f, -0.677467f, -0.674684f, -0.675979f, -0.673223f, -0.674259f, -0.671976f, -0.672355f, -0.670873f, -0.670355f, -0.669813f, -0.668365f, -0.66869f, -0.666489f, -0.667412f, -0.664799f, -0.665926f, -0.663326f, -0.664226f, -0.662052f, -0.662355f, -0.660912f, -0.660393f, -0.659815f, -0.658438f, -0.658662f, -0.656584f, -0.657369f, -0.654901f, -0.655885f, -0.653419f, -0.654203f, -0.65212f, -0.65236f, -0.650949f, -0.65043f, -0.649821f, -0.648504f, -0.648643f, -0.64667f, -0.647337f, -0.644993f, -0.645854f, -0.643502f, -0.644186f, -0.642183f, -0.642368f, -0.640985f, -0.640466f, -0.63983f, -0.638565f, -0.638631f, -0.636748f, -0.637313f, -0.635076f, -0.635831f, -0.633578f, -0.634176f, -0.632242f, -0.632379f, -0.631021f, -0.630501f, -0.629841f, -0.628622f, -0.628623f, -0.626819f, -0.627296f, -0.625152f, -0.625815f, -0.623648f, -0.624171f, -0.622297f, -0.622392f, -0.621055f, -0.620536f, -0.619855f, -0.618676f, -0.61862f, -0.616886f, -0.617284f, -0.615223f, -0.615804f, -0.613713f, -0.61417f, -0.612349f, -0.612407f, -0.611089f, -0.61057f, -0.60987f, -0.608727f, -0.608621f, -0.606949f, -0.607277f, -0.605289f, -0.605798f, -0.603774f, -0.604172f, -0.602398f, -0.602424f, -0.601122f, -0.600603f, -0.599887f, -0.598776f, -0.598624f, -0.597008f, -0.597274f, -0.595351f, -0.595795f, -0.593832f, -0.594177f, -0.592445f, -0.592442f, -0.591155f, -0.590636f, -0.589905f, -0.588822f, -0.588631f, -0.587064f, -0.587274f, -0.58541f, -0.585795f, -0.583887f, -0.584185f, -0.582491f, -0.582461f, -0.581187f, -0.580669f, -0.579924f, -0.578868f, -0.578639f, -0.577117f, -0.577276f, -0.575466f, -0.575798f, -0.57394f, -0.574194f, -0.572534f, -0.572481f, -0.571219f, -0.570701f, -0.569944f, -0.568911f, -0.568649f, -0.567169f, -0.567281f, -0.56552f, -0.565804f, -0.56399f, -0.564206f, -0.562577f, -0.562502f, -0.561251f, -0.560734f, -0.559965f, -0.558954f, -0.558661f, -0.557218f, -0.557289f, -0.555572f, -0.555812f, -0.554039f, -0.554218f, -0.552618f, -0.552524f, -0.551283f, -0.550765f, -0.549986f, -0.548995f, -0.548674f, -0.547265f, -0.547298f, -0.545621f, -0.545821f, -0.544086f, -0.544233f, -0.542659f, -0.542546f, -0.541314f, -0.540797f, -0.540008f, -0.539035f, -0.538689f, -0.537312f, -0.537308f, -0.535669f, -0.535832f, -0.534131f, -0.534248f, -0.532698f, -0.532569f, -0.531345f, -0.530829f, -0.53003f, -0.529075f, -0.528705f, -0.527356f, -0.52732f, -0.525716f, -0.525844f, -0.524176f, -0.524265f, -0.522736f, -0.522592f
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.721684f, -0.920009f, -0.765525f, -0.714731f, -0.809048f, -0.820009f, -0.751047f, -0.756396f, -0.806407f, -0.789643f, -0.751331f, -0.772155f, -0.798073f, -0.772896f, -0.754659f, -0.779125f, -0.78795f, -0.762638f, -0.758952f, -0.780884f, -0.777514f, -0.756762f, -0.762996f, -0.778889f, -0.76782f, -0.754097f, -0.765875f, -0.774194f, -0.759639f, -0.753627f, -0.766972f, -0.767809f, -0.753422f, -0.754345f, -0.766012f, -0.760726f, -0.749269f, -0.755299f, -0.763065f, -0.753832f, -0.746951f, -0.755686f, -0.758501f, -0.747821f, -0.745978f, -0.754943f, -0.752902f, -0.743114f, -0.745706f, -0.7528f, -0.746943f, -0.739827f, -0.745463f, -0.749288f, -0.741263f, -0.737792f, -0.74467f, -0.744696f, -0.736356f, -0.736624f, -0.742934f, -0.739482f, -0.732503f, -0.735815f, -0.740097f, -0.734172f, -0.729737f, -0.734849f, -0.736243f, -0.72925f, -0.727868f, -0.7333f, -0.731652f, -0.725064f, -0.726543f, -0.730908f, -0.726729f, -0.721776f, -0.725334f, -0.727615f, -0.721902f, -0.719343f, -0.723831f, -0.723557f, -0.717542f, -0.717547f, -0.721724f, -0.71902f, -0.713883f, -0.716055f, -0.718859f, -0.714363f, -0.710994f, -0.714499f, -0.715257f, -0.709942f, -0.70877f, -0.712555f, -0.711096f, -0.706033f, -0.706973f, -0.710009f, -0.706657f, -0.702779f, -0.705293f, -0.706793f, -0.702263f, -0.700173f, -0.703417f, -0.702988f, -0.698201f, -0.698065f, -0.701097f, -0.698799f, -0.694666f, -0.69621f, -0.698198f, -0.694498f, -0.691726f, -0.694324f, -0.694722f, -0.690365f, -0.689313f, -0.692147f, -0.690797f, -0.686626f, -0.687249f, -0.6895f, -0.68664f, -0.683403f, -0.68529f, -0.686319f, -0.682507f, -0.680701f, -0.683185f, -0.68266f, -0.678632f, -0.678408f, -0.680726f, -0.678683f, -0.675181f, -0.676329f, -0.677799f, -0.674606f, -0.672215f, -0.674232f, -0.674398f, -0.670661f, -0.669686f, -0.6719f, -0.670622f, -0.667035f, -0.66745f, -0.669183f, -0.666649f, -0.663838f, -0.665307f, -0.666021f, -0.66269f, -0.661076f, -0.663046f, -0.662458f, -0.658944f, -0.658661f, -0.660491f, -0.658622f, -0.655553f, -0.656429f, -0.657542f, -0.654699f, -0.652572f, -0.654185f, -0.65419f, -0.650885f, -0.649964f, -0.651744f, -0.650517f, -0.647341f, -0.647609f, -0.648975f, -0.646672f, -0.644164f, -0.645336f, -0.645825f, -0.642838f, -0.641362f, -0.642962f, -0.642328f, -0.639185f, -0.638859f, -0.640337f, -0.638594f, -0.635839f, -0.636517f, -0.63737f, -0.634783f, -0.63285f, -0.634165f, -0.634052f, -0.631066f, -0.630185f, -0.631644f, -0.630454f, -0.627584f, -0.627742f, -0.628835f, -0.626704f, -0.624423f, -0.625372f, -0.625692f, -0.622963f, -0.621591f, -0.622914f, -0.622244f, -0.619382f, -0.619023f, -0.620234f, -0.618586f, -0.616071f, -0.616598f, -0.617252f, -0.614861f, -0.613076f, -0.614165f, -0.61396f, -0.611218f, -0.610368f, -0.61158f, -0.610418f, -0.607784f, -0.607858f, -0.60874f, -0.606742f, -0.604636f, -0.605413f, -0.605602f, -0.603074f, -0.601782f, -0.602889f, -0.602191f, -0.599549f, -0.599165f, -0.600166f, -0.598593f, -0.596266f, -0.596674f, -0.597173f, -0.594934f, -0.593266f, -0.594176f, -0.5939f, -0.59135f, -0.590526f, -0.591542f, -0.590402f, -0.587955f, -0.587963f, -0.588677f, -0.586784f, -0.584818f, -0.585457f, -0.585542f, -0.583174f, -0.581947f, -0.582881f, -0.582161f, -0.579694f, -0.57929f, -0.580123f, -0.57861f, -0.576434f, -0.576747f, -0.57712f, -0.575005f, -0.573431f, -0.574197f, -0.573862f, -0.571468f, -0.570664f, -0.571522f, -0.5704f, -0.568105f, -0.568058f, -0.568636f, -0.566829f, -0.564977f, -0.565505f, -0.565504f, -0.563266f, -0.562092f, -0.562885f, -0.562146f, -0.559823f, -0.559403f, -0.560099f, -0.558634f, -0.556582f, -0.556817f, -0.557086f, -0.555073f, -0.553577f, -0.554224f, -0.553841f, -0.551576f, -0.550789f, -0.551516f, -0.550409f, -0.548239f, -0.548148f, -0.548612f, -0.546876f, -0.545119f, -0.545554f, -0.545482f, -0.543352f, -0.542223f, -0.542898f, -0.542144f, -0.53994f, -0.539506f, -0.540088f, -0.538664f, -0.536715f, -0.536886f, -0.537068f, -0.53514f, -0.533709f, -0.534257f, -0.533833f, -0.531675f, -0.530902f, -0.53152f, -0.530425f, -0.52836f, -0.528232f, -0.528602f, -0.526925f, -0.525247f, -0.525605f, -0.525473f, -0.523434f, -0.522342f, -0.522918f, -0
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.405427f, -0.720467f, -0.891097f, -0.918584f, -0.852629f, -0.763647f, -0.709208f, -0.711452f, -0.7552f, -0.804841f, -0.828513f, -0.815709f, -0.779732f, -0.745978f, -0.73482f, -0.749886f, -0.777981f, -0.799294f, -0.800498f, -0.782398f, -0.757975f, -0.743001f, -0.745774f, -0.762501f, -0.78075f, -0.788104f, -0.780127f, -0.762608f, -0.747097f, -0.743043f, -0.751836f, -0.76643f, -0.776449f, -0.775124f, -0.763476f, -0.749204f, -0.74129f, -0.744077f, -0.75468f, -0.765246f, -0.768338f, -0.761782f, -0.749835f, -0.740096f, -0.738366f, -0.74493f, -0.754602f, -0.760376f, -0.758101f, -0.749096f, -0.739061f, -0.734151f, -0.736907f, -0.744716f, -0.751728f, -0.752831f, -0.746998f, -0.737819f, -0.730973f, -0.730402f, -0.735772f, -0.742825f, -0.746331f, -0.74357f, -0.736058f, -0.728408f, -0.725187f, -0.727891f, -0.734046f, -0.738962f, -0.738904f, -0.73354f, -0.726067f, -0.720993f, -0.721113f, -0.725702f, -0.731085f, -0.733158f, -0.730118f, -0.723602f, -0.717519f, -0.715389f, -0.718025f, -0.72305f, -0.726556f, -0.725737f, -0.720727f, -0.714444f, -0.710586f, -0.711157f, -0.715168f, -0.719365f, -0.72044f, -0.717232f, -0.711457f, -0.706503f, -0.705141f, -0.707695f, -0.711873f, -0.714349f, -0.712996f, -0.708279f, -0.702896f, -0.699935f, -0.700813f, -0.704362f, -0.707654f, -0.707988f, -0.704685f, -0.6995f, -0.695415f, -0.694621f, -0.69708f, -0.700582f, -0.702262f, -0.700519f, -0.696062f, -0.691398f, -0.689132f, -0.690224f, -0.693379f, -0.695944f, -0.695707f, -0.692357f, -0.687669f, -0.684281f, -0.683923f, -0.686275f, -0.689212f, -0.690253f, -0.688219f, -0.684002f, -0.679939f, -0.678229f, -0.679467f, -0.682272f, -0.684233f, -0.683542f, -0.680184f, -0.675929f, -0.67312f, -0.6731f, -0.675333f, -0.677783f, -0.678296f, -0.676044f, -0.672056f, -0.668508f, -0.667254f, -0.668588f, -0.671073f, -0.672519f, -0.671461f, -0.668125f, -0.664257f, -0.661938f, -0.662186f, -0.66429f, -0.666308f, -0.666377f, -0.663964f, -0.660198f, -0.657102f, -0.656226f, -0.657616f, -0.659802f, -0.660801f, -0.659443f, -0.656153f, -0.65264f, -0.650744f, -0.651202f, -0.653167f, -0.654795f, -0.654487f, -0.651957f, -0.64841f, -0.645717f, -0.645157f, -0.64657f, -0.648474f, -0.649077f, -0.647476f, -0.644252f, -0.641068f, -0.63954f, -0.640161f, -0.641979f, -0.643252f, -0.64262f, -0.640011f, -0.636679f, -0.634349f, -0.634056f, -0.635464f, -0.637098f, -0.63735f, -0.63555f, -0.63241f, -0.629532f, -0.628327f, -0.629073f, -0.630737f, -0.631683f, -0.63077f, -0.628115f, -0.624997f, -0.622995f, -0.622927f, -0.624306f, -0.625681f, -0.625619f, -0.623659f, -0.620618f, -0.618029f, -0.617109f, -0.617944f, -0.619447f, -0.620091f, -0.618937f, -0.616262f, -0.613356f, -0.611655f, -0.611773f, -0.613103f, -0.614229f, -0.613884f, -0.611799f, -0.60887f, -0.606554f, -0.605884f, -0.60678f, -0.608117f, -0.608479f, -0.607119f, -0.604448f, -0.601752f, -0.600325f, -0.600598f, -0.601861f, -0.602746f, -0.602148f, -0.599966f, -0.597161f, -0.595103f, -0.594652f, -0.595584f, -0.596749f, -0.596851f, -0.595315f, -0.592669f, -0.590181f, -0.589004f, -0.589402f, -0.590583f, -0.591235f, -0.590411f, -0.588159f, -0.585486f, -0.583673f, -0.583414f, -0.584359f, -0.585349f, -0.585208f, -0.583523f, -0.580921f, -0.578639f, -0.57769f, -0.578187f, -0.579273f, -0.5797f, -0.578673f, -0.576377f, -0.573844f, -0.572262f, -0.57217f, -0.573105f, -0.573919f, -0.573553f, -0.571746f, -0.569204f, -0.567123f, -0.566382f, -0.566953f, -0.567932f, -0.568143f, -0.566937f, -0.564617f, -0.562232f, -0.560867f, -0.560917f, -0.561825f, -0.562462f, -0.561888f, -0.559981f, -0.557514f, -0.555632f, -0.555077f, -0.555701f, -0.556562f, -0.556567f, -0.555204f, -0.55288f, -0.550647f, -0.549486f, -0.549656f, -0.550521f, -0.55098f, -0.550215f, -0.548231f, -0.545852f, -0.544161f, -0.543775f, -0.54443f, -0.545166f, -0.544974f, -0.543474f, -0.541165f, -0.539087f, -0.538117f, -0.538386f, -0.539192f, -0.539475f, -0.538535f, -0.536494f, -0.534214f, -0.532711f, -0.532474f, -0.533141f, -0.533745f, -0.533366f, -0.531749f, -0.529471f, -0.52755f, -0.526758f, -0.527106f, -0.527839f, -0.527949f, -0.52685f, -0.524772f, -0.5226f, -0.521277f, -0.521172f, -0.52
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.208081f, -0.403981f, -0.576798f, -0.718032f, -0.822403f, -0.88828f, -0.91766f, -0.915731f, -0.890068f, -0.849596f, -0.803451f, -0.759895f, -0.725423f, -0.704165f, -0.697642f, -0.704898f, -0.722937f, -0.747417f, -0.773452f, -0.796421f, -0.812664f, -0.819961f, -0.817757f, -0.807102f, -0.790349f, -0.770669f, -0.751476f, -0.735847f, -0.726048f, -0.723214f, -0.727238f, -0.736872f, -0.750004f, -0.764059f, -0.776461f, -0.785058f, -0.788462f, -0.786238f, -0.778926f, -0.767903f, -0.755105f, -0.742677f, -0.732599f, -0.726356f, -0.724717f, -0.727627f, -0.734262f, -0.743194f, -0.752662f, -0.760887f, -0.766372f, -0.768149f, -0.76592f, -0.760088f, -0.751655f, -0.742036f, -0.732796f, -0.725383f, -0.720879f, -0.719832f, -0.722175f, -0.727262f, -0.733996f, -0.741031f, -0.747009f, -0.7508f, -0.75168f, -0.749452f, -0.744459f, -0.737509f, -0.729728f, -0.722351f, -0.716509f, -0.71304f, -0.712347f, -0.714343f, -0.718482f, -0.723858f, -0.729377f, -0.733948f, -0.736668f, -0.736979f, -0.734754f, -0.730304f, -0.72432f, -0.717743f, -0.711592f, -0.706791f, -0.70401f, -0.703552f, -0.705313f, -0.708806f, -0.713256f, -0.717737f, -0.721337f, -0.723318f, -0.723236f, -0.721014f, -0.716947f, -0.711646f, -0.705922f, -0.700643f, -0.696585f, -0.694296f, -0.694006f, -0.695594f, -0.698618f, -0.702392f, -0.706113f, -0.709002f, -0.71044f, -0.710068f, -0.707851f, -0.704071f, -0.699281f, -0.694196f, -0.689572f, -0.686073f, -0.684153f, -0.683988f, -0.685444f, -0.688109f, -0.691365f, -0.694503f, -0.696847f, -0.697867f, -0.697274f, -0.695062f, -0.691507f, -0.687115f, -0.682529f, -0.678418f, -0.675355f, -0.673724f, -0.673656f, -0.675006f, -0.677384f, -0.680229f, -0.682905f, -0.684815f, -0.685504f, -0.684736f, -0.682529f, -0.679156f, -0.675086f, -0.670903f, -0.667204f, -0.664493f, -0.663095f, -0.663104f, -0.664365f, -0.666509f, -0.669018f, -0.671317f, -0.672873f, -0.673291f, -0.67238f, -0.670181f, -0.666959f, -0.663155f, -0.659305f, -0.655947f, -0.653526f, -0.65232f, -0.652391f, -0.653577f, -0.655525f, -0.657752f, -0.659735f, -0.660995f, -0.661189f, -0.66016f, -0.657968f, -0.654876f, -0.651297f, -0.647728f, -0.644658f, -0.642482f, -0.641436f, -0.641557f, -0.642677f, -0.644457f, -0.646445f, -0.648158f, -0.649168f, -0.64917f, -0.648043f, -0.64586f, -0.642879f, -0.639494f, -0.636167f, -0.633343f, -0.631376f, -0.630467f, -0.63063f, -0.631692f, -0.633325f, -0.635105f, -0.636586f, -0.637379f, -0.637217f, -0.636006f, -0.633832f, -0.63095f, -0.627735f, -0.624619f, -0.62201f, -0.620224f, -0.619433f, -0.61963f, -0.620639f, -0.622143f, -0.62374f, -0.625017f, -0.62562f, -0.625316f, -0.624033f, -0.621868f, -0.619075f, -0.616011f, -0.613081f, -0.610661f, -0.609034f, -0.608345f, -0.608571f, -0.609532f, -0.61092f, -0.612354f, -0.61345f, -0.613886f, -0.613457f, -0.612111f, -0.609957f, -0.607244f, -0.604316f, -0.601552f, -0.599299f, -0.597814f, -0.597214f, -0.597465f, -0.598381f, -0.599663f, -0.600951f, -0.601885f, -0.602172f, -0.601631f, -0.600231f, -0.598089f, -0.595449f, -0.592643f, -0.590029f, -0.587928f, -0.586568f, -0.586048f, -0.586318f, -0.587192f, -0.588378f, -0.589533f, -0.590321f, -0.590473f, -0.589834f, -0.588387f, -0.586256f, -0.583684f, -0.580991f, -0.578513f, -0.576548f, -0.575302f, -0.574852f, -0.575139f, -0.575973f, -0.57707f, -0.578103f, -0.578758f, -0.578789f, -0.578061f, -0.576572f, -0.574453f, -0.571945f, -0.569355f, -0.567002f, -0.565162f, -0.564018f, -0.563632f, -0.563932f, -0.564727f, -0.565742f, -0.566663f, -0.567196f, -0.567116f, -0.566307f, -0.564781f, -0.562676f, -0.560228f, -0.557734f, -0.555497f, -0.55377f, -0.552719f, -0.55239f, -0.5527f, -0.553459f, -0.554396f, -0.555213f, -0.555634f, -0.555452f, -0.55457f, -0.553013f, -0.550921f, -0.54853f, -0.546126f, -0.543995f, -0.542373f, -0.541408f, -0.541129f, -0.541448f, -0.542171f, -0.543036f, -0.543756f, -0.544072f, -0.543797f, -0.542848f, -0.541262f, -0.539185f, -0.536849f, -0.534529f, -0.532497f, -0.530973f, -0.530086f, -0.529853f, -0.530178f, -0.530867f, -0.531662f, -0.532291f, -0.532509f, -0.532148f, -0.531139f, -0.529528f, -0.527466f, -0.525182f, -0.522942f, -0.521003f, -0.519569f, -0.518
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.104053f, -0.20657f, -0.306054f, -0.401089f, -0.490375f, -0.572763f, -0.647281f, -0.713158f, -0.769842f, -0.817007f, -0.85456f, -0.882635f, -0.901582f, -0.91195f, -0.914468f, -0.910015f, -0.899589f, -0.884273f, -0.865202f, -0.843527f, -0.820377f, -0.796828f, -0.773874f, -0.7524f, -0.733158f, -0.716756f, -0.70364f, -0.694097f, -0.688247f, -0.686056f, -0.687346f, -0.691808f, -0.699023f, -0.708487f, -0.719632f, -0.731854f, -0.744538f, -0.757084f, -0.768927f, -0.779562f, -0.788561f, -0.795581f, -0.800382f, -0.802826f, -0.802881f, -0.800615f, -0.796194f, -0.789866f, -0.781948f, -0.772813f, -0.76287f, -0.752546f, -0.742269f, -0.732447f, -0.723455f, -0.715618f, -0.709201f, -0.7044f, -0.701333f, -0.700042f, -0.700491f, -0.702571f, -0.706107f, -0.710866f, -0.716572f, -0.722915f, -0.729567f, -0.736199f, -0.742489f, -0.748142f, -0.752897f, -0.75654f, -0.758909f, -0.759903f, -0.759482f, -0.757669f, -0.754546f, -0.750247f, -0.744957f, -0.738898f, -0.732317f, -0.72548f, -0.718658f, -0.712113f, -0.70609f, -0.700806f, -0.696439f, -0.693126f, -0.690954f, -0.689959f, -0.690124f, -0.691384f, -0.693628f, -0.696702f, -0.700423f, -0.704582f, -0.708954f, -0.713313f, -0.717434f, -0.72111f, -0.724156f, -0.726419f, -0.72778f, -0.728165f, -0.727542f, -0.725924f, -0.723367f, -0.719965f, -0.715849f, -0.711178f, -0.706133f, -0.700906f, -0.695695f, -0.690693f, -0.686083f, -0.682024f, -0.678651f, -0.676067f, -0.674337f, -0.673488f, -0.673511f, -0.674357f, -0.675942f, -0.678151f, -0.680845f, -0.683864f, -0.687039f, -0.690195f, -0.693161f, -0.695777f, -0.697901f, -0.699413f, -0.700223f, -0.700273f, -0.699538f, -0.698028f, -0.695787f, -0.69289f, -0.689439f, -0.685558f, -0.681392f, -0.67709f, -0.672811f, -0.668708f, -0.664922f, -0.661583f, -0.658797f, -0.656644f, -0.655178f, -0.654418f, -0.654356f, -0.654952f, -0.656138f, -0.657821f, -0.659887f, -0.662208f, -0.664646f, -0.667058f, -0.669307f, -0.671262f, -0.672808f, -0.673849f, -0.674312f, -0.674149f, -0.673342f, -0.671901f, -0.669862f, -0.667287f, -0.664263f, -0.660893f, -0.657295f, -0.653595f, -0.649923f, -0.646406f, -0.643161f, -0.640296f, -0.637897f, -0.63603f, -0.634738f, -0.634038f, -0.63392f, -0.634349f, -0.635268f, -0.636598f, -0.638241f, -0.640091f, -0.642029f, -0.643936f, -0.645697f, -0.647201f, -0.648351f, -0.649069f, -0.649292f, -0.648982f, -0.648126f, -0.646731f, -0.644832f, -0.642481f, -0.639754f, -0.63674f, -0.633539f, -0.630261f, -0.627016f, -0.623911f, -0.621049f, -0.618519f, -0.616394f, -0.614731f, -0.613564f, -0.612906f, -0.612749f, -0.61306f, -0.613788f, -0.614864f, -0.616204f, -0.617713f, -0.619291f, -0.620834f, -0.62224f, -0.623417f, -0.62428f, -0.624761f, -0.624809f, -0.624392f, -0.623499f, -0.622138f, -0.62034f, -0.618154f, -0.615646f, -0.612893f, -0.609986f, -0.607019f, -0.60409f, -0.601292f, -0.598714f, -0.596433f, -0.594513f, -0.593002f, -0.591929f, -0.591304f, -0.591117f, -0.59134f, -0.591925f, -0.592811f, -0.593923f, -0.595176f, -0.596482f, -0.597748f, -0.598887f, -0.599815f, -0.600459f, -0.600761f, -0.600676f, -0.600176f, -0.599253f, -0.597918f, -0.596198f, -0.594137f, -0.591795f, -0.589244f, -0.586562f, -0.583835f, -0.581148f, -0.578587f, -0.576228f, -0.57414f, -0.572379f, -0.570986f, -0.569986f, -0.569387f, -0.569178f, -0.569333f, -0.569807f, -0.570545f, -0.57148f, -0.572533f, -0.573627f, -0.574677f, -0.575606f, -0.576339f, -0.576812f, -0.576972f, -0.576781f, -0.576216f, -0.57527f, -0.573954f, -0.572294f, -0.570332f, -0.568122f, -0.565728f, -0.563225f, -0.560687f, -0.558194f, -0.55582f, -0.553636f, -0.551702f, -0.550067f, -0.548769f, -0.547828f, -0.54725f, -0.547024f, -0.547125f, -0.547511f, -0.548132f, -0.548924f, -0.549818f, -0.550741f, -0.551618f, -0.552378f, -0.552954f, -0.553288f, -0.553334f, -0.553057f, -0.552439f, -0.551473f, -0.550173f, -0.548561f, -0.546678f, -0.544574f, -0.542309f, -0.539949f, -0.537565f, -0.535229f, -0.533007f, -0.530965f, -0.529156f, -0.527626f, -0.526406f, -0.525513f, -0.524953f, -0.524714f, -0.524771f, -0.525086f, -0.52561f, -0.526286f, -0.52705f, -0.527833f, -0.528568f, -0.529189f, -0.529636f, -0.529856f, -0.529808f, -0.52946
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.052122f, -0.104048f, -0.15558f, -0.206525f, -0.256695f, -0.305904f, -0.353976f, -0.40074f, -0.446034f, -0.489707f, -0.531618f, -0.571637f, -0.609647f, -0.645543f, -0.679236f, -0.710649f, -0.73972f, -0.766402f, -0.790663f, -0.812485f, -0.831865f, -0.848816f, -0.863365f, -0.875551f, -0.885428f, -0.893064f, -0.898536f, -0.901935f, -0.903361f, -0.902924f, -0.900743f, -0.896943f, -0.891657f, -0.885024f, -0.877184f, -0.868283f, -0.858466f, -0.847883f, -0.836679f, -0.824999f, -0.812987f, -0.80078f, -0.788514f, -0.776317f, -0.76431f, -0.752608f, -0.741319f, -0.730539f, -0.720358f, -0.710854f, -0.702098f, -0.694147f, -0.687049f, -0.680843f, -0.675556f, -0.671204f, -0.667793f, -0.66532f, -0.663772f, -0.663126f, -0.663352f, -0.66441f, -0.666253f, -0.668828f, -0.672075f, -0.675931f, -0.680325f, -0.685185f, -0.690435f, -0.695998f, -0.701795f, -0.707747f, -0.713776f, -0.719804f, -0.725757f, -0.731562f, -0.73715f, -0.742458f, -0.747424f, -0.751995f, -0.75612f, -0.759758f, -0.76287f, -0.765426f, -0.767403f, -0.768784f, -0.769559f, -0.769724f, -0.769283f, -0.768246f, -0.766629f, -0.764454f, -0.761748f, -0.758544f, -0.75488f, -0.750797f, -0.746341f, -0.74156f, -0.736505f, -0.731229f, -0.725786f, -0.720232f, -0.714622f, -0.70901f, -0.70345f, -0.697994f, -0.692693f, -0.687594f, -0.682741f, -0.678174f, -0.673932f, -0.670046f, -0.666546f, -0.663454f, -0.66079f, -0.658567f, -0.656793f, -0.655473f, -0.654605f, -0.654182f, -0.654194f, -0.654625f, -0.655454f, -0.656658f, -0.658209f, -0.660075f, -0.662223f, -0.664615f, -0.667213f, -0.669977f, -0.672864f, -0.675832f, -0.678839f, -0.681842f, -0.684799f, -0.68767f, -0.690414f, -0.692996f, -0.69538f, -0.697534f, -0.699429f, -0.701039f, -0.702341f, -0.703316f, -0.70395f, -0.704232f, -0.704154f, -0.703715f, -0.702914f, -0.701758f, -0.700254f, -0.698417f, -0.696261f, -0.693807f, -0.691077f, -0.688096f, -0.684893f, -0.681496f, -0.677939f, -0.674252f, -0.670472f, -0.666632f, -0.662767f, -0.658912f, -0.655101f, -0.651368f, -0.647745f, -0.644262f, -0.640947f, -0.637828f, -0.634928f, -0.632268f, -0.629867f, -0.627739f, -0.625898f, -0.624352f, -0.623105f, -0.622161f, -0.621518f, -0.621171f, -0.621112f, -0.621331f, -0.621813f, -0.622542f, -0.623499f, -0.624661f, -0.626006f, -0.627508f, -0.629139f, -0.630873f, -0.63268f, -0.63453f, -0.636395f, -0.638244f, -0.640049f, -0.641782f, -0.643415f, -0.644922f, -0.64628f, -0.647467f, -0.648461f, -0.649247f, -0.649807f, -0.65013f, -0.650205f, -0.650026f, -0.649589f, -0.648891f, -0.647936f, -0.646726f, -0.645271f, -0.643578f, -0.641662f, -0.639536f, -0.637218f, -0.634727f, -0.632083f, -0.629309f, -0.626429f, -0.623466f, -0.620446f, -0.617394f, -0.614337f, -0.6113f, -0.608307f, -0.605384f, -0.602554f, -0.599839f, -0.597259f, -0.594835f, -0.592582f, -0.590517f, -0.588651f, -0.586996f, -0.58556f, -0.584349f, -0.583365f, -0.58261f, -0.58208f, -0.581773f, -0.581681f, -0.581794f, -0.582101f, -0.58259f, -0.583244f, -0.584046f, -0.584977f, -0.586019f, -0.587149f, -0.588346f, -0.589587f, -0.59085f, -0.592112f, -0.593351f, -0.594544f, -0.595669f, -0.596706f, -0.597636f, -0.598441f, -0.599103f, -0.599608f, -0.599943f, -0.600097f, -0.600061f, -0.599828f, -0.599393f, -0.598755f, -0.597913f, -0.596869f, -0.595629f, -0.594198f, -0.592585f, -0.590802f, -0.58886f, -0.586774f, -0.58456f, -0.582233f, -0.579814f, -0.57732f, -0.574772f, -0.572189f, -0.569593f, -0.567003f, -0.56444f, -0.561924f, -0.559474f, -0.557108f, -0.554844f, -0.552698f, -0.550683f, -0.548815f, -0.547102f, -0.545557f, -0.544185f, -0.542992f, -0.541983f, -0.541158f, -0.540518f, -0.540059f, -0.539777f, -0.539666f, -0.539717f, -0.53992f, -0.540264f, -0.540734f, -0.541317f, -0.541997f, -0.542757f, -0.543579f, -0.544446f, -0.545339f, -0.546239f, -0.547127f, -0.547986f, -0.548797f, -0.549543f, -0.550207f, -0.550774f, -0.55123f, -0.551561f, -0.551757f, -0.551806f, -0.551702f, -0.551436f, -0.551005f, -0.550406f, -0.549638f, -0.548702f, -0.5476f, -0.546338f, -0.544921f, -0.543358f, -0.541658f, -0.539834f, -0.537896f, -0.535859f, -0.533738f, -0.531547f, -0.529304f, -0.527026f, -0.524728f, -0.522429f, -0.520145f, -
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.026073f, -0.052121f, -0.078117f, -0.104036f, -0.129853f, -0.155541f, -0.181077f, -0.206434f, -0.231589f, -0.256518f, -0.281197f, -0.305601f, -0.329709f, -0.353498f, -0.376946f, -0.400033f, -0.422736f, -0.445037f, -0.466915f, -0.488353f, -0.509333f, -0.529837f, -0.54985f, -0.569355f, -0.588338f, -0.606785f, -0.624685f, -0.642024f, -0.658791f, -0.674977f, -0.690573f, -0.70557f, -0.719961f, -0.73374f, -0.746902f, -0.759442f, -0.771357f, -0.782646f, -0.793306f, -0.803337f, -0.812741f, -0.821518f, -0.829672f, -0.837206f, -0.844123f, -0.850431f, -0.856135f, -0.861241f, -0.865759f, -0.869697f, -0.873065f, -0.875872f, -0.878131f, -0.879853f, -0.881051f, -0.881738f, -0.881928f, -0.881636f, -0.880876f, -0.879665f, -0.878018f, -0.875952f, -0.873484f, -0.870632f, -0.867413f, -0.863846f, -0.859948f, -0.855739f, -0.851238f, -0.846462f, -0.841432f, -0.836167f, -0.830686f, -0.825008f, -0.819152f, -0.813138f, -0.806984f, -0.800709f, -0.794333f, -0.787874f, -0.781349f, -0.774777f, -0.768176f, -0.761562f, -0.754953f, -0.748366f, -0.741816f, -0.735318f, -0.728889f, -0.722543f, -0.716293f, -0.710154f, -0.704138f, -0.698257f, -0.692523f, -0.686948f, -0.681542f, -0.676315f, -0.671275f, -0.666431f, -0.661791f, -0.657362f, -0.65315f, -0.649161f, -0.645401f, -0.641872f, -0.638579f, -0.635525f, -0.632711f, -0.63014f, -0.627812f, -0.625727f, -0.623885f, -0.622284f, -0.620923f, -0.619799f, -0.618909f, -0.61825f, -0.617818f, -0.617607f, -0.617613f, -0.61783f, -0.618252f, -0.618871f, -0.619682f, -0.620676f, -0.621845f, -0.623181f, -0.624676f, -0.626321f, -0.628107f, -0.630023f, -0.632061f, -0.634211f, -0.636463f, -0.638806f, -0.641231f, -0.643727f, -0.646284f, -0.648891f, -0.651539f, -0.654216f, -0.656912f, -0.659618f, -0.662324f, -0.665018f, -0.667693f, -0.670337f, -0.672942f, -0.675498f, -0.677998f, -0.680431f, -0.68279f, -0.685067f, -0.687253f, -0.689343f, -0.691329f, -0.693203f, -0.694961f, -0.696596f, -0.698103f, -0.699477f, -0.700713f, -0.701808f, -0.702758f, -0.703558f, -0.704208f, -0.704704f, -0.705045f, -0.705229f, -0.705255f, -0.705123f, -0.704833f, -0.704386f, -0.703781f, -0.703021f, -0.702106f, -0.70104f, -0.699825f, -0.698463f, -0.696959f, -0.695314f, -0.693535f, -0.691624f, -0.689587f, -0.687428f, -0.685153f, -0.682767f, -0.680276f, -0.677687f, -0.675005f, -0.672236f, -0.669388f, -0.666467f, -0.66348f, -0.660434f, -0.657336f, -0.654193f, -0.651014f, -0.647803f, -0.64457f, -0.641322f, -0.638065f, -0.634807f, -0.631555f, -0.628316f, -0.625097f, -0.621906f, -0.618747f, -0.615629f, -0.612558f, -0.609539f, -0.606579f, -0.603683f, -0.600858f, -0.598107f, -0.595437f, -0.592852f, -0.590356f, -0.587954f, -0.585649f, -0.583446f, -0.581347f, -0.579355f, -0.577473f, -0.575703f, -0.574047f, -0.572506f, -0.571083f, -0.569777f, -0.568589f, -0.567521f, -0.56657f, -0.565738f, -0.565022f, -0.564423f, -0.563939f, -0.563567f, -0.563307f, -0.563155f, -0.563109f, -0.563166f, -0.563323f, -0.563577f, -0.563923f, -0.564358f, -0.564878f, -0.565478f, -0.566154f, -0.566901f, -0.567714f, -0.568589f, -0.569519f, -0.570501f, -0.571528f, -0.572594f, -0.573695f, -0.574825f, -0.575977f, -0.577147f, -0.578329f, -0.579517f, -0.580705f, -0.581888f, -0.58306f, -0.584216f, -0.58535f, -0.586457f, -0.587532f, -0.58857f, -0.589565f, -0.590514f, -0.591411f, -0.592252f, -0.593033f, -0.59375f, -0.594398f, -0.594976f, -0.595478f, -0.595902f, -0.596244f, -0.596504f, -0.596677f, -0.596762f, -0.596757f, -0.59666f, -0.59647f, -0.596186f, -0.595808f, -0.595334f, -0.594764f, -0.594099f, -0.593339f, -0.592484f, -0.591536f, -0.590495f, -0.589362f, -0.58814f, -0.58683f, -0.585435f, -0.583956f, -0.582396f, -0.580758f, -0.579045f, -0.577261f, -0.575408f, -0.573489f, -0.57151f, -0.569473f, -0.567383f, -0.565243f, -0.563058f, -0.560833f, -0.558571f, -0.556277f, -0.553956f, -0.551613f, -0.549251f, -0.546876f, -0.544493f, -0.542106f, -0.539719f, -0.537338f, -0.534966f, -0.53261f, -0.530272f, -0.527958f, -0.525672f, -0.523417f, -0.521199f, -0.51902f, -0.516886f, -0.514799f, -0.512763f, -0.510782f, -0.508858f, -0.506995f, -0.505195f, -0.503461f, -0.501796f, -0.500202f, -0.49868f,
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.012271f, -0.02454f, -0.036802f, -0.049056f, -0.061298f, -0.073525f, -0.085735f, -0.097924f, -0.110089f, -0.122229f, -0.134339f, -0.146416f, -0.158459f, -0.170464f, -0.182428f, -0.194349f, -0.206224f, -0.218049f, -0.229822f, -0.241541f, -0.253203f, -0.264804f, -0.276343f, -0.287817f, -0.299222f, -0.310557f, -0.321819f, -0.333005f, -0.344113f, -0.35514f, -0.366084f, -0.376943f, -0.387713f, -0.398394f, -0.408982f, -0.419475f, -0.429871f, -0.440167f, -0.450363f, -0.460455f, -0.470441f, -0.48032f, -0.490089f, -0.499746f, -0.509291f, -0.518719f, -0.528031f, -0.537224f, -0.546296f, -0.555246f, -0.564073f, -0.572773f, -0.581347f, -0.589792f, -0.598108f, -0.606292f, -0.614344f, -0.622261f, -0.630044f, -0.63769f, -0.6452f, -0.65257f, -0.659802f, -0.666892f, -0.673842f, -0.680649f, -0.687314f, -0.693835f, -0.700211f, -0.706443f, -0.712529f, -0.718469f, -0.724262f, -0.729908f, -0.735407f, -0.740759f, -0.745962f, -0.751018f, -0.755925f, -0.760684f, -0.765294f, -0.769757f, -0.774071f, -0.778237f, -0.782255f, -0.786125f, -0.789848f, -0.793424f, -0.796853f, -0.800136f, -0.803273f, -0.806265f, -0.809112f, -0.811816f, -0.814376f, -0.816794f, -0.81907f, -0.821205f, -0.823201f, -0.825057f, -0.826776f, -0.828357f, -0.829802f, -0.831113f, -0.83229f, -0.833334f, -0.834248f, -0.835031f, -0.835686f, -0.836214f, -0.836616f, -0.836893f, -0.837048f, -0.837082f, -0.836996f, -0.836791f, -0.83647f, -0.836034f, -0.835485f, -0.834825f, -0.834055f, -0.833177f, -0.832193f, -0.831104f, -0.829914f, -0.828622f, -0.827233f, -0.825746f, -0.824165f, -0.822492f, -0.820728f, -0.818875f, -0.816935f, -0.814911f, -0.812805f, -0.810618f, -0.808354f, -0.806013f, -0.803598f, -0.801112f, -0.798555f, -0.795932f, -0.793243f, -0.790491f, -0.787678f, -0.784807f, -0.781879f, -0.778897f, -0.775863f, -0.772779f, -0.769647f, -0.76647f, -0.76325f, -0.759989f, -0.756689f, -0.753352f, -0.749981f, -0.746578f, -0.743144f, -0.739683f, -0.736196f, -0.732685f, -0.729153f, -0.725602f, -0.722033f, -0.718449f, -0.714853f, -0.711245f, -0.707628f, -0.704004f, -0.700375f, -0.696744f, -0.693111f, -0.689479f, -0.68585f, -0.682226f, -0.678609f, -0.675f, -0.671401f, -0.667815f, -0.664242f, -0.660685f, -0.657145f, -0.653625f, -0.650124f, -0.646647f, -0.643193f, -0.639764f, -0.636363f, -0.63299f, -0.629647f, -0.626336f, -0.623057f, -0.619812f, -0.616603f, -0.613431f, -0.610296f, -0.607201f, -0.604146f, -0.601133f, -0.598163f, -0.595236f, -0.592355f, -0.589519f, -0.58673f, -0.583988f, -0.581295f, -0.578652f, -0.576059f, -0.573516f, -0.571026f, -0.568588f, -0.566203f, -0.563872f, -0.561595f, -0.559372f, -0.557206f, -0.555094f, -0.553039f, -0.551041f, -0.549099f, -0.547215f, -0.545388f, -0.543619f, -0.541907f, -0.540254f, -0.538659f, -0.537121f, -0.535642f, -0.534222f, -0.532859f, -0.531554f, -0.530308f, -0.529119f, -0.527987f, -0.526913f, -0.525897f, -0.524937f, -0.524033f, -0.523186f, -0.522395f, -0.521659f, -0.520977f, -0.52035f, -0.519777f, -0.519258f, -0.518791f, -0.518376f, -0.518013f, -0.5177f, -0.517438f, -0.517225f, -0.517061f, -0.516945f, -0.516876f, -0.516853f, -0.516875f, -0.516943f, -0.517053f, -0.517207f, -0.517403f, -0.517639f, -0.517915f, -0.51823f, -0.518583f, -0.518974f, -0.519399f, -0.51986f, -0.520354f, -0.520881f, -0.52144f, -0.522029f, -0.522647f, -0.523293f, -0.523967f, -0.524666f, -0.52539f, -0.526137f, -0.526907f, -0.527698f, -0.528509f, -0.529338f, -0.530186f, -0.531049f, -0.531928f, -0.53282f, -0.533725f, -0.534642f, -0.535569f, -0.536505f, -0.537449f, -0.5384f, -0.539356f, -0.540316f, -0.541279f, -0.542244f, -0.54321f, -0.544176f, -0.54514f, -0.546101f, -0.547058f, -0.548009f, -0.548955f, -0.549893f, -0.550823f, -0.551744f, -0.552653f, -0.553551f, -0.554437f, -0.555308f, -0.556165f, -0.557005f, -0.557829f, -0.558635f, -0.559423f, -0.560191f, -0.560938f, -0.561663f, -0.562366f, -0.563046f, -0.563702f, -0.564333f, -0.564938f, -0.565516f, -0.566068f, -0.566591f, -0.567085f, -0.56755f, -0.567985f, -0.56839f, -0.568762f, -0.569103f, -0.569412f, -0.569687f, -0.569929f, -0.570136f, -0.570309f, -0.570447f, -0.57055f, -0.570616f, -0.570647f, -0.570641f, -0.570598
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.006136f, -0.012271f, -0.018406f, -0.024539f, -0.030671f, -0.0368f, -0.042927f, -0.04905f, -0.055171f, -0.061287f, -0.067399f, -0.073506f, -0.079609f, -0.085705f, -0.091796f, -0.097879f, -0.103957f, -0.110026f, -0.116088f, -0.122142f, -0.128187f, -0.134224f, -0.14025f, -0.146267f, -0.152274f, -0.15827f, -0.164255f, -0.170228f, -0.176189f, -0.182138f, -0.188074f, -0.193997f, -0.199907f, -0.205802f, -0.211683f, -0.217549f, -0.2234f, -0.229235f, -0.235055f, -0.240857f, -0.246644f, -0.252412f, -0.258164f, -0.263897f, -0.269612f, -0.275308f, -0.280985f, -0.286642f, -0.292279f, -0.297896f, -0.303493f, -0.309068f, -0.314622f, -0.320155f, -0.325665f, -0.331152f, -0.336617f, -0.342058f, -0.347476f, -0.35287f, -0.35824f, -0.363585f, -0.368905f, -0.374199f, -0.379468f, -0.384711f, -0.389928f, -0.395118f, -0.400281f, -0.405416f, -0.410524f, -0.415604f, -0.420656f, -0.425679f, -0.430673f, -0.435638f, -0.440573f, -0.445479f, -0.450354f, -0.455199f, -0.460014f, -0.464797f, -0.469549f, -0.474269f, -0.478958f, -0.483615f, -0.488239f, -0.49283f, -0.497389f, -0.501914f, -0.506406f, -0.510864f, -0.515288f, -0.519678f, -0.524034f, -0.528355f, -0.532641f, -0.536892f, -0.541108f, -0.545288f, -0.549432f, -0.55354f, -0.557612f, -0.561647f, -0.565646f, -0.569608f, -0.573533f, -0.577421f, -0.581271f, -0.585084f, -0.588859f, -0.592596f, -0.596295f, -0.599956f, -0.603578f, -0.607161f, -0.610706f, -0.614212f, -0.617679f, -0.621106f, -0.624494f, -0.627843f, -0.631152f, -0.634421f, -0.637651f, -0.64084f, -0.643989f, -0.647098f, -0.650167f, -0.653195f, -0.656183f, -0.65913f, -0.662037f, -0.664903f, -0.667727f, -0.670511f, -0.673254f, -0.675956f, -0.678616f, -0.681236f, -0.683814f, -0.686351f, -0.688846f, -0.6913f, -0.693713f, -0.696084f, -0.698413f, -0.700702f, -0.702948f, -0.705153f, -0.707316f, -0.709438f, -0.711518f, -0.713557f, -0.715554f, -0.717509f, -0.719423f, -0.721295f, -0.723126f, -0.724915f, -0.726663f, -0.728369f, -0.730034f, -0.731657f, -0.733239f, -0.73478f, -0.736279f, -0.737738f, -0.739155f, -0.740531f, -0.741867f, -0.743161f, -0.744415f, -0.745628f, -0.7468f, -0.747931f, -0.749022f, -0.750073f, -0.751084f, -0.752054f, -0.752984f, -0.753874f, -0.754725f, -0.755536f, -0.756307f, -0.757039f, -0.757731f, -0.758384f, -0.758998f, -0.759573f, -0.76011f, -0.760608f, -0.761067f, -0.761488f, -0.761871f, -0.762216f, -0.762523f, -0.762792f, -0.763024f, -0.763219f, -0.763376f, -0.763497f, -0.76358f, -0.763628f, -0.763639f, -0.763613f, -0.763552f, -0.763455f, -0.763322f, -0.763154f, -0.762951f, -0.762713f, -0.762441f, -0.762133f, -0.761792f, -0.761416f, -0.761007f, -0.760564f, -0.760088f, -0.759579f, -0.759037f, -0.758462f, -0.757855f, -0.757215f, -0.756544f, -0.755841f, -0.755107f, -0.754342f, -0.753546f, -0.752719f, -0.751862f, -0.750975f, -0.750058f, -0.749112f, -0.748136f, -0.747132f, -0.746099f, -0.745037f, -0.743947f, -0.74283f, -0.741685f, -0.740513f, -0.739313f, -0.738087f, -0.736835f, -0.735557f, -0.734252f, -0.732923f, -0.731568f, -0.730188f, -0.728784f, -0.727355f, -0.725903f, -0.724427f, -0.722927f, -0.721405f, -0.719859f, -0.718292f, -0.716702f, -0.71509f, -0.713457f, -0.711803f, -0.710128f, -0.708432f, -0.706717f, -0.704981f, -0.703226f, -0.701452f, -0.699658f, -0.697847f, -0.696017f, -0.694169f, -0.692303f, -0.69042f, -0.688521f, -0.686604f, -0.684672f, -0.682723f, -0.680759f, -0.678779f, -0.676785f, -0.674776f, -0.672752f, -0.670715f, -0.668664f, -0.6666f, -0.664522f, -0.662432f, -0.66033f, -0.658216f, -0.65609f, -0.653952f, -0.651804f, -0.649645f, -0.647476f, -0.645297f, -0.643108f, -0.640909f, -0.638702f, -0.636486f, -0.634261f, -0.632029f, -0.629789f, -0.627541f, -0.625286f, -0.623025f, -0.620757f, -0.618483f, -0.616203f, -0.613917f, -0.611627f, -0.609331f, -0.607031f, -0.604727f, -0.602419f, -0.600108f, -0.597793f, -0.595475f, -0.593154f, -0.590831f, -0.588506f, -0.58618f, -0.583852f, -0.581522f, -0.579192f, -0.576861f, -0.57453f, -0.5722f, -0.569869f, -0.567539f, -0.56521f, -0.562882f, -0.560556f, -0.558231f, -0.555909f, -0.553589f, -0.551271f, -0.548957f, -0.546645f, -0.544337f, -0.542033f, -0.539733f, -0.53743
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.003068f, -0.006136f, -0.009204f, -0.012271f, -0.015338f, -0.018405f, -0.021472f, -0.024538f, -0.027603f, -0.030668f, -0.033732f, -0.036795f, -0.039857f, -0.042918f, -0.045979f, -0.049038f, -0.052096f, -0.055153f, -0.058209f, -0.061263f, -0.064316f, -0.067367f, -0.070417f, -0.073465f, -0.076511f, -0.079556f, -0.082598f, -0.085639f, -0.088678f, -0.091714f, -0.094749f, -0.097781f, -0.100811f, -0.103839f, -0.106864f, -0.109886f, -0.112906f, -0.115924f, -0.118939f, -0.12195f, -0.124959f, -0.127965f, -0.130969f, -0.133969f, -0.136965f, -0.139959f, -0.142949f, -0.145936f, -0.14892f, -0.1519f, -0.154877f, -0.15785f, -0.160819f, -0.163784f, -0.166746f, -0.169703f, -0.172657f, -0.175607f, -0.178552f, -0.181494f, -0.184431f, -0.187364f, -0.190292f, -0.193216f, -0.196135f, -0.19905f, -0.201961f, -0.204866f, -0.207767f, -0.210663f, -0.213553f, -0.216439f, -0.21932f, -0.222196f, -0.225067f, -0.227932f, -0.230792f, -0.233646f, -0.236496f, -0.239339f, -0.242177f, -0.24501f, -0.247836f, -0.250657f, -0.253472f, -0.256282f, -0.259085f, -0.261882f, -0.264673f, -0.267458f, -0.270237f, -0.273009f, -0.275775f, -0.278535f, -0.281288f, -0.284035f, -0.286775f, -0.289508f, -0.292235f, -0.294955f, -0.297668f, -0.300374f, -0.303074f, -0.305766f, -0.308451f, -0.311129f, -0.3138f, -0.316463f, -0.319119f, -0.321768f, -0.324409f, -0.327043f, -0.32967f, -0.332288f, -0.334899f, -0.337503f, -0.340098f, -0.342686f, -0.345265f, -0.347837f, -0.350401f, -0.352957f, -0.355504f, -0.358044f, -0.360575f, -0.363098f, -0.365612f, -0.368118f, -0.370616f, -0.373105f, -0.375586f, -0.378058f, -0.380521f, -0.382976f, -0.385421f, -0.387858f, -0.390287f, -0.392706f, -0.395116f, -0.397517f, -0.399909f, -0.402292f, -0.404666f, -0.40703f, -0.409385f, -0.411731f, -0.414068f, -0.416395f, -0.418712f, -0.42102f, -0.423319f, -0.425608f, -0.427887f, -0.430156f, -0.432416f, -0.434666f, -0.436906f, -0.439136f, -0.441356f, -0.443566f, -0.445766f, -0.447956f, -0.450136f, -0.452305f, -0.454465f, -0.456614f, -0.458753f, -0.460881f, -0.462999f, -0.465107f, -0.467204f, -0.469291f, -0.471367f, -0.473433f, -0.475487f, -0.477532f, -0.479565f, -0.481588f, -0.4836f, -0.485601f, -0.487591f, -0.48957f, -0.491539f, -0.493496f, -0.495442f, -0.497378f, -0.499302f, -0.501215f, -0.503117f, -0.505007f, -0.506887f, -0.508755f, -0.510612f, -0.512457f, -0.514291f, -0.516114f, -0.517925f, -0.519725f, -0.521513f, -0.52329f, -0.525055f, -0.526809f, -0.528551f, -0.530281f, -0.532f, -0.533706f, -0.535401f, -0.537085f, -0.538756f, -0.540416f, -0.542064f, -0.5437f, -0.545324f, -0.546936f, -0.548536f, -0.550124f, -0.5517f, -0.553264f, -0.554815f, -0.556355f, -0.557883f, -0.559398f, -0.560902f, -0.562393f, -0.563872f, -0.565339f, -0.566793f, -0.568235f, -0.569665f, -0.571083f, -0.572488f, -0.573881f, -0.575261f, -0.576629f, -0.577985f, -0.579328f, -0.580658f, -0.581977f, -0.583282f, -0.584576f, -0.585856f, -0.587125f, -0.58838f, -0.589623f, -0.590854f, -0.592071f, -0.593277f, -0.594469f, -0.595649f, -0.596816f, -0.597971f, -0.599113f, -0.600242f, -0.601359f, -0.602462f, -0.603553f, -0.604632f, -0.605697f, -0.60675f, -0.60779f, -0.608817f, -0.609832f, -0.610834f, -0.611822f, -0.612798f, -0.613762f, -0.614712f, -0.61565f, -0.616575f, -0.617486f, -0.618386f, -0.619272f, -0.620145f, -0.621006f, -0.621853f, -0.622688f, -0.62351f, -0.624319f, -0.625115f, -0.625899f, -0.626669f, -0.627427f, -0.628171f, -0.628903f, -0.629622f, -0.630328f, -0.631021f, -0.631702f, -0.632369f, -0.633024f, -0.633665f, -0.634294f, -0.63491f, -0.635513f, -0.636104f, -0.636681f, -0.637246f, -0.637797f, -0.638336f, -0.638862f, -0.639376f, -0.639876f, -0.640364f, -0.640839f, -0.641301f, -0.64175f, -0.642187f, -0.642611f, -0.643022f, -0.64342f, -0.643806f, -0.644178f, -0.644539f, -0.644886f, -0.645221f, -0.645543f, -0.645852f, -0.646149f, -0.646433f, -0.646705f, -0.646964f, -0.64721f, -0.647444f, -0.647665f, -0.647873f, -0.648069f, -0.648253f, -0.648424f, -0.648583f, -0.648729f, -0.648862f, -0.648984f, -0.649092f, -0.649189f, -0.649273f, -0.649345f, -0.649404f, -0.649451f, -0.649486f, -0.649508f, -0.649518f, -0.649516f, -0.649502
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.001534f, -0.003068f, -0.004602f, -0.006136f, -0.00767f, -0.009203f, -0.010737f, -0.012271f, -0.013804f, -0.015337f, -0.016871f, -0.018404f, -0.019936f, -0.021469f, -0.023002f, -0.024534f, -0.026066f, -0.027598f, -0.029129f, -0.03066f, -0.032191f, -0.033722f, -0.035252f, -0.036782f, -0.038312f, -0.039841f, -0.04137f, -0.042899f, -0.044427f, -0.045954f, -0.047482f, -0.049009f, -0.050535f, -0.052061f, -0.053586f, -0.055111f, -0.056635f, -0.058159f, -0.059683f, -0.061205f, -0.062727f, -0.064249f, -0.06577f, -0.06729f, -0.06881f, -0.070329f, -0.071848f, -0.073365f, -0.074882f, -0.076399f, -0.077914f, -0.079429f, -0.080943f, -0.082457f, -0.083969f, -0.085481f, -0.086992f, -0.088502f, -0.090011f, -0.09152f, -0.093028f, -0.094534f, -0.09604f, -0.097545f, -0.099049f, -0.100552f, -0.102054f, -0.103556f, -0.105056f, -0.106555f, -0.108053f, -0.109551f, -0.111047f, -0.112542f, -0.114036f, -0.115529f, -0.117021f, -0.118512f, -0.120002f, -0.12149f, -0.122978f, -0.124464f, -0.125949f, -0.127433f, -0.128916f, -0.130397f, -0.131877f, -0.133356f, -0.134834f, -0.136311f, -0.137786f, -0.13926f, -0.140732f, -0.142204f, -0.143674f, -0.145142f, -0.14661f, -0.148075f, -0.14954f, -0.151003f, -0.152465f, -0.153925f, -0.155384f, -0.156841f, -0.158297f, -0.159751f, -0.161204f, -0.162655f, -0.164105f, -0.165553f, -0.167f, -0.168445f, -0.169888f, -0.17133f, -0.172771f, -0.174209f, -0.175646f, -0.177082f, -0.178515f, -0.179948f, -0.181378f, -0.182806f, -0.184233f, -0.185659f, -0.187082f, -0.188504f, -0.189924f, -0.191342f, -0.192758f, -0.194173f, -0.195585f, -0.196996f, -0.198405f, -0.199812f, -0.201217f, -0.202621f, -0.204022f, -0.205422f, -0.206819f, -0.208215f, -0.209608f, -0.211f, -0.21239f, -0.213778f, -0.215163f, -0.216547f, -0.217929f, -0.219308f, -0.220686f, -0.222061f, -0.223434f, -0.224806f, -0.226175f, -0.227542f, -0.228907f, -0.230269f, -0.23163f, -0.232988f, -0.234344f, -0.235698f, -0.23705f, -0.2384f, -0.239747f, -0.241092f, -0.242435f, -0.243775f, -0.245113f, -0.246449f, -0.247783f, -0.249114f, -0.250443f, -0.251769f, -0.253093f, -0.254415f, -0.255734f, -0.257051f, -0.258366f, -0.259678f, -0.260988f, -0.262295f, -0.2636f, -0.264902f, -0.266202f, -0.267499f, -0.268794f, -0.270086f, -0.271375f, -0.272662f, -0.273947f, -0.275229f, -0.276508f, -0.277785f, -0.279059f, -0.280331f, -0.2816f, -0.282866f, -0.284129f, -0.28539f, -0.286649f, -0.287904f, -0.289157f, -0.290407f, -0.291654f, -0.292899f, -0.294141f, -0.29538f, -0.296616f, -0.29785f, -0.29908f, -0.300308f, -0.301533f, -0.302756f, -0.303975f, -0.305191f, -0.306405f, -0.307616f, -0.308824f, -0.310029f, -0.311231f, -0.31243f, -0.313626f, -0.314819f, -0.316009f, -0.317197f, -0.318381f, -0.319562f, -0.320741f, -0.321916f, -0.323088f, -0.324257f, -0.325423f, -0.326586f, -0.327746f, -0.328903f, -0.330057f, -0.331208f, -0.332355f, -0.3335f, -0.334641f, -0.335779f, -0.336914f, -0.338046f, -0.339175f, -0.3403f, -0.341423f, -0.342542f, -0.343658f, -0.34477f, -0.34588f, -0.346986f, -0.348089f, -0.349188f, -0.350284f, -0.351377f, -0.352467f, -0.353553f, -0.354636f, -0.355716f, -0.356792f, -0.357865f, -0.358935f, -0.360001f, -0.361064f, -0.362124f, -0.36318f, -0.364232f, -0.365281f, -0.366327f, -0.367369f, -0.368408f, -0.369444f, -0.370476f, -0.371504f, -0.372529f, -0.37355f, -0.374568f, -0.375583f, -0.376593f, -0.377601f, -0.378604f, -0.379605f, -0.380601f, -0.381594f, -0.382584f, -0.383569f, -0.384552f, -0.38553f, -0.386505f, -0.387477f, -0.388444f, -0.389408f, -0.390369f, -0.391325f, -0.392278f, -0.393228f, -0.394173f, -0.395115f, -0.396053f, -0.396988f, -0.397918f, -0.398845f, -0.399769f, -0.400688f, -0.401604f, -0.402516f, -0.403424f, -0.404328f, -0.405229f, -0.406125f, -0.407018f, -0.407907f, -0.408792f, -0.409674f, -0.410551f, -0.411425f, -0.412295f, -0.413161f, -0.414023f, -0.414881f, -0.415735f, -0.416585f, -0.417431f, -0.418274f, -0.419112f, -0.419947f, -0.420777f, -0.421604f, -0.422427f, -0.423245f, -0.42406f, -0.424871f, -0.425678f, -0.42648f, -0.427279f, -0.428074f, -0.428864f, -0.429651f, -0.430433f, -0.431212f, -0.431986f, -0.432757f, -0.433523f, -0.434285f, -0.43504
\ No newline at end of file
+ },
+
+};
+#endif
+
+#ifdef USE_TRIANGLE_TABLE
+
+const float __leaf_table_triangle[11][TRI_TABLE_SIZE] =
+{
+
+ {
+ 0.0f, -0.001807f, -0.003614f, -0.005421f, -0.007229f, -0.009036f, -0.010843f, -0.01265f, -0.014458f, -0.016264f, -0.018072f, -0.019879f, -0.021686f, -0.023493f, -0.0253f, -0.027108f, -0.028915f, -0.030722f, -0.032529f, -0.034337f, -0.036143f, -0.037951f, -0.039758f, -0.041565f, -0.043372f, -0.04518f, -0.046987f, -0.048794f, -0.050601f, -0.052408f, -0.054216f, -0.056022f, -0.05783f, -0.059637f, -0.061444f, -0.063251f, -0.065059f, -0.066865f, -0.068673f, -0.07048f, -0.072287f, -0.074094f, -0.075901f, -0.077709f, -0.079516f, -0.081323f, -0.08313f, -0.084938f, -0.086744f, -0.088552f, -0.090359f, -0.092166f, -0.093973f, -0.09578f, -0.097588f, -0.099395f, -0.101202f, -0.103009f, -0.104817f, -0.106623f, -0.108431f, -0.110238f, -0.112045f, -0.113852f, -0.11566f, -0.117467f, -0.119274f, -0.121081f, -0.122888f, -0.124696f, -0.126502f, -0.12831f, -0.130117f, -0.131924f, -0.133731f, -0.135539f, -0.137345f, -0.139153f, -0.14096f, -0.142767f, -0.144574f, -0.146381f, -0.148189f, -0.149996f, -0.151803f, -0.15361f, -0.155418f, -0.157224f, -0.159032f, -0.160839f, -0.162646f, -0.164453f, -0.16626f, -0.168068f, -0.169875f, -0.171682f, -0.173489f, -0.175297f, -0.177103f, -0.178911f, -0.180718f, -0.182525f, -0.184332f, -0.18614f, -0.187946f, -0.189754f, -0.191561f, -0.193368f, -0.195175f, -0.196982f, -0.19879f, -0.200596f, -0.202404f, -0.204211f, -0.206019f, -0.207825f, -0.209633f, -0.21144f, -0.213247f, -0.215054f, -0.216861f, -0.218669f, -0.220476f, -0.222283f, -0.22409f, -0.225898f, -0.227704f, -0.229512f, -0.231319f, -0.233126f, -0.234933f, -0.23674f, -0.238548f, -0.240355f, -0.242162f, -0.243969f, -0.245777f, -0.247583f, -0.249391f, -0.251197f, -0.253005f, -0.254812f, -0.25662f, -0.258426f, -0.260234f, -0.262041f, -0.263848f, -0.265655f, -0.267462f, -0.26927f, -0.271076f, -0.272884f, -0.274691f, -0.276499f, -0.278305f, -0.280113f, -0.28192f, -0.283727f, -0.285534f, -0.287341f, -0.289149f, -0.290955f, -0.292763f, -0.29457f, -0.296378f, -0.298184f, -0.299992f, -0.301799f, -0.303606f, -0.305413f, -0.30722f, -0.309028f, -0.310835f, -0.312642f, -0.314449f, -0.316257f, -0.318063f, -0.319871f, -0.321677f, -0.323485f, -0.325292f, -0.3271f, -0.328906f, -0.330714f, -0.332521f, -0.334328f, -0.336135f, -0.337942f, -0.33975f, -0.341556f, -0.343364f, -0.345171f, -0.346979f, -0.348785f, -0.350593f, -0.3524f, -0.354207f, -0.356014f, -0.357821f, -0.359629f, -0.361435f, -0.363243f, -0.36505f, -0.366858f, -0.368664f, -0.370472f, -0.372278f, -0.374086f, -0.375893f, -0.3777f, -0.379507f, -0.381315f, -0.383122f, -0.384929f, -0.386737f, -0.388543f, -0.390351f, -0.392157f, -0.393965f, -0.395772f, -0.39758f, -0.399386f, -0.401194f, -0.403001f, -0.404808f, -0.406615f, -0.408422f, -0.41023f, -0.412036f, -0.413844f, -0.415651f, -0.417459f, -0.419265f, -0.421073f, -0.42288f, -0.424687f, -0.426494f, -0.428301f, -0.430109f, -0.431915f, -0.433723f, -0.43553f, -0.437338f, -0.439144f, -0.440952f, -0.442758f, -0.444566f, -0.446373f, -0.44818f, -0.449987f, -0.451795f, -0.453602f, -0.455409f, -0.457216f, -0.459023f, -0.460831f, -0.462637f, -0.464445f, -0.466252f, -0.46806f, -0.469866f, -0.471674f, -0.473481f, -0.475288f, -0.477095f, -0.478902f, -0.48071f, -0.482516f, -0.484324f, -0.486131f, -0.487939f, -0.489745f, -0.491553f, -0.493359f, -0.495167f, -0.496974f, -0.498781f, -0.500589f, -0.502395f, -0.504203f, -0.50601f, -0.507818f, -0.509624f, -0.511432f, -0.513238f, -0.515046f, -0.516853f, -0.51866f, -0.520467f, -0.522275f, -0.524082f, -0.525889f, -0.527696f, -0.529503f, -0.531311f, -0.533117f, -0.534925f, -0.536732f, -0.53854f, -0.540346f, -0.542154f, -0.543961f, -0.545768f, -0.547575f, -0.549382f, -0.55119f, -0.552996f, -0.554804f, -0.55661f, -0.558419f, -0.560225f, -0.562033f, -0.563839f, -0.565647f, -0.567454f, -0.569261f, -0.571069f, -0.572875f, -0.574683f, -0.57649f, -0.578298f, -0.580104f, -0.581912f, -0.583718f, -0.585526f, -0.587333f, -0.58914f, -0.590947f, -0.592755f, -0.594562f, -0.596369f, -0.598176f, -0.599983f, -0.601791f, -0.603597f, -0.605405f, -0.607211f, -0.60902f, -0.610826f, -0.612634f, -0.614441f, -0.616248f, -0.618055f, -0.619862f, -0.62167f,
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.001806f, -0.003615f, -0.005423f, -0.007228f, -0.009035f, -0.010844f, -0.012651f, -0.014456f, -0.016264f, -0.018073f, -0.019879f, -0.021685f, -0.023493f, -0.025302f, -0.027107f, -0.028914f, -0.030723f, -0.03253f, -0.034336f, -0.036143f, -0.037952f, -0.039758f, -0.041564f, -0.043372f, -0.045181f, -0.046987f, -0.048793f, -0.050601f, -0.052409f, -0.054215f, -0.056022f, -0.057831f, -0.059638f, -0.061443f, -0.063251f, -0.06506f, -0.066866f, -0.068672f, -0.07048f, -0.072288f, -0.074094f, -0.0759f, -0.077709f, -0.079517f, -0.081322f, -0.083129f, -0.084938f, -0.086745f, -0.088551f, -0.090359f, -0.092167f, -0.093973f, -0.095779f, -0.097588f, -0.099396f, -0.101201f, -0.103008f, -0.104817f, -0.106624f, -0.10843f, -0.110237f, -0.112046f, -0.113852f, -0.115658f, -0.117467f, -0.119275f, -0.121081f, -0.122887f, -0.124696f, -0.126503f, -0.128309f, -0.130116f, -0.131925f, -0.133732f, -0.135537f, -0.137345f, -0.139154f, -0.14096f, -0.142766f, -0.144575f, -0.146383f, -0.148188f, -0.149995f, -0.151804f, -0.153611f, -0.155416f, -0.157224f, -0.159033f, -0.160839f, -0.162645f, -0.164453f, -0.166262f, -0.168067f, -0.169874f, -0.171683f, -0.17349f, -0.175295f, -0.177103f, -0.178912f, -0.180718f, -0.182524f, -0.184332f, -0.186141f, -0.187946f, -0.189753f, -0.191561f, -0.193369f, -0.195174f, -0.196982f, -0.198791f, -0.200597f, -0.202403f, -0.204211f, -0.20602f, -0.207826f, -0.209631f, -0.21144f, -0.213248f, -0.215054f, -0.21686f, -0.218669f, -0.220477f, -0.222282f, -0.22409f, -0.225899f, -0.227705f, -0.22951f, -0.231319f, -0.233127f, -0.234933f, -0.236739f, -0.238548f, -0.240356f, -0.242161f, -0.243968f, -0.245777f, -0.247584f, -0.249389f, -0.251198f, -0.253006f, -0.254812f, -0.256618f, -0.258427f, -0.260235f, -0.26204f, -0.263847f, -0.265656f, -0.267463f, -0.269268f, -0.271076f, -0.272885f, -0.274691f, -0.276497f, -0.278306f, -0.280114f, -0.281919f, -0.283726f, -0.285535f, -0.287342f, -0.289148f, -0.290955f, -0.292764f, -0.294571f, -0.296376f, -0.298184f, -0.299993f, -0.301799f, -0.303605f, -0.305414f, -0.307222f, -0.309027f, -0.310834f, -0.312643f, -0.31445f, -0.316255f, -0.318063f, -0.319872f, -0.321678f, -0.323484f, -0.325292f, -0.327101f, -0.328906f, -0.330712f, -0.332522f, -0.334329f, -0.336134f, -0.337942f, -0.339751f, -0.341557f, -0.343362f, -0.345171f, -0.34698f, -0.348785f, -0.350591f, -0.3524f, -0.354208f, -0.356013f, -0.35782f, -0.35963f, -0.361437f, -0.363242f, -0.36505f, -0.366859f, -0.368665f, -0.37047f, -0.372279f, -0.374087f, -0.375893f, -0.377699f, -0.379508f, -0.381316f, -0.383121f, -0.384928f, -0.386738f, -0.388544f, -0.390349f, -0.392158f, -0.393966f, -0.395772f, -0.397578f, -0.399387f, -0.401195f, -0.403f, -0.404807f, -0.406616f, -0.408423f, -0.410228f, -0.412036f, -0.413845f, -0.415651f, -0.417457f, -0.419266f, -0.421074f, -0.422879f, -0.424686f, -0.426495f, -0.428302f, -0.430107f, -0.431915f, -0.433724f, -0.43553f, -0.437336f, -0.439144f, -0.440953f, -0.442758f, -0.444564f, -0.446374f, -0.448182f, -0.449986f, -0.451793f, -0.453603f, -0.45541f, -0.457215f, -0.459023f, -0.460832f, -0.462638f, -0.464443f, -0.466252f, -0.468061f, -0.469866f, -0.471672f, -0.473482f, -0.475289f, -0.477094f, -0.478902f, -0.480711f, -0.482517f, -0.484322f, -0.486131f, -0.48794f, -0.489745f, -0.491551f, -0.493361f, -0.495168f, -0.496973f, -0.49878f, -0.50059f, -0.502396f, -0.504201f, -0.50601f, -0.507819f, -0.509624f, -0.51143f, -0.513239f, -0.515048f, -0.516852f, -0.518659f, -0.520469f, -0.522276f, -0.52408f, -0.525888f, -0.527698f, -0.529504f, -0.531309f, -0.533118f, -0.534927f, -0.536731f, -0.538537f, -0.540347f, -0.542155f, -0.543959f, -0.545767f, -0.547577f, -0.549383f, -0.551187f, -0.552996f, -0.554806f, -0.556611f, -0.558416f, -0.560226f, -0.562034f, -0.563839f, -0.565645f, -0.567456f, -0.569262f, -0.571066f, -0.572875f, -0.574685f, -0.57649f, -0.578295f, -0.580105f, -0.581914f, -0.583718f, -0.585524f, -0.587334f, -0.589142f, -0.590946f, -0.592753f, -0.594564f, -0.59637f, -0.598174f, -0.599983f, -0.601793f, -0.603597f, -0.605403f, -0.607213f, -0.609021f, -0.610825f, -0.612632f, -0.614443f, -0.616249f, -0.618053f, -0.619861f,
\ No newline at end of file
+ },
+
+ {
+ 0.0f, 0.001803f, 0.003609f, 0.005419f, 0.00723f, 0.00904f, 0.010848f, 0.012652f, 0.014455f, 0.01626f, 0.018068f, 0.019878f, 0.021689f, 0.023498f, 0.025304f, 0.027107f, 0.028911f, 0.030717f, 0.032527f, 0.034338f, 0.036148f, 0.037955f, 0.039759f, 0.041562f, 0.043367f, 0.045176f, 0.046987f, 0.048798f, 0.050606f, 0.052411f, 0.054214f, 0.056018f, 0.057825f, 0.059635f, 0.061447f, 0.063256f, 0.065062f, 0.066866f, 0.068669f, 0.070475f, 0.072284f, 0.074095f, 0.075906f, 0.077713f, 0.079518f, 0.081321f, 0.083125f, 0.084933f, 0.086744f, 0.088555f, 0.090364f, 0.09217f, 0.093973f, 0.095777f, 0.097583f, 0.099392f, 0.101203f, 0.103014f, 0.104821f, 0.106625f, 0.108428f, 0.110233f, 0.112041f, 0.113852f, 0.115663f, 0.117472f, 0.119277f, 0.12108f, 0.122884f, 0.124691f, 0.1265f, 0.128312f, 0.130122f, 0.131928f, 0.133732f, 0.135535f, 0.137341f, 0.139149f, 0.14096f, 0.142771f, 0.144579f, 0.146384f, 0.148187f, 0.149991f, 0.151798f, 0.153609f, 0.15542f, 0.15723f, 0.159036f, 0.160839f, 0.162642f, 0.164448f, 0.166257f, 0.168069f, 0.169879f, 0.171687f, 0.173491f, 0.175294f, 0.177099f, 0.178906f, 0.180717f, 0.182528f, 0.184337f, 0.186143f, 0.187946f, 0.18975f, 0.191556f, 0.193366f, 0.195177f, 0.196987f, 0.198794f, 0.200598f, 0.202401f, 0.204206f, 0.206014f, 0.207825f, 0.209637f, 0.211445f, 0.21325f, 0.215053f, 0.216857f, 0.218664f, 0.220474f, 0.222285f, 0.224095f, 0.225902f, 0.227705f, 0.229508f, 0.231314f, 0.233123f, 0.234934f, 0.236745f, 0.238553f, 0.240357f, 0.24216f, 0.243964f, 0.245772f, 0.247582f, 0.249394f, 0.251203f, 0.253009f, 0.254812f, 0.256615f, 0.258421f, 0.260231f, 0.262042f, 0.263853f, 0.26566f, 0.267464f, 0.269267f, 0.271071f, 0.27288f, 0.274691f, 0.276502f, 0.278311f, 0.280116f, 0.281919f, 0.283722f, 0.285529f, 0.287339f, 0.289151f, 0.290961f, 0.292768f, 0.294571f, 0.296374f, 0.298179f, 0.299988f, 0.301799f, 0.30361f, 0.305419f, 0.307223f, 0.309026f, 0.31083f, 0.312637f, 0.314447f, 0.316259f, 0.318069f, 0.319875f, 0.321678f, 0.323481f, 0.325286f, 0.327096f, 0.328908f, 0.330719f, 0.332526f, 0.33433f, 0.336133f, 0.337937f, 0.339745f, 0.341556f, 0.343368f, 0.345177f, 0.346982f, 0.348785f, 0.350588f, 0.352394f, 0.354204f, 0.356016f, 0.357827f, 0.359634f, 0.361437f, 0.36324f, 0.365044f, 0.366853f, 0.368664f, 0.370476f, 0.372285f, 0.37409f, 0.375892f, 0.377695f, 0.379502f, 0.381312f, 0.383125f, 0.384935f, 0.386741f, 0.388544f, 0.390347f, 0.392151f, 0.393961f, 0.395773f, 0.397584f, 0.399393f, 0.401197f, 0.402999f, 0.404802f, 0.406609f, 0.408421f, 0.410233f, 0.412043f, 0.413849f, 0.415651f, 0.417453f, 0.419259f, 0.421069f, 0.422881f, 0.424693f, 0.4265f, 0.428304f, 0.430105f, 0.431909f, 0.433717f, 0.435529f, 0.437342f, 0.439151f, 0.440956f, 0.442758f, 0.44456f, 0.446367f, 0.448177f, 0.44999f, 0.451801f, 0.453608f, 0.455411f, 0.457212f, 0.459016f, 0.460825f, 0.462638f, 0.46445f, 0.466259f, 0.468063f, 0.469865f, 0.471667f, 0.473474f, 0.475286f, 0.477099f, 0.478909f, 0.480715f, 0.482517f, 0.484319f, 0.486124f, 0.487933f, 0.489746f, 0.491559f, 0.493367f, 0.49517f, 0.496971f, 0.498774f, 0.500582f, 0.502394f, 0.504207f, 0.506017f, 0.507823f, 0.509624f, 0.511426f, 0.513231f, 0.515042f, 0.516855f, 0.518667f, 0.520475f, 0.522277f, 0.524078f, 0.525881f, 0.52769f, 0.529503f, 0.531316f, 0.533126f, 0.53493f, 0.536731f, 0.538532f, 0.540339f, 0.54215f, 0.543964f, 0.545776f, 0.547582f, 0.549384f, 0.551184f, 0.552988f, 0.554798f, 0.556611f, 0.558425f, 0.560234f, 0.562037f, 0.563837f, 0.565639f, 0.567446f, 0.569259f, 0.571073f, 0.572884f, 0.57469f, 0.57649f, 0.578291f, 0.580095f, 0.581906f, 0.58372f, 0.585534f, 0.587342f, 0.589144f, 0.590943f, 0.592746f, 0.594554f, 0.596367f, 0.598182f, 0.599993f, 0.601797f, 0.603597f, 0.605397f, 0.607203f, 0.609014f, 0.610829f, 0.612643f, 0.614449f, 0.616251f, 0.61805f, 0.619852f, 0.621662f, 0.623476f, 0.625291f, 0.627101f, 0.628904f, 0.630703f, 0.632503f, 0.63431f, 0.636123f, 0.637939f, 0.639751f, 0.641557f, 0.643357f, 0.645156f, 0.646959f, 0.64877f, 0.650586f, 0.6524f, 0.654209f, 0.656011f, 0.657809f, 0.65961f, 0.661417f, 0.663232f, 0.665048f, 0.66686f, 0.668665f, 0.670463f, 0.672262f, 0.674066f, 0.675878f, 0.6776
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.001815f, -0.003629f, -0.00544f, -0.007248f, -0.009053f, -0.010854f, -0.012654f, -0.014453f, -0.016252f, -0.018054f, -0.019859f, -0.021668f, -0.023479f, -0.025294f, -0.027109f, -0.028924f, -0.030738f, -0.032548f, -0.034356f, -0.03616f, -0.037961f, -0.03976f, -0.041559f, -0.043359f, -0.045161f, -0.046967f, -0.048776f, -0.050588f, -0.052403f, -0.054218f, -0.056033f, -0.057846f, -0.059656f, -0.061463f, -0.063267f, -0.065067f, -0.066866f, -0.068665f, -0.070466f, -0.072268f, -0.074075f, -0.075884f, -0.077697f, -0.079512f, -0.081327f, -0.083142f, -0.084955f, -0.086764f, -0.088571f, -0.090373f, -0.092174f, -0.093973f, -0.095772f, -0.097572f, -0.099376f, -0.101182f, -0.102992f, -0.104805f, -0.106621f, -0.108436f, -0.110251f, -0.112063f, -0.113872f, -0.115678f, -0.11748f, -0.11928f, -0.121079f, -0.122878f, -0.124679f, -0.126483f, -0.12829f, -0.130101f, -0.131914f, -0.13373f, -0.135545f, -0.13736f, -0.139172f, -0.14098f, -0.142785f, -0.144587f, -0.146387f, -0.148185f, -0.149985f, -0.151786f, -0.15359f, -0.155398f, -0.157209f, -0.159023f, -0.160839f, -0.162654f, -0.164468f, -0.16628f, -0.168088f, -0.169892f, -0.171694f, -0.173493f, -0.175292f, -0.177091f, -0.178892f, -0.180697f, -0.182506f, -0.184317f, -0.186132f, -0.187948f, -0.189763f, -0.191577f, -0.193388f, -0.195196f, -0.197f, -0.1988f, -0.200599f, -0.202398f, -0.204197f, -0.205999f, -0.207805f, -0.209614f, -0.211426f, -0.213241f, -0.215057f, -0.216872f, -0.218686f, -0.220497f, -0.222304f, -0.224107f, -0.225907f, -0.227706f, -0.229504f, -0.231304f, -0.233106f, -0.234912f, -0.236722f, -0.238534f, -0.24035f, -0.242166f, -0.243981f, -0.245795f, -0.247605f, -0.249411f, -0.251214f, -0.253014f, -0.254812f, -0.25661f, -0.25841f, -0.260213f, -0.262019f, -0.26383f, -0.265643f, -0.267459f, -0.269275f, -0.271091f, -0.272904f, -0.274713f, -0.276519f, -0.278321f, -0.28012f, -0.281918f, -0.283716f, -0.285516f, -0.28732f, -0.289127f, -0.290938f, -0.292752f, -0.294568f, -0.296385f, -0.2982f, -0.300012f, -0.301821f, -0.303626f, -0.305428f, -0.307226f, -0.309024f, -0.310822f, -0.312623f, -0.314426f, -0.316234f, -0.318046f, -0.319861f, -0.321677f, -0.323494f, -0.325309f, -0.327121f, -0.32893f, -0.330734f, -0.332535f, -0.334333f, -0.33613f, -0.337928f, -0.339729f, -0.341533f, -0.343342f, -0.345154f, -0.346969f, -0.348786f, -0.350603f, -0.352418f, -0.35423f, -0.356038f, -0.357841f, -0.359641f, -0.361439f, -0.363236f, -0.365034f, -0.366835f, -0.36864f, -0.370449f, -0.372262f, -0.374078f, -0.375896f, -0.377713f, -0.379528f, -0.381339f, -0.383146f, -0.384949f, -0.386748f, -0.388545f, -0.390342f, -0.39214f, -0.393942f, -0.395747f, -0.397557f, -0.399371f, -0.401187f, -0.403005f, -0.404822f, -0.406637f, -0.408448f, -0.410254f, -0.412056f, -0.413854f, -0.415651f, -0.417448f, -0.419246f, -0.421048f, -0.422854f, -0.424665f, -0.426479f, -0.428297f, -0.430115f, -0.431932f, -0.433746f, -0.435557f, -0.437362f, -0.439163f, -0.440961f, -0.442757f, -0.444553f, -0.446352f, -0.448154f, -0.449961f, -0.451772f, -0.453588f, -0.455406f, -0.457225f, -0.459042f, -0.460856f, -0.462666f, -0.46447f, -0.46627f, -0.468067f, -0.469863f, -0.471659f, -0.473457f, -0.47526f, -0.477068f, -0.47888f, -0.480697f, -0.482516f, -0.484335f, -0.486152f, -0.487966f, -0.489774f, -0.491578f, -0.493377f, -0.495173f, -0.496968f, -0.498764f, -0.500563f, -0.502366f, -0.504174f, -0.505988f, -0.507806f, -0.509625f, -0.511445f, -0.513262f, -0.515075f, -0.516884f, -0.518686f, -0.520484f, -0.522279f, -0.524073f, -0.525869f, -0.527668f, -0.529472f, -0.531281f, -0.533096f, -0.534915f, -0.536735f, -0.538555f, -0.540373f, -0.542185f, -0.543993f, -0.545794f, -0.547591f, -0.549385f, -0.551178f, -0.552973f, -0.554773f, -0.556577f, -0.558388f, -0.560204f, -0.562024f, -0.563845f, -0.565666f, -0.567483f, -0.569296f, -0.571102f, -0.572902f, -0.574697f, -0.57649f, -0.578283f, -0.580078f, -0.581877f, -0.583683f, -0.585495f, -0.587312f, -0.589133f, -0.590956f, -0.592777f, -0.594594f, -0.596406f, -0.598211f, -0.60001f, -0.601804f, -0.603595f, -0.605387f, -0.607182f, -0.608982f, -0.610788f, -0.612602f, -0.614421f, -0.616243f, -0.618067f, -0.619889f,
\ No newline at end of file
+ },
+
+ {
+ 0.0f, -0.00179f, -0.003581f, -0.005374f, -0.007169f, -0.008966f, -0.010766f, -0.01257f, -0.014377f, -0.016187f, -0.018001f, -0.019818f, -0.021638f, -0.02346f, -0.025283f, -0.027107f, -0.028931f, -0.030754f, -0.032576f, -0.034396f, -0.036213f, -0.038028f, -0.039839f, -0.041646f, -0.04345f, -0.045251f, -0.047048f, -0.048843f, -0.050636f, -0.052427f, -0.054217f, -0.056007f, -0.057798f, -0.059591f, -0.061385f, -0.063182f, -0.064982f, -0.066785f, -0.068591f, -0.070402f, -0.072215f, -0.074032f, -0.075851f, -0.077673f, -0.079496f, -0.08132f, -0.083145f, -0.084968f, -0.08679f, -0.088611f, -0.090428f, -0.092243f, -0.094055f, -0.095862f, -0.097667f, -0.099468f, -0.101265f, -0.10306f, -0.104853f, -0.106644f, -0.108434f, -0.110224f, -0.112015f, -0.113807f, -0.115601f, -0.117397f, -0.119196f, -0.120999f, -0.122805f, -0.124615f, -0.126429f, -0.128245f, -0.130065f, -0.131886f, -0.13371f, -0.135534f, -0.137358f, -0.139182f, -0.141005f, -0.142826f, -0.144644f, -0.146459f, -0.148271f, -0.150079f, -0.151884f, -0.153685f, -0.155483f, -0.157278f, -0.159071f, -0.160862f, -0.162652f, -0.164441f, -0.166231f, -0.168023f, -0.169816f, -0.171612f, -0.173411f, -0.175213f, -0.177019f, -0.178828f, -0.180641f, -0.182458f, -0.184277f, -0.186099f, -0.187923f, -0.189747f, -0.191572f, -0.193397f, -0.19522f, -0.197041f, -0.19886f, -0.200676f, -0.202489f, -0.204297f, -0.206102f, -0.207904f, -0.209702f, -0.211497f, -0.213289f, -0.21508f, -0.216869f, -0.218658f, -0.220448f, -0.222238f, -0.224031f, -0.225826f, -0.227624f, -0.229426f, -0.231231f, -0.23304f, -0.234853f, -0.23667f, -0.238489f, -0.240311f, -0.242135f, -0.24396f, -0.245786f, -0.247611f, -0.249435f, -0.251258f, -0.253077f, -0.254894f, -0.256707f, -0.258516f, -0.260321f, -0.262123f, -0.263921f, -0.265716f, -0.267508f, -0.269298f, -0.271087f, -0.272875f, -0.274664f, -0.276453f, -0.278245f, -0.280039f, -0.281837f, -0.283638f, -0.285443f, -0.287251f, -0.289064f, -0.290881f, -0.2927f, -0.294523f, -0.296348f, -0.298173f, -0.3f, -0.301826f, -0.303651f, -0.305474f, -0.307295f, -0.309112f, -0.310926f, -0.312736f, -0.314542f, -0.316343f, -0.318141f, -0.319935f, -0.321727f, -0.323516f, -0.325304f, -0.327092f, -0.328879f, -0.330668f, -0.332459f, -0.334252f, -0.336048f, -0.337849f, -0.339653f, -0.341461f, -0.343274f, -0.345091f, -0.346911f, -0.348734f, -0.350559f, -0.352386f, -0.354214f, -0.356041f, -0.357867f, -0.359692f, -0.361514f, -0.363332f, -0.365147f, -0.366957f, -0.368763f, -0.370565f, -0.372362f, -0.374156f, -0.375947f, -0.377736f, -0.379523f, -0.381309f, -0.383095f, -0.384882f, -0.386671f, -0.388463f, -0.390259f, -0.392058f, -0.393862f, -0.39567f, -0.397482f, -0.399299f, -0.40112f, -0.402944f, -0.40477f, -0.406598f, -0.408428f, -0.410256f, -0.412084f, -0.41391f, -0.415733f, -0.417553f, -0.419369f, -0.42118f, -0.422986f, -0.424788f, -0.426585f, -0.428379f, -0.430169f, -0.431956f, -0.433741f, -0.435526f, -0.43731f, -0.439096f, -0.440883f, -0.442674f, -0.444468f, -0.446266f, -0.448069f, -0.449876f, -0.451689f, -0.453506f, -0.455327f, -0.457152f, -0.45898f, -0.46081f, -0.462641f, -0.464472f, -0.466302f, -0.46813f, -0.469955f, -0.471776f, -0.473593f, -0.475405f, -0.477212f, -0.479013f, -0.48081f, -0.482603f, -0.484392f, -0.486177f, -0.487961f, -0.489743f, -0.491525f, -0.493308f, -0.495094f, -0.496882f, -0.498674f, -0.500471f, -0.502273f, -0.50408f, -0.505893f, -0.50771f, -0.509533f, -0.511359f, -0.513189f, -0.515021f, -0.516854f, -0.518688f, -0.52052f, -0.522351f, -0.524178f, -0.526001f, -0.52782f, -0.529633f, -0.53144f, -0.533242f, -0.535038f, -0.53683f, -0.538617f, -0.5404f, -0.542181f, -0.54396f, -0.54574f, -0.54752f, -0.549302f, -0.551088f, -0.552878f, -0.554673f, -0.556474f, -0.55828f, -0.560093f, -0.561911f, -0.563735f, -0.565563f, -0.567396f, -0.569231f, -0.571068f, -0.572904f, -0.57474f, -0.576574f, -0.578404f, -0.58023f, -0.582051f, -0.583865f, -0.585674f, -0.587475f, -0.589271f, -0.59106f, -0.592845f, -0.594625f, -0.596403f, -0.598178f, -0.599953f, -0.60173f, -0.603508f, -0.60529f, -0.607077f, -0.60887f, -0.610669f, -0.612474f, -0.614287f, -0.616107f, -0.617932f, -0.619764f, -0.6216f, -0.6
\ No newline at end of file
+ },
+
+ {
+ -0.0f, 0.001841f, 0.003681f, 0.005521f, 0.00736f, 0.009197f, 0.011033f, 0.012866f, 0.014698f, 0.016526f, 0.018352f, 0.020174f, 0.021994f, 0.02381f, 0.025622f, 0.027432f, 0.029237f, 0.031039f, 0.032838f, 0.034633f, 0.036425f, 0.038214f, 0.04f, 0.041783f, 0.043564f, 0.045343f, 0.04712f, 0.048896f, 0.050671f, 0.052444f, 0.054218f, 0.055991f, 0.057764f, 0.059539f, 0.061314f, 0.063091f, 0.064869f, 0.06665f, 0.068433f, 0.070218f, 0.072006f, 0.073798f, 0.075592f, 0.07739f, 0.079191f, 0.080996f, 0.082805f, 0.084617f, 0.086432f, 0.088251f, 0.090074f, 0.091899f, 0.093727f, 0.095558f, 0.097392f, 0.099227f, 0.101065f, 0.102904f, 0.104744f, 0.106585f, 0.108426f, 0.110268f, 0.112109f, 0.11395f, 0.115789f, 0.117627f, 0.119464f, 0.121298f, 0.12313f, 0.12496f, 0.126787f, 0.12861f, 0.13043f, 0.132247f, 0.134061f, 0.135871f, 0.137677f, 0.139479f, 0.141278f, 0.143074f, 0.144866f, 0.146655f, 0.148441f, 0.150224f, 0.152005f, 0.153783f, 0.15556f, 0.157334f, 0.159108f, 0.160881f, 0.162653f, 0.164425f, 0.166197f, 0.16797f, 0.169744f, 0.171519f, 0.173296f, 0.175075f, 0.176857f, 0.178641f, 0.180428f, 0.182218f, 0.184011f, 0.185808f, 0.187609f, 0.189413f, 0.191221f, 0.193032f, 0.194848f, 0.196666f, 0.198489f, 0.200314f, 0.202143f, 0.203975f, 0.205809f, 0.207646f, 0.209484f, 0.211325f, 0.213166f, 0.215009f, 0.216852f, 0.218696f, 0.220539f, 0.222381f, 0.224223f, 0.226063f, 0.227902f, 0.229738f, 0.231572f, 0.233404f, 0.235232f, 0.237057f, 0.238879f, 0.240697f, 0.242511f, 0.244322f, 0.246129f, 0.247932f, 0.249731f, 0.251526f, 0.253318f, 0.255107f, 0.256892f, 0.258674f, 0.260453f, 0.26223f, 0.264004f, 0.265777f, 0.267548f, 0.269319f, 0.271088f, 0.272858f, 0.274628f, 0.276398f, 0.278169f, 0.279941f, 0.281716f, 0.283492f, 0.285271f, 0.287053f, 0.288838f, 0.290626f, 0.292417f, 0.294213f, 0.296012f, 0.297815f, 0.299622f, 0.301434f, 0.303249f, 0.305068f, 0.306891f, 0.308718f, 0.310548f, 0.312381f, 0.314217f, 0.316056f, 0.317898f, 0.319741f, 0.321585f, 0.323431f, 0.325278f, 0.327125f, 0.328971f, 0.330818f, 0.332663f, 0.334507f, 0.336349f, 0.338189f, 0.340026f, 0.34186f, 0.343691f, 0.345519f, 0.347343f, 0.349163f, 0.350979f, 0.35279f, 0.354598f, 0.356401f, 0.3582f, 0.359995f, 0.361786f, 0.363572f, 0.365356f, 0.367135f, 0.368912f, 0.370685f, 0.372457f, 0.374226f, 0.375993f, 0.377759f, 0.379525f, 0.381289f, 0.383054f, 0.38482f, 0.386586f, 0.388354f, 0.390124f, 0.391896f, 0.393671f, 0.395449f, 0.39723f, 0.399015f, 0.400804f, 0.402598f, 0.404395f, 0.406197f, 0.408003f, 0.409814f, 0.41163f, 0.41345f, 0.415275f, 0.417104f, 0.418936f, 0.420773f, 0.422613f, 0.424456f, 0.426301f, 0.428149f, 0.429999f, 0.431851f, 0.433703f, 0.435556f, 0.437409f, 0.439261f, 0.441112f, 0.442962f, 0.444809f, 0.446655f, 0.448497f, 0.450336f, 0.452172f, 0.454003f, 0.455831f, 0.457653f, 0.459471f, 0.461285f, 0.463093f, 0.464896f, 0.466695f, 0.468488f, 0.470277f, 0.472061f, 0.47384f, 0.475616f, 0.477387f, 0.479156f, 0.480921f, 0.482684f, 0.484444f, 0.486203f, 0.487961f, 0.489718f, 0.491475f, 0.493233f, 0.494991f, 0.496752f, 0.498514f, 0.500279f, 0.502048f, 0.503819f, 0.505595f, 0.507375f, 0.50916f, 0.510949f, 0.512744f, 0.514544f, 0.51635f, 0.518161f, 0.519978f, 0.5218f, 0.523627f, 0.52546f, 0.527298f, 0.52914f, 0.530986f, 0.532836f, 0.53469f, 0.536547f, 0.538406f, 0.540267f, 0.542129f, 0.543992f, 0.545855f, 0.547717f, 0.549579f, 0.551439f, 0.553296f, 0.55515f, 0.557002f, 0.558849f, 0.560692f, 0.562529f, 0.564362f, 0.566189f, 0.568011f, 0.569826f, 0.571635f, 0.573438f, 0.575235f, 0.577026f, 0.57881f, 0.580589f, 0.582362f, 0.58413f, 0.585892f, 0.587651f, 0.589405f, 0.591156f, 0.592904f, 0.59465f, 0.596395f, 0.598138f, 0.599882f, 0.601625f, 0.60337f, 0.605117f, 0.606867f, 0.608619f, 0.610376f, 0.612137f, 0.613903f, 0.615674f, 0.617452f, 0.619236f, 0.621026f, 0.622824f, 0.624628f, 0.62644f, 0.628259f, 0.630086f, 0.631919f, 0.633759f, 0.635606f, 0.637459f, 0.639318f, 0.641182f, 0.643051f, 0.644924f, 0.6468f, 0.648679f, 0.65056f, 0.652443f, 0.654325f, 0.656207f, 0.658088f, 0.659966f, 0.661842f, 0.663714f, 0.665581f, 0.667443f, 0.669299f, 0.671149f, 0.672991f, 0.674826f, 0.676653f, 0.678472
\ No newline at end of file
+ },
+
+ {
+ 0.0f, 0.001871f, 0.003742f, 0.005612f, 0.007482f, 0.00935f, 0.011218f, 0.013085f, 0.014951f, 0.016815f, 0.018677f, 0.020537f, 0.022396f, 0.024252f, 0.026106f, 0.027958f, 0.029806f, 0.031653f, 0.033496f, 0.035336f, 0.037173f, 0.039007f, 0.040838f, 0.042666f, 0.04449f, 0.046311f, 0.048128f, 0.049942f, 0.051752f, 0.053559f, 0.055362f, 0.057161f, 0.058957f, 0.06075f, 0.062539f, 0.064325f, 0.066108f, 0.067887f, 0.069663f, 0.071436f, 0.073206f, 0.074973f, 0.076738f, 0.078499f, 0.080259f, 0.082016f, 0.083771f, 0.085523f, 0.087274f, 0.089024f, 0.090772f, 0.092518f, 0.094263f, 0.096008f, 0.097751f, 0.099494f, 0.101237f, 0.10298f, 0.104722f, 0.106465f, 0.108208f, 0.109952f, 0.111696f, 0.113442f, 0.115189f, 0.116937f, 0.118687f, 0.120438f, 0.122192f, 0.123947f, 0.125705f, 0.127465f, 0.129227f, 0.130993f, 0.132761f, 0.134532f, 0.136306f, 0.138083f, 0.139864f, 0.141647f, 0.143435f, 0.145225f, 0.14702f, 0.148818f, 0.150619f, 0.152424f, 0.154233f, 0.156045f, 0.157861f, 0.159681f, 0.161504f, 0.163331f, 0.165161f, 0.166995f, 0.168832f, 0.170673f, 0.172516f, 0.174363f, 0.176212f, 0.178065f, 0.17992f, 0.181777f, 0.183637f, 0.1855f, 0.187364f, 0.18923f, 0.191098f, 0.192968f, 0.194839f, 0.196711f, 0.198584f, 0.200457f, 0.202332f, 0.204207f, 0.206082f, 0.207956f, 0.209831f, 0.211705f, 0.213579f, 0.215451f, 0.217323f, 0.219193f, 0.221062f, 0.222929f, 0.224794f, 0.226658f, 0.228519f, 0.230377f, 0.232233f, 0.234087f, 0.235937f, 0.237785f, 0.239629f, 0.241471f, 0.243309f, 0.245143f, 0.246974f, 0.248801f, 0.250624f, 0.252444f, 0.25426f, 0.256072f, 0.25788f, 0.259685f, 0.261485f, 0.263282f, 0.265074f, 0.266863f, 0.268648f, 0.27043f, 0.272207f, 0.273981f, 0.275752f, 0.277519f, 0.279283f, 0.281044f, 0.282801f, 0.284556f, 0.286308f, 0.288058f, 0.289805f, 0.29155f, 0.293293f, 0.295034f, 0.296774f, 0.298512f, 0.300248f, 0.301984f, 0.303719f, 0.305453f, 0.307187f, 0.308921f, 0.310655f, 0.312389f, 0.314123f, 0.315859f, 0.317595f, 0.319333f, 0.321072f, 0.322812f, 0.324555f, 0.326299f, 0.328046f, 0.329795f, 0.331547f, 0.333302f, 0.335059f, 0.33682f, 0.338584f, 0.340351f, 0.342122f, 0.343897f, 0.345676f, 0.347458f, 0.349245f, 0.351035f, 0.35283f, 0.354629f, 0.356432f, 0.35824f, 0.360052f, 0.361868f, 0.363688f, 0.365513f, 0.367342f, 0.369175f, 0.371012f, 0.372854f, 0.374699f, 0.376548f, 0.378401f, 0.380258f, 0.382118f, 0.383981f, 0.385848f, 0.387718f, 0.38959f, 0.391465f, 0.393343f, 0.395223f, 0.397105f, 0.398989f, 0.400874f, 0.402761f, 0.404649f, 0.406538f, 0.408427f, 0.410317f, 0.412207f, 0.414097f, 0.415987f, 0.417876f, 0.419764f, 0.42165f, 0.423536f, 0.42542f, 0.427302f, 0.429182f, 0.431059f, 0.432934f, 0.434806f, 0.436675f, 0.438541f, 0.440404f, 0.442263f, 0.444118f, 0.445969f, 0.447816f, 0.449658f, 0.451497f, 0.45333f, 0.45516f, 0.456984f, 0.458804f, 0.460618f, 0.462428f, 0.464233f, 0.466033f, 0.467827f, 0.469617f, 0.471402f, 0.473182f, 0.474957f, 0.476727f, 0.478493f, 0.480254f, 0.48201f, 0.483762f, 0.48551f, 0.487254f, 0.488993f, 0.490729f, 0.492462f, 0.494191f, 0.495917f, 0.49764f, 0.499361f, 0.501079f, 0.502795f, 0.504509f, 0.506221f, 0.507932f, 0.509643f, 0.511352f, 0.513061f, 0.51477f, 0.516479f, 0.518188f, 0.519899f, 0.52161f, 0.523323f, 0.525037f, 0.526754f, 0.528472f, 0.530194f, 0.531918f, 0.533645f, 0.535376f, 0.53711f, 0.538849f, 0.540591f, 0.542338f, 0.54409f, 0.545846f, 0.547608f, 0.549374f, 0.551146f, 0.552924f, 0.554707f, 0.556497f, 0.558292f, 0.560093f, 0.5619f, 0.563713f, 0.565532f, 0.567358f, 0.56919f, 0.571027f, 0.572871f, 0.574721f, 0.576577f, 0.578439f, 0.580307f, 0.58218f, 0.584059f, 0.585943f, 0.587832f, 0.589726f, 0.591624f, 0.593527f, 0.595435f, 0.597346f, 0.59926f, 0.601178f, 0.6031f, 0.605023f, 0.606949f, 0.608877f, 0.610807f, 0.612738f, 0.61467f, 0.616602f, 0.618535f, 0.620467f, 0.622399f, 0.624329f, 0.626258f, 0.628186f, 0.630111f, 0.632033f, 0.633952f, 0.635868f, 0.637781f, 0.639689f, 0.641592f, 0.643491f, 0.645384f, 0.647272f, 0.649154f, 0.65103f, 0.652899f, 0.654762f, 0.656617f, 0.658466f, 0.660306f, 0.66214f, 0.663965f, 0.665783f, 0.667592f, 0.669393f, 0.671186f, 0.672971f, 0.674747f, 0.676515f, 0.678274f, 0.680
\ No newline at end of file
+ },
+
+ {
+ -0.0f, 0.001665f, 0.003331f, 0.004997f, 0.006663f, 0.008329f, 0.009996f, 0.011663f, 0.013331f, 0.015f, 0.016669f, 0.018339f, 0.02001f, 0.021683f, 0.023356f, 0.02503f, 0.026706f, 0.028383f, 0.030062f, 0.031742f, 0.033423f, 0.035107f, 0.036792f, 0.038479f, 0.040167f, 0.041858f, 0.043551f, 0.045246f, 0.046943f, 0.048642f, 0.050344f, 0.052048f, 0.053754f, 0.055463f, 0.057175f, 0.058889f, 0.060606f, 0.062325f, 0.064048f, 0.065773f, 0.067501f, 0.069232f, 0.070966f, 0.072703f, 0.074444f, 0.076187f, 0.077934f, 0.079683f, 0.081437f, 0.083193f, 0.084953f, 0.086716f, 0.088482f, 0.090252f, 0.092025f, 0.093802f, 0.095582f, 0.097366f, 0.099153f, 0.100944f, 0.102739f, 0.104537f, 0.106338f, 0.108144f, 0.109952f, 0.111765f, 0.113581f, 0.1154f, 0.117223f, 0.11905f, 0.12088f, 0.122714f, 0.124552f, 0.126393f, 0.128237f, 0.130085f, 0.131937f, 0.133792f, 0.135651f, 0.137512f, 0.139378f, 0.141246f, 0.143118f, 0.144994f, 0.146872f, 0.148754f, 0.150639f, 0.152527f, 0.154418f, 0.156312f, 0.15821f, 0.16011f, 0.162013f, 0.163919f, 0.165827f, 0.167739f, 0.169653f, 0.171569f, 0.173489f, 0.17541f, 0.177334f, 0.179261f, 0.18119f, 0.183121f, 0.185054f, 0.186989f, 0.188926f, 0.190865f, 0.192806f, 0.194749f, 0.196693f, 0.198639f, 0.200586f, 0.202535f, 0.204485f, 0.206437f, 0.20839f, 0.210343f, 0.212298f, 0.214254f, 0.21621f, 0.218168f, 0.220126f, 0.222084f, 0.224043f, 0.226002f, 0.227962f, 0.229922f, 0.231882f, 0.233841f, 0.235801f, 0.237761f, 0.23972f, 0.241679f, 0.243638f, 0.245595f, 0.247553f, 0.249509f, 0.251465f, 0.253419f, 0.255373f, 0.257326f, 0.259277f, 0.261227f, 0.263176f, 0.265123f, 0.267068f, 0.269012f, 0.270954f, 0.272894f, 0.274833f, 0.276769f, 0.278703f, 0.280635f, 0.282565f, 0.284492f, 0.286417f, 0.288339f, 0.290259f, 0.292176f, 0.29409f, 0.296002f, 0.297911f, 0.299816f, 0.301719f, 0.303618f, 0.305514f, 0.307407f, 0.309297f, 0.311183f, 0.313066f, 0.314946f, 0.316822f, 0.318694f, 0.320563f, 0.322427f, 0.324289f, 0.326146f, 0.327999f, 0.329849f, 0.331695f, 0.333536f, 0.335374f, 0.337208f, 0.339037f, 0.340863f, 0.342684f, 0.344502f, 0.346315f, 0.348124f, 0.349928f, 0.351729f, 0.353525f, 0.355317f, 0.357105f, 0.358888f, 0.360667f, 0.362442f, 0.364213f, 0.365979f, 0.367741f, 0.369499f, 0.371253f, 0.373003f, 0.374748f, 0.376489f, 0.378226f, 0.379959f, 0.381688f, 0.383413f, 0.385133f, 0.38685f, 0.388563f, 0.390272f, 0.391977f, 0.393678f, 0.395375f, 0.397069f, 0.398759f, 0.400445f, 0.402128f, 0.403808f, 0.405484f, 0.407156f, 0.408825f, 0.410491f, 0.412154f, 0.413814f, 0.415471f, 0.417125f, 0.418776f, 0.420424f, 0.42207f, 0.423713f, 0.425353f, 0.426991f, 0.428627f, 0.43026f, 0.431892f, 0.433521f, 0.435149f, 0.436774f, 0.438398f, 0.440021f, 0.441641f, 0.443261f, 0.444879f, 0.446496f, 0.448112f, 0.449727f, 0.451341f, 0.452954f, 0.454567f, 0.456179f, 0.457791f, 0.459403f, 0.461014f, 0.462626f, 0.464238f, 0.46585f, 0.467462f, 0.469075f, 0.470688f, 0.472302f, 0.473917f, 0.475533f, 0.47715f, 0.478769f, 0.480389f, 0.48201f, 0.483633f, 0.485258f, 0.486884f, 0.488513f, 0.490143f, 0.491776f, 0.493412f, 0.49505f, 0.49669f, 0.498333f, 0.49998f, 0.501629f, 0.503281f, 0.504936f, 0.506595f, 0.508258f, 0.509924f, 0.511593f, 0.513267f, 0.514944f, 0.516626f, 0.518311f, 0.520001f, 0.521695f, 0.523394f, 0.525097f, 0.526805f, 0.528518f, 0.530236f, 0.531958f, 0.533686f, 0.535419f, 0.537157f, 0.5389f, 0.540649f, 0.542403f, 0.544162f, 0.545928f, 0.547699f, 0.549476f, 0.551258f, 0.553047f, 0.554841f, 0.556642f, 0.558448f, 0.560261f, 0.56208f, 0.563905f, 0.565736f, 0.567574f, 0.569417f, 0.571268f, 0.573124f, 0.574987f, 0.576857f, 0.578733f, 0.580615f, 0.582504f, 0.584399f, 0.586301f, 0.588209f, 0.590124f, 0.592045f, 0.593973f, 0.595907f, 0.597847f, 0.599794f, 0.601747f, 0.603706f, 0.605672f, 0.607644f, 0.609622f, 0.611606f, 0.613597f, 0.615593f, 0.617595f, 0.619603f, 0.621617f, 0.623637f, 0.625662f, 0.627693f, 0.62973f, 0.631772f, 0.633819f, 0.635871f, 0.637929f, 0.639991f, 0.642058f, 0.64413f, 0.646207f, 0.648288f, 0.650373f, 0.652463f, 0.654557f, 0.656654f, 0.658756f, 0.660861f, 0.66297f, 0.665082f, 0.667197f, 0.669315f, 0.671436f, 0.673559f, 0.675685f, 0.677814f
\ No newline at end of file
+ },
+
+ {
+ 0.0f, -0.001534f, -0.003068f, -0.004602f, -0.006136f, -0.007671f, -0.009205f, -0.01074f, -0.012276f, -0.013811f, -0.015347f, -0.016883f, -0.01842f, -0.019958f, -0.021496f, -0.023034f, -0.024573f, -0.026113f, -0.027654f, -0.029195f, -0.030737f, -0.03228f, -0.033824f, -0.035369f, -0.036915f, -0.038462f, -0.04001f, -0.041559f, -0.043109f, -0.044661f, -0.046213f, -0.047767f, -0.049322f, -0.050879f, -0.052437f, -0.053997f, -0.055557f, -0.05712f, -0.058684f, -0.06025f, -0.061817f, -0.063386f, -0.064956f, -0.066529f, -0.068103f, -0.069679f, -0.071257f, -0.072837f, -0.074418f, -0.076002f, -0.077588f, -0.079175f, -0.080765f, -0.082357f, -0.083952f, -0.085548f, -0.087147f, -0.088747f, -0.090351f, -0.091956f, -0.093564f, -0.095174f, -0.096787f, -0.098402f, -0.10002f, -0.101641f, -0.103263f, -0.104889f, -0.106517f, -0.108148f, -0.109781f, -0.111418f, -0.113057f, -0.114698f, -0.116343f, -0.117991f, -0.119641f, -0.121294f, -0.12295f, -0.12461f, -0.126272f, -0.127937f, -0.129605f, -0.131277f, -0.132951f, -0.134629f, -0.13631f, -0.137994f, -0.139681f, -0.141371f, -0.143065f, -0.144762f, -0.146462f, -0.148165f, -0.149872f, -0.151582f, -0.153296f, -0.155013f, -0.156733f, -0.158457f, -0.160185f, -0.161916f, -0.16365f, -0.165388f, -0.167129f, -0.168874f, -0.170623f, -0.172375f, -0.174131f, -0.17589f, -0.177653f, -0.17942f, -0.18119f, -0.182964f, -0.184742f, -0.186523f, -0.188308f, -0.190097f, -0.19189f, -0.193686f, -0.195486f, -0.19729f, -0.199097f, -0.200909f, -0.202724f, -0.204543f, -0.206366f, -0.208192f, -0.210023f, -0.211857f, -0.213695f, -0.215537f, -0.217382f, -0.219232f, -0.221085f, -0.222943f, -0.224804f, -0.226669f, -0.228537f, -0.23041f, -0.232286f, -0.234167f, -0.236051f, -0.237939f, -0.23983f, -0.241726f, -0.243625f, -0.245529f, -0.247436f, -0.249347f, -0.251261f, -0.25318f, -0.255102f, -0.257028f, -0.258958f, -0.260891f, -0.262829f, -0.26477f, -0.266715f, -0.268663f, -0.270615f, -0.272571f, -0.274531f, -0.276494f, -0.278461f, -0.280432f, -0.282406f, -0.284384f, -0.286365f, -0.28835f, -0.290339f, -0.292331f, -0.294327f, -0.296326f, -0.298328f, -0.300335f, -0.302344f, -0.304357f, -0.306373f, -0.308393f, -0.310416f, -0.312443f, -0.314472f, -0.316505f, -0.318542f, -0.320581f, -0.322624f, -0.32467f, -0.326719f, -0.328771f, -0.330826f, -0.332884f, -0.334946f, -0.33701f, -0.339077f, -0.341147f, -0.343221f, -0.345297f, -0.347375f, -0.349457f, -0.351541f, -0.353629f, -0.355719f, -0.357811f, -0.359906f, -0.362004f, -0.364104f, -0.366207f, -0.368312f, -0.37042f, -0.37253f, -0.374643f, -0.376758f, -0.378875f, -0.380994f, -0.383116f, -0.38524f, -0.387365f, -0.389493f, -0.391623f, -0.393755f, -0.395889f, -0.398025f, -0.400162f, -0.402302f, -0.404443f, -0.406585f, -0.40873f, -0.410876f, -0.413024f, -0.415173f, -0.417323f, -0.419475f, -0.421628f, -0.423783f, -0.425939f, -0.428096f, -0.430254f, -0.432414f, -0.434574f, -0.436735f, -0.438898f, -0.441061f, -0.443225f, -0.445389f, -0.447555f, -0.449721f, -0.451887f, -0.454055f, -0.456222f, -0.45839f, -0.460559f, -0.462728f, -0.464897f, -0.467066f, -0.469235f, -0.471405f, -0.473574f, -0.475743f, -0.477912f, -0.480081f, -0.48225f, -0.484419f, -0.486587f, -0.488754f, -0.490921f, -0.493088f, -0.495254f, -0.497419f, -0.499584f, -0.501747f, -0.50391f, -0.506072f, -0.508233f, -0.510392f, -0.512551f, -0.514708f, -0.516864f, -0.519019f, -0.521172f, -0.523323f, -0.525474f, -0.527622f, -0.529769f, -0.531914f, -0.534057f, -0.536198f, -0.538338f, -0.540475f, -0.54261f, -0.544743f, -0.546873f, -0.549002f, -0.551127f, -0.553251f, -0.555372f, -0.55749f, -0.559605f, -0.561718f, -0.563828f, -0.565935f, -0.568038f, -0.570139f, -0.572237f, -0.574331f, -0.576423f, -0.57851f, -0.580595f, -0.582676f, -0.584753f, -0.586827f, -0.588896f, -0.590963f, -0.593025f, -0.595083f, -0.597137f, -0.599187f, -0.601233f, -0.603275f, -0.605312f, -0.607345f, -0.609373f, -0.611397f, -0.613416f, -0.61543f, -0.61744f, -0.619445f, -0.621445f, -0.623439f, -0.625429f, -0.627413f, -0.629393f, -0.631367f, -0.633335f, -0.635298f, -0.637256f, -0.639207f, -0.641154f, -0.643094f, -0.645028f, -0.646957f, -0.64888f, -0.650796f, -0.652706f, -
\ No newline at end of file
+ },
+
+ {
+ 0.0f, 0.002301f, 0.004602f, 0.006903f, 0.009204f, 0.011504f, 0.013805f, 0.016106f, 0.018406f, 0.020706f, 0.023006f, 0.025306f, 0.027605f, 0.029905f, 0.032204f, 0.034502f, 0.036801f, 0.039099f, 0.041396f, 0.043694f, 0.045991f, 0.048287f, 0.050583f, 0.052878f, 0.055173f, 0.057468f, 0.059762f, 0.062055f, 0.064348f, 0.06664f, 0.068932f, 0.071223f, 0.073513f, 0.075802f, 0.078091f, 0.080379f, 0.082667f, 0.084953f, 0.087239f, 0.089524f, 0.091808f, 0.094091f, 0.096374f, 0.098655f, 0.100936f, 0.103215f, 0.105494f, 0.107771f, 0.110048f, 0.112323f, 0.114598f, 0.116871f, 0.119144f, 0.121415f, 0.123685f, 0.125954f, 0.128221f, 0.130488f, 0.132753f, 0.135017f, 0.13728f, 0.139541f, 0.141801f, 0.14406f, 0.146318f, 0.148574f, 0.150828f, 0.153082f, 0.155334f, 0.157584f, 0.159833f, 0.16208f, 0.164326f, 0.16657f, 0.168813f, 0.171054f, 0.173294f, 0.175531f, 0.177768f, 0.180002f, 0.182235f, 0.184466f, 0.186696f, 0.188923f, 0.191149f, 0.193373f, 0.195596f, 0.197816f, 0.200035f, 0.202251f, 0.204466f, 0.206679f, 0.20889f, 0.211099f, 0.213306f, 0.215511f, 0.217714f, 0.219914f, 0.222113f, 0.22431f, 0.226504f, 0.228697f, 0.230887f, 0.233075f, 0.235261f, 0.237445f, 0.239627f, 0.241806f, 0.243983f, 0.246157f, 0.24833f, 0.2505f, 0.252667f, 0.254833f, 0.256996f, 0.259156f, 0.261314f, 0.26347f, 0.265623f, 0.267773f, 0.269921f, 0.272067f, 0.27421f, 0.27635f, 0.278488f, 0.280623f, 0.282756f, 0.284885f, 0.287013f, 0.289137f, 0.291259f, 0.293378f, 0.295494f, 0.297607f, 0.299718f, 0.301826f, 0.303931f, 0.306033f, 0.308132f, 0.310229f, 0.312322f, 0.314413f, 0.3165f, 0.318585f, 0.320666f, 0.322745f, 0.32482f, 0.326893f, 0.328962f, 0.331028f, 0.333092f, 0.335152f, 0.337208f, 0.339262f, 0.341313f, 0.34336f, 0.345404f, 0.347445f, 0.349482f, 0.351517f, 0.353548f, 0.355575f, 0.357599f, 0.35962f, 0.361638f, 0.363652f, 0.365663f, 0.36767f, 0.369674f, 0.371674f, 0.373671f, 0.375664f, 0.377654f, 0.37964f, 0.381623f, 0.383602f, 0.385577f, 0.387549f, 0.389517f, 0.391481f, 0.393442f, 0.395399f, 0.397353f, 0.399302f, 0.401248f, 0.40319f, 0.405129f, 0.407063f, 0.408994f, 0.410921f, 0.412843f, 0.414763f, 0.416678f, 0.418589f, 0.420496f, 0.4224f, 0.424299f, 0.426194f, 0.428086f, 0.429973f, 0.431856f, 0.433735f, 0.43561f, 0.437481f, 0.439348f, 0.441211f, 0.44307f, 0.444924f, 0.446774f, 0.448621f, 0.450462f, 0.4523f, 0.454133f, 0.455962f, 0.457787f, 0.459608f, 0.461424f, 0.463235f, 0.465043f, 0.466846f, 0.468645f, 0.470439f, 0.472229f, 0.474014f, 0.475795f, 0.477571f, 0.479343f, 0.481111f, 0.482874f, 0.484632f, 0.486386f, 0.488135f, 0.48988f, 0.49162f, 0.493355f, 0.495086f, 0.496812f, 0.498533f, 0.50025f, 0.501962f, 0.503669f, 0.505372f, 0.50707f, 0.508763f, 0.510451f, 0.512134f, 0.513813f, 0.515487f, 0.517155f, 0.518819f, 0.520479f, 0.522133f, 0.523782f, 0.525427f, 0.527066f, 0.528701f, 0.53033f, 0.531955f, 0.533574f, 0.535189f, 0.536798f, 0.538403f, 0.540002f, 0.541596f, 0.543185f, 0.544769f, 0.546348f, 0.547922f, 0.549491f, 0.551054f, 0.552612f, 0.554165f, 0.555713f, 0.557256f, 0.558793f, 0.560325f, 0.561852f, 0.563374f, 0.56489f, 0.566401f, 0.567907f, 0.569407f, 0.570902f, 0.572391f, 0.573875f, 0.575354f, 0.576828f, 0.578295f, 0.579758f, 0.581215f, 0.582666f, 0.584112f, 0.585553f, 0.586988f, 0.588417f, 0.589841f, 0.59126f, 0.592673f, 0.59408f, 0.595482f, 0.596878f, 0.598268f, 0.599653f, 0.601032f, 0.602406f, 0.603773f, 0.605136f, 0.606492f, 0.607843f, 0.609188f, 0.610527f, 0.611861f, 0.613189f, 0.614511f, 0.615827f, 0.617137f, 0.618442f, 0.619741f, 0.621034f, 0.622321f, 0.623602f, 0.624878f, 0.626147f, 0.627411f, 0.628669f, 0.62992f, 0.631166f, 0.632406f, 0.63364f, 0.634868f, 0.63609f, 0.637306f, 0.638516f, 0.63972f, 0.640918f, 0.64211f, 0.643296f, 0.644476f, 0.64565f, 0.646818f, 0.64798f, 0.649135f, 0.650285f, 0.651428f, 0.652565f, 0.653696f, 0.654821f, 0.65594f, 0.657053f, 0.658159f, 0.659259f, 0.660353f, 0.661441f, 0.662523f, 0.663598f, 0.664667f, 0.66573f, 0.666786f, 0.667837f, 0.668881f, 0.669918f, 0.67095f, 0.671975f, 0.672993f, 0.674006f, 0.675012f, 0.676012f, 0.677005f, 0.677992f, 0.678973f, 0.679947f, 0.680915f, 0.681876f, 0.682831f, 0.68378f, 0.684722f, 0.
\ No newline at end of file
+ },
+
+ {
+ 0.0f, 0.002301f, 0.004602f, 0.006903f, 0.009204f, 0.011504f, 0.013805f, 0.016106f, 0.018406f, 0.020706f, 0.023006f, 0.025306f, 0.027605f, 0.029905f, 0.032204f, 0.034502f, 0.036801f, 0.039099f, 0.041396f, 0.043694f, 0.045991f, 0.048287f, 0.050583f, 0.052878f, 0.055173f, 0.057468f, 0.059762f, 0.062055f, 0.064348f, 0.06664f, 0.068932f, 0.071223f, 0.073513f, 0.075802f, 0.078091f, 0.080379f, 0.082667f, 0.084953f, 0.087239f, 0.089524f, 0.091808f, 0.094091f, 0.096374f, 0.098655f, 0.100936f, 0.103215f, 0.105494f, 0.107771f, 0.110048f, 0.112323f, 0.114598f, 0.116871f, 0.119144f, 0.121415f, 0.123685f, 0.125954f, 0.128221f, 0.130488f, 0.132753f, 0.135017f, 0.13728f, 0.139541f, 0.141802f, 0.14406f, 0.146318f, 0.148574f, 0.150828f, 0.153082f, 0.155334f, 0.157584f, 0.159833f, 0.16208f, 0.164326f, 0.16657f, 0.168813f, 0.171054f, 0.173294f, 0.175531f, 0.177768f, 0.180002f, 0.182235f, 0.184466f, 0.186696f, 0.188923f, 0.191149f, 0.193373f, 0.195596f, 0.197816f, 0.200035f, 0.202251f, 0.204466f, 0.206679f, 0.20889f, 0.211099f, 0.213306f, 0.215511f, 0.217714f, 0.219914f, 0.222113f, 0.22431f, 0.226504f, 0.228697f, 0.230887f, 0.233075f, 0.235261f, 0.237445f, 0.239627f, 0.241806f, 0.243983f, 0.246157f, 0.24833f, 0.2505f, 0.252667f, 0.254833f, 0.256996f, 0.259156f, 0.261314f, 0.26347f, 0.265623f, 0.267773f, 0.269921f, 0.272067f, 0.27421f, 0.27635f, 0.278488f, 0.280623f, 0.282756f, 0.284885f, 0.287013f, 0.289137f, 0.291259f, 0.293378f, 0.295494f, 0.297607f, 0.299718f, 0.301826f, 0.303931f, 0.306033f, 0.308132f, 0.310229f, 0.312322f, 0.314413f, 0.3165f, 0.318585f, 0.320666f, 0.322745f, 0.32482f, 0.326893f, 0.328962f, 0.331028f, 0.333092f, 0.335152f, 0.337208f, 0.339262f, 0.341313f, 0.34336f, 0.345404f, 0.347445f, 0.349482f, 0.351517f, 0.353548f, 0.355575f, 0.357599f, 0.35962f, 0.361638f, 0.363652f, 0.365663f, 0.36767f, 0.369674f, 0.371674f, 0.373671f, 0.375664f, 0.377654f, 0.37964f, 0.381623f, 0.383602f, 0.385577f, 0.387549f, 0.389517f, 0.391481f, 0.393442f, 0.395399f, 0.397353f, 0.399302f, 0.401248f, 0.40319f, 0.405129f, 0.407063f, 0.408994f, 0.410921f, 0.412843f, 0.414763f, 0.416678f, 0.418589f, 0.420496f, 0.4224f, 0.424299f, 0.426194f, 0.428086f, 0.429973f, 0.431856f, 0.433735f, 0.43561f, 0.437481f, 0.439348f, 0.441211f, 0.44307f, 0.444924f, 0.446774f, 0.448621f, 0.450462f, 0.4523f, 0.454133f, 0.455962f, 0.457787f, 0.459608f, 0.461424f, 0.463235f, 0.465043f, 0.466846f, 0.468645f, 0.470439f, 0.472229f, 0.474014f, 0.475795f, 0.477571f, 0.479343f, 0.481111f, 0.482874f, 0.484632f, 0.486386f, 0.488135f, 0.48988f, 0.49162f, 0.493355f, 0.495086f, 0.496812f, 0.498533f, 0.50025f, 0.501962f, 0.503669f, 0.505372f, 0.50707f, 0.508763f, 0.510451f, 0.512134f, 0.513813f, 0.515487f, 0.517155f, 0.518819f, 0.520479f, 0.522133f, 0.523782f, 0.525427f, 0.527066f, 0.528701f, 0.53033f, 0.531955f, 0.533574f, 0.535189f, 0.536798f, 0.538403f, 0.540002f, 0.541596f, 0.543185f, 0.544769f, 0.546348f, 0.547922f, 0.549491f, 0.551054f, 0.552612f, 0.554165f, 0.555713f, 0.557256f, 0.558793f, 0.560325f, 0.561852f, 0.563374f, 0.56489f, 0.566401f, 0.567907f, 0.569407f, 0.570902f, 0.572391f, 0.573875f, 0.575354f, 0.576828f, 0.578295f, 0.579758f, 0.581215f, 0.582666f, 0.584112f, 0.585553f, 0.586988f, 0.588417f, 0.589841f, 0.59126f, 0.592673f, 0.59408f, 0.595482f, 0.596878f, 0.598268f, 0.599653f, 0.601032f, 0.602406f, 0.603773f, 0.605136f, 0.606492f, 0.607843f, 0.609188f, 0.610527f, 0.611861f, 0.613189f, 0.614511f, 0.615827f, 0.617137f, 0.618442f, 0.619741f, 0.621034f, 0.622321f, 0.623602f, 0.624878f, 0.626147f, 0.627411f, 0.628669f, 0.62992f, 0.631166f, 0.632406f, 0.63364f, 0.634868f, 0.63609f, 0.637306f, 0.638516f, 0.63972f, 0.640918f, 0.64211f, 0.643296f, 0.644476f, 0.64565f, 0.646818f, 0.64798f, 0.649135f, 0.650285f, 0.651428f, 0.652565f, 0.653696f, 0.654821f, 0.65594f, 0.657053f, 0.658159f, 0.659259f, 0.660353f, 0.661441f, 0.662523f, 0.663598f, 0.664667f, 0.66573f, 0.666786f, 0.667837f, 0.668881f, 0.669918f, 0.67095f, 0.671975f, 0.672993f, 0.674006f, 0.675012f, 0.676012f, 0.677005f, 0.677992f, 0.678973f, 0.679947f, 0.680915f, 0.681876f, 0.682831f, 0.68378f, 0.684722f, 0.
\ No newline at end of file
+ }
+};
+#endif
+
+#ifdef USE_SQUARE_TABLE
+const float __leaf_table_squarewave[11][SQR_TABLE_SIZE] =
+{
+
+ {
+ -0.0f, -0.921651f, -0.717589f, -0.824911f, -0.76216f, -0.797736f, -0.780909f, -0.784084f, -0.790972f, -0.776819f, -0.79592f, -0.77385f, -0.797184f, -0.774044f, -0.795773f, -0.776431f, -0.792649f, -0.780053f, -0.788759f, -0.783995f, -0.784963f, -0.787473f, -0.781947f, -0.789917f, -0.780149f, -0.791032f, -0.77972f, -0.790805f, -0.780542f, -0.789474f, -0.782276f, -0.787455f, -0.784453f, -0.785245f, -0.786575f, -0.78332f, -0.788212f, -0.782045f, -0.789076f, -0.781616f, -0.789068f, -0.782039f, -0.788274f, -0.783144f, -0.786934f, -0.784635f, -0.785379f, -0.786165f, -0.783957f, -0.787405f, -0.78296f, -0.788115f, -0.782566f, -0.788183f, -0.782814f, -0.787643f, -0.783606f, -0.786653f, -0.784732f, -0.785457f, -0.785929f, -0.784326f, -0.786934f, -0.783499f, -0.787543f, -0.783136f, -0.787647f, -0.783289f, -0.787254f, -0.783893f, -0.786478f, -0.784793f, -0.785508f, -0.785776f, -0.784566f, -0.786626f, -0.783855f, -0.787163f, -0.783518f, -0.787286f, -0.783609f, -0.78699f, -0.784089f, -0.786358f, -0.784834f, -0.785544f, -0.785669f, -0.784735f, -0.786407f, -0.784108f, -0.786891f, -0.783791f, -0.787027f, -0.783841f, -0.786798f, -0.784232f, -0.78627f, -0.784864f, -0.785571f, -0.785589f, -0.784861f, -0.786244f, -0.784297f, -0.786688f, -0.783996f, -0.786831f, -0.784016f, -0.786653f, -0.78434f, -0.786204f, -0.784886f, -0.785593f, -0.785527f, -0.784959f, -0.786117f, -0.784444f, -0.78653f, -0.784156f, -0.786678f, -0.784153f, -0.786539f, -0.784425f, -0.786152f, -0.784903f, -0.78561f, -0.785477f, -0.785037f, -0.786016f, -0.784562f, -0.786403f, -0.784285f, -0.786555f, -0.784263f, -0.786447f, -0.784493f, -0.78611f, -0.784917f, -0.785624f, -0.785437f, -0.785101f, -0.785933f, -0.784658f, -0.786298f, -0.784391f, -0.786454f, -0.784354f, -0.786372f, -0.78455f, -0.786075f, -0.784929f, -0.785636f, -0.785403f, -0.785155f, -0.785864f, -0.784739f, -0.786211f, -0.78448f, -0.786369f, -0.78443f, -0.786308f, -0.784597f, -0.786046f, -0.784938f, -0.785646f, -0.785374f, -0.7852f, -0.785805f, -0.784808f, -0.786137f, -0.784555f, -0.786297f, -0.784495f, -0.786254f, -0.784637f, -0.786022f, -0.784946f, -0.785656f, -0.785348f, -0.78524f, -0.785754f, -0.784867f, -0.786073f, -0.78462f, -0.786235f, -0.784551f, -0.786208f, -0.784672f, -0.786001f, -0.784952f, -0.785664f, -0.785326f, -0.785274f, -0.78571f, -0.784919f, -0.786017f, -0.784677f, -0.78618f, -0.7846f, -0.786167f, -0.784702f, -0.785983f, -0.784957f, -0.785671f, -0.785307f, -0.785304f, -0.78567f, -0.784964f, -0.785967f, -0.784727f, -0.786133f, -0.784643f, -0.786131f, -0.784728f, -0.785967f, -0.784962f, -0.785678f, -0.785289f, -0.785331f, -0.785635f, -0.785005f, -0.785923f, -0.784771f, -0.78609f, -0.784681f, -0.7861f, -0.784752f, -0.785953f, -0.784966f, -0.785684f, -0.785273f, -0.785356f, -0.785604f, -0.785042f, -0.785884f, -0.784811f, -0.786052f, -0.784715f, -0.786072f, -0.784773f, -0.785941f, -0.784969f, -0.78569f, -0.785259f, -0.785378f, -0.785575f, -0.785075f, -0.785848f, -0.784847f, -0.786017f, -0.784746f, -0.786046f, -0.784791f, -0.78593f, -0.784972f, -0.785696f, -0.785245f, -0.785399f, -0.785549f, -0.785105f, -0.785816f, -0.78488f, -0.785986f, -0.784774f, -0.786023f, -0.784808f, -0.78592f, -0.784974f, -0.785701f, -0.785232f, -0.785418f, -0.785525f, -0.785133f, -0.785786f, -0.78491f, -0.785958f, -0.784799f, -0.786002f, -0.784823f, -0.785911f, -0.784976f, -0.785707f, -0.785221f, -0.785435f, -0.785503f, -0.785158f, -0.785759f, -0.784938f, -0.785931f, -0.784823f, -0.785983f, -0.784837f, -0.785903f, -0.784977f, -0.785712f, -0.78521f, -0.785452f, -0.785482f, -0.785182f, -0.785733f, -0.784963f, -0.785907f, -0.784844f, -0.785966f, -0.78485f, -0.785897f, -0.784978f, -0.785717f, -0.785199f, -0.785467f, -0.785463f, -0.785204f, -0.78571f, -0.784987f, -0.785885f, -0.784864f, -0.785949f, -0.784861f, -0.78589f, -0.784979f, -0.785721f, -0.785189f, -0.785482f, -0.785444f, -0.785225f, -0.785687f, -0.785009f, -0.785864f, -0.784882f, -0.785935f, -0.784872f, -0.785885f, -0.784979f, -0.785726f, -0.785179f, -0.785496f, -0.785427f, -0.785245f, -0.785667f, -0.78503f, -0.785844f, -0.7849f, -0.785921f, -0.784881f, -0.78588f, -0.7
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.722901f, -0.921434f, -0.767402f, -0.71801f, -0.813256f, -0.82431f, -0.756116f, -0.762906f, -0.813519f, -0.796888f, -0.759662f, -0.78181f, -0.808042f, -0.783184f, -0.766275f, -0.79182f, -0.800775f, -0.776072f, -0.773828f, -0.796522f, -0.793245f, -0.773428f, -0.781062f, -0.797401f, -0.786544f, -0.774043f, -0.787033f, -0.795556f, -0.781459f, -0.776852f, -0.79112f, -0.792048f, -0.778436f, -0.7808f, -0.793063f, -0.787911f, -0.777545f, -0.784896f, -0.792971f, -0.784062f, -0.778513f, -0.788322f, -0.791264f, -0.781199f, -0.780799f, -0.79052f, -0.788573f, -0.779725f, -0.783716f, -0.79125f, -0.785607f, -0.779719f, -0.786564f, -0.790588f, -0.783025f, -0.780963f, -0.788758f, -0.788872f, -0.781314f, -0.783023f, -0.789923f, -0.786606f, -0.780724f, -0.785356f, -0.789941f, -0.784342f, -0.781244f, -0.787427f, -0.788943f, -0.78257f, -0.782635f, -0.788817f, -0.787261f, -0.78162f, -0.784498f, -0.789296f, -0.785332f, -0.781614f, -0.786378f, -0.788852f, -0.783606f, -0.78246f, -0.787859f, -0.787671f, -0.782443f, -0.783892f, -0.788652f, -0.786082f, -0.78205f, -0.78554f, -0.78864f, -0.784474f, -0.782448f, -0.787019f, -0.787895f, -0.783205f, -0.783483f, -0.788012f, -0.786641f, -0.782533f, -0.784874f, -0.788336f, -0.7852f, -0.782563f, -0.786281f, -0.787967f, -0.783908f, -0.783237f, -0.787387f, -0.787039f, -0.783045f, -0.784357f, -0.787964f, -0.785799f, -0.782778f, -0.78564f, -0.787917f, -0.784548f, -0.783127f, -0.786787f, -0.787296f, -0.78357f, -0.783974f, -0.787544f, -0.78628f, -0.78307f, -0.785096f, -0.787765f, -0.785121f, -0.783133f, -0.786222f, -0.78743f, -0.784092f, -0.783712f, -0.787096f, -0.786648f, -0.783419f, -0.784647f, -0.787533f, -0.78562f, -0.783238f, -0.785705f, -0.787455f, -0.784595f, -0.783563f, -0.786638f, -0.786909f, -0.783807f, -0.784294f, -0.787239f, -0.786041f, -0.783424f, -0.785244f, -0.787386f, -0.785067f, -0.783514f, -0.786184f, -0.787069f, -0.784214f, -0.784035f, -0.7869f, -0.78638f, -0.783674f, -0.784847f, -0.787238f, -0.785495f, -0.783555f, -0.785751f, -0.787135f, -0.784626f, -0.783867f, -0.786535f, -0.786636f, -0.783972f, -0.784521f, -0.787024f, -0.785871f, -0.783674f, -0.78535f, -0.787117f, -0.785027f, -0.783787f, -0.786159f, -0.786809f, -0.784301f, -0.784269f, -0.78676f, -0.786185f, -0.783857f, -0.784994f, -0.787023f, -0.785403f, -0.783787f, -0.785787f, -0.7869f, -0.784647f, -0.784093f, -0.786461f, -0.786433f, -0.784092f, -0.78469f, -0.786865f, -0.785742f, -0.78386f, -0.785432f, -0.786915f, -0.784995f, -0.783992f, -0.786141f, -0.786612f, -0.784365f, -0.784446f, -0.786655f, -0.786036f, -0.783996f, -0.785108f, -0.78686f, -0.78533f, -0.783964f, -0.785816f, -0.78672f, -0.784661f, -0.784266f, -0.786406f, -0.786276f, -0.784184f, -0.784823f, -0.786744f, -0.785641f, -0.784003f, -0.785498f, -0.786759f, -0.784967f, -0.784152f, -0.78613f, -0.786457f, -0.784413f, -0.784587f, -0.786574f, -0.785917f, -0.784103f, -0.785199f, -0.786733f, -0.78527f, -0.784103f, -0.785841f, -0.786576f, -0.78467f, -0.784405f, -0.786364f, -0.786149f, -0.784255f, -0.784931f, -0.786648f, -0.785558f, -0.784117f, -0.785552f, -0.786634f, -0.784943f, -0.784281f, -0.786123f, -0.786332f, -0.78445f, -0.784702f, -0.786511f, -0.785819f, -0.784189f, -0.785275f, -0.786631f, -0.78522f, -0.784216f, -0.785864f, -0.78646f, -0.784676f, -0.784519f, -0.786332f, -0.786045f, -0.784312f, -0.78502f, -0.786571f, -0.785488f, -0.78421f, -0.785599f, -0.786531f, -0.784921f, -0.784387f, -0.78612f, -0.786228f, -0.784478f, -0.784797f, -0.786461f, -0.785737f, -0.784258f, -0.78534f, -0.786547f, -0.785176f, -0.784309f, -0.785886f, -0.786363f, -0.784677f, -0.784614f, -0.786307f, -0.785957f, -0.784357f, -0.785097f, -0.786508f, -0.785427f, -0.784286f, -0.785641f, -0.786446f, -0.7849f, -0.784476f, -0.786119f, -0.78614f, -0.784499f, -0.784879f, -0.78642f, -0.785665f, -0.784315f, -0.785397f, -0.786477f, -0.785136f, -0.784387f, -0.785906f, -0.786281f, -0.784676f, -0.784696f, -0.786289f, -0.78588f, -0.784393f, -0.785163f, -0.786457f, -0.785373f, -0.78435f, -0.785679f, -0.786374f, -0.78488f, -0.784552f, -0.786122f, -0.786064f, -0.784515f, -0.784951f, -0.786388f, -0.785602f, -0.7
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.406873f, -0.722902f, -0.893915f, -0.921437f, -0.855661f, -0.7674f, -0.714252f, -0.718006f, -0.762983f, -0.81326f, -0.837065f, -0.824316f, -0.788796f, -0.756108f, -0.746426f, -0.7629f, -0.791904f, -0.81353f, -0.814759f, -0.796892f, -0.773273f, -0.759646f, -0.76392f, -0.781809f, -0.800613f, -0.80806f, -0.800165f, -0.78318f, -0.768811f, -0.766255f, -0.776409f, -0.791829f, -0.802098f, -0.800795f, -0.789443f, -0.776057f, -0.769539f, -0.77381f, -0.785501f, -0.796544f, -0.799697f, -0.79326f, -0.781928f, -0.7734f, -0.773181f, -0.781053f, -0.791468f, -0.797434f, -0.795188f, -0.786546f, -0.777478f, -0.774007f, -0.77822f, -0.787041f, -0.794454f, -0.795593f, -0.789924f, -0.781442f, -0.775873f, -0.776817f, -0.783435f, -0.791147f, -0.794795f, -0.792079f, -0.785001f, -0.778399f, -0.77665f, -0.780776f, -0.787862f, -0.793108f, -0.793072f, -0.787925f, -0.781232f, -0.777494f, -0.779123f, -0.784894f, -0.790854f, -0.793025f, -0.790055f, -0.78405f, -0.77909f, -0.778459f, -0.782474f, -0.788348f, -0.792117f, -0.791315f, -0.786579f, -0.781159f, -0.77869f, -0.780756f, -0.785879f, -0.790572f, -0.791709f, -0.788604f, -0.78342f, -0.779663f, -0.779816f, -0.783698f, -0.788642f, -0.79132f, -0.789986f, -0.785608f, -0.781172f, -0.779646f, -0.781997f, -0.786581f, -0.790291f, -0.79066f, -0.787501f, -0.782989f, -0.780169f, -0.780898f, -0.784628f, -0.788811f, -0.790639f, -0.788927f, -0.784879f, -0.781245f, -0.780451f, -0.782984f, -0.787094f, -0.790004f, -0.789782f, -0.786626f, -0.782695f, -0.780635f, -0.781798f, -0.785357f, -0.788891f, -0.790032f, -0.78805f, -0.784319f, -0.781364f, -0.781156f, -0.783795f, -0.787473f, -0.789709f, -0.789023f, -0.785916f, -0.782503f, -0.781077f, -0.782569f, -0.785939f, -0.788903f, -0.789477f, -0.787307f, -0.783884f, -0.78152f, -0.781788f, -0.784475f, -0.787749f, -0.789405f, -0.788351f, -0.785329f, -0.782389f, -0.781503f, -0.783243f, -0.786409f, -0.78886f, -0.788958f, -0.786665f, -0.783548f, -0.781708f, -0.782366f, -0.785053f, -0.787943f, -0.789092f, -0.787748f, -0.78484f, -0.782339f, -0.781919f, -0.78384f, -0.786788f, -0.788772f, -0.788469f, -0.786106f, -0.783292f, -0.781921f, -0.7829f, -0.785547f, -0.788068f, -0.78877f, -0.7872f, -0.784434f, -0.782343f, -0.782325f, -0.784372f, -0.78709f, -0.788645f, -0.788004f, -0.785617f, -0.783105f, -0.782158f, -0.783397f, -0.78597f, -0.788136f, -0.788442f, -0.786699f, -0.784097f, -0.782392f, -0.782723f, -0.784849f, -0.787326f, -0.788486f, -0.78756f, -0.785188f, -0.782977f, -0.782413f, -0.783861f, -0.78633f, -0.788153f, -0.788109f, -0.786242f, -0.783822f, -0.782482f, -0.783113f, -0.785277f, -0.787505f, -0.788299f, -0.787136f, -0.784813f, -0.782901f, -0.782684f, -0.784294f, -0.786635f, -0.788127f, -0.787772f, -0.785823f, -0.783602f, -0.782606f, -0.783495f, -0.785658f, -0.787631f, -0.788088f, -0.786731f, -0.784487f, -0.782872f, -0.782967f, -0.784698f, -0.786888f, -0.788061f, -0.787434f, -0.785441f, -0.783433f, -0.78276f, -0.783867f, -0.785997f, -0.78771f, -0.787856f, -0.786347f, -0.784208f, -0.782884f, -0.783261f, -0.785073f, -0.787093f, -0.78796f, -0.787097f, -0.785096f, -0.78331f, -0.782941f, -0.784228f, -0.786295f, -0.787747f, -0.787608f, -0.785983f, -0.783973f, -0.782935f, -0.783561f, -0.78542f, -0.787254f, -0.787829f, -0.786763f, -0.784784f, -0.78323f, -0.783144f, -0.784576f, -0.786554f, -0.787743f, -0.787347f, -0.78564f, -0.78378f, -0.783019f, -0.783864f, -0.785738f, -0.787374f, -0.78767f, -0.786435f, -0.784508f, -0.78319f, -0.783366f, -0.78491f, -0.786775f, -0.787704f, -0.787075f, -0.78532f, -0.783626f, -0.783134f, -0.784169f, -0.786028f, -0.787453f, -0.787488f, -0.786115f, -0.784265f, -0.783187f, -0.783604f, -0.785227f, -0.786958f, -0.787631f, -0.786796f, -0.785023f, -0.783511f, -0.783276f, -0.784472f, -0.786287f, -0.787495f, -0.787285f, -0.785805f, -0.784056f, -0.783219f, -0.783854f, -0.785526f, -0.787106f, -0.787528f, -0.786514f, -0.784752f, -0.783432f, -0.783443f, -0.784771f, -0.786517f, -0.787502f, -0.787066f, -0.785507f, -0.783881f, -0.783284f, -0.784113f, -0.785806f, -0.787217f, -0.787398f, -0.78623f, -0.784506f, -0.783389f, -0.783631f, -0.785063f, -0.786716f,
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.209593f, -0.406873f, -0.580833f, -0.722905f, -0.827799f, -0.893924f, -0.92337f, -0.921447f, -0.895863f, -0.855665f, -0.810074f, -0.767391f, -0.734091f, -0.714233f, -0.709228f, -0.717988f, -0.737388f, -0.762981f, -0.78982f, -0.813279f, -0.829746f, -0.837096f, -0.834899f, -0.824338f, -0.807885f, -0.788792f, -0.770504f, -0.756076f, -0.747696f, -0.746385f, -0.751905f, -0.762878f, -0.777092f, -0.791919f, -0.804779f, -0.813577f, -0.817022f, -0.814807f, -0.807605f, -0.796908f, -0.78473f, -0.773242f, -0.764391f, -0.759586f, -0.759474f, -0.76387f, -0.771822f, -0.781805f, -0.792011f, -0.800663f, -0.806325f, -0.808132f, -0.805917f, -0.800211f, -0.792132f, -0.783166f, -0.774898f, -0.768741f, -0.765691f, -0.766175f, -0.769993f, -0.776374f, -0.784129f, -0.791866f, -0.798241f, -0.802187f, -0.803088f, -0.800876f, -0.796028f, -0.78946f, -0.782366f, -0.775994f, -0.771435f, -0.769436f, -0.770275f, -0.773735f, -0.779143f, -0.785509f, -0.791697f, -0.796633f, -0.799487f, -0.79981f, -0.797607f, -0.793321f, -0.787748f, -0.781891f, -0.776778f, -0.773287f, -0.77199f, -0.773066f, -0.776277f, -0.781015f, -0.786422f, -0.791537f, -0.795474f, -0.797567f, -0.797489f, -0.795296f, -0.791413f, -0.786553f, -0.781583f, -0.777375f, -0.774652f, -0.773861f, -0.775105f, -0.778129f, -0.782373f, -0.78707f, -0.791392f, -0.794588f, -0.796118f, -0.795744f, -0.793563f, -0.789988f, -0.785668f, -0.781372f, -0.777852f, -0.775712f, -0.775304f, -0.776673f, -0.779549f, -0.783406f, -0.787553f, -0.791258f, -0.793879f, -0.794973f, -0.794372f, -0.792205f, -0.788877f, -0.784986f, -0.781224f, -0.778248f, -0.776569f, -0.776463f, -0.777925f, -0.780679f, -0.784223f, -0.787925f, -0.791133f, -0.793292f, -0.794037f, -0.793255f, -0.791105f, -0.787981f, -0.784444f, -0.781119f, -0.778588f, -0.777284f, -0.777421f, -0.778957f, -0.781606f, -0.784887f, -0.788219f, -0.791015f, -0.792792f, -0.793249f, -0.792322f, -0.790189f, -0.78724f, -0.784001f, -0.781045f, -0.778887f, -0.777896f, -0.778235f, -0.779829f, -0.782383f, -0.785439f, -0.788455f, -0.790901f, -0.792354f, -0.79257f, -0.791523f, -0.789411f, -0.786615f, -0.783635f, -0.780995f, -0.779155f, -0.778432f, -0.77894f, -0.780579f, -0.783048f, -0.785906f, -0.788647f, -0.79079f, -0.791965f, -0.791974f, -0.790827f, -0.788736f, -0.786079f, -0.783326f, -0.780963f, -0.779402f, -0.778909f, -0.779562f, -0.781235f, -0.783625f, -0.786306f, -0.788803f, -0.79068f, -0.791611f, -0.791442f, -0.790211f, -0.788144f, -0.785612f, -0.783063f, -0.780947f, -0.779631f, -0.779341f, -0.780118f, -0.781818f, -0.784134f, -0.786653f, -0.788932f, -0.79057f, -0.791286f, -0.79096f, -0.789658f, -0.787617f, -0.785201f, -0.782839f, -0.780944f, -0.779848f, -0.779737f, -0.780622f, -0.782342f, -0.784586f, -0.786957f, -0.789037f, -0.79046f, -0.790983f, -0.790519f, -0.789157f, -0.787143f, -0.784837f, -0.782645f, -0.780953f, -0.780055f, -0.780104f, -0.781084f, -0.782817f, -0.784993f, -0.787225f, -0.789121f, -0.790349f, -0.790697f, -0.790111f, -0.788698f, -0.786713f, -0.78451f, -0.782477f, -0.780972f, -0.780255f, -0.780448f, -0.781511f, -0.783253f, -0.785361f, -0.787463f, -0.789189f, -0.790236f, -0.790426f, -0.789729f, -0.788274f, -0.78632f, -0.784216f, -0.782332f, -0.781f, -0.780449f, -0.780773f, -0.78191f, -0.783654f, -0.785697f, -0.787675f, -0.789241f, -0.790122f, -0.790166f, -0.78937f, -0.787879f, -0.785959f, -0.78395f, -0.782207f, -0.781036f, -0.780639f, -0.781082f, -0.782284f, -0.784028f, -0.786004f, -0.787864f, -0.789279f, -0.790004f, -0.789914f, -0.789029f, -0.787508f, -0.785624f, -0.783708f, -0.7821f, -0.78108f, -0.780826f, -0.781379f, -0.782637f, -0.784376f, -0.786287f, -0.788032f, -0.789306f, -0.789884f, -0.78967f, -0.788704f, -0.78716f, -0.785312f, -0.783487f, -0.782008f, -0.781132f, -0.781012f, -0.781665f, -0.782973f, -0.784704f, -0.786549f, -0.788184f, -0.789321f, -0.789762f, -0.789432f, -0.788392f, -0.786829f, -0.785021f, -0.783286f, -0.78193f, -0.781191f, -0.781196f, -0.781942f, -0.783294f, -0.785012f, -0.786792f, -0.788319f, -0.789325f, -0.789635f, -0.789198f, -0.788092f, -0.786515f, -0.784747f, -0.783101f, -0.781865f, -0.781256f, -0.78138f, -0.7822
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.104059f, -0.206615f, -0.306203f, -0.401437f, -0.491043f, -0.573889f, -0.649018f, -0.715666f, -0.773281f, -0.821529f, -0.860305f, -0.88972f, -0.9101f, -0.921965f, -0.926013f, -0.923088f, -0.914153f, -0.900263f, -0.882522f, -0.862055f, -0.839973f, -0.817339f, -0.79514f, -0.77426f, -0.755462f, -0.739365f, -0.726438f, -0.71699f, -0.711174f, -0.708987f, -0.710283f, -0.714788f, -0.722116f, -0.73179f, -0.743266f, -0.755961f, -0.769273f, -0.782606f, -0.795396f, -0.80713f, -0.817364f, -0.825737f, -0.83198f, -0.835928f, -0.837515f, -0.836777f, -0.833845f, -0.828934f, -0.822336f, -0.814397f, -0.805507f, -0.796083f, -0.786544f, -0.7773f, -0.768735f, -0.76119f, -0.754948f, -0.750233f, -0.747193f, -0.745902f, -0.746357f, -0.748484f, -0.752139f, -0.757117f, -0.763167f, -0.769997f, -0.777293f, -0.784728f, -0.791983f, -0.79875f, -0.804756f, -0.809763f, -0.813585f, -0.816091f, -0.817207f, -0.816922f, -0.815284f, -0.812398f, -0.808419f, -0.803543f, -0.798001f, -0.792048f, -0.785947f, -0.779964f, -0.774352f, -0.769343f, -0.765139f, -0.761901f, -0.759748f, -0.758747f, -0.758918f, -0.760227f, -0.762594f, -0.765897f, -0.769973f, -0.774633f, -0.779664f, -0.784844f, -0.789946f, -0.794754f, -0.799066f, -0.802707f, -0.805534f, -0.807439f, -0.808358f, -0.808271f, -0.807197f, -0.805203f, -0.802389f, -0.798891f, -0.794871f, -0.790511f, -0.786005f, -0.781548f, -0.777331f, -0.773532f, -0.770307f, -0.767785f, -0.766063f, -0.765204f, -0.765229f, -0.766125f, -0.767838f, -0.770283f, -0.773343f, -0.776878f, -0.780728f, -0.784722f, -0.788687f, -0.792452f, -0.795858f, -0.798765f, -0.801053f, -0.802633f, -0.803447f, -0.803471f, -0.802714f, -0.80122f, -0.799063f, -0.796345f, -0.79319f, -0.789741f, -0.786149f, -0.782571f, -0.779161f, -0.776064f, -0.77341f, -0.771306f, -0.769837f, -0.769058f, -0.768995f, -0.76964f, -0.770958f, -0.772884f, -0.775328f, -0.778177f, -0.781305f, -0.784574f, -0.78784f, -0.790963f, -0.79381f, -0.796262f, -0.798217f, -0.799596f, -0.800347f, -0.800444f, -0.79989f, -0.798716f, -0.796979f, -0.79476f, -0.792161f, -0.789297f, -0.786294f, -0.783284f, -0.780396f, -0.777754f, -0.775469f, -0.773636f, -0.772329f, -0.771601f, -0.771476f, -0.771953f, -0.773007f, -0.774586f, -0.776617f, -0.779008f, -0.781653f, -0.784434f, -0.787231f, -0.789923f, -0.792394f, -0.794541f, -0.796272f, -0.797518f, -0.798229f, -0.798379f, -0.797966f, -0.797014f, -0.795569f, -0.793696f, -0.791481f, -0.789022f, -0.786427f, -0.78381f, -0.781284f, -0.778957f, -0.776927f, -0.775281f, -0.774085f, -0.773389f, -0.773217f, -0.773573f, -0.774438f, -0.775769f, -0.777507f, -0.779571f, -0.781872f, -0.784307f, -0.786771f, -0.789156f, -0.791361f, -0.793291f, -0.794865f, -0.796018f, -0.796703f, -0.796895f, -0.796588f, -0.795799f, -0.794566f, -0.792946f, -0.791011f, -0.788847f, -0.786549f, -0.784217f, -0.781953f, -0.779854f, -0.778009f, -0.776496f, -0.775379f, -0.774702f, -0.774493f, -0.774756f, -0.775479f, -0.776625f, -0.778144f, -0.779966f, -0.782011f, -0.78419f, -0.786407f, -0.788566f, -0.790575f, -0.792347f, -0.793807f, -0.794894f, -0.795564f, -0.79579f, -0.795565f, -0.794902f, -0.793831f, -0.792402f, -0.790678f, -0.788737f, -0.786662f, -0.784545f, -0.782477f, -0.780547f, -0.778838f, -0.777423f, -0.776361f, -0.775696f, -0.775455f, -0.775645f, -0.776256f, -0.777259f, -0.778609f, -0.780246f, -0.782096f, -0.78408f, -0.78611f, -0.788098f, -0.789959f, -0.791613f, -0.792989f, -0.79403f, -0.794692f, -0.794948f, -0.79479f, -0.794226f, -0.793282f, -0.792003f, -0.790443f, -0.788674f, -0.786771f, -0.784817f, -0.782899f, -0.781098f, -0.779491f, -0.778148f, -0.777125f, -0.776465f, -0.776195f, -0.776324f, -0.776845f, -0.777735f, -0.778952f, -0.780442f, -0.78214f, -0.783972f, -0.785858f, -0.787715f, -0.789464f, -0.791029f, -0.792344f, -0.793352f, -0.794012f, -0.794296f, -0.794194f, -0.793711f, -0.792871f, -0.79171f, -0.790281f, -0.788646f, -0.786877f, -0.785052f, -0.783248f, -0.781545f, -0.780015f, -0.778724f, -0.777728f, -0.777067f, -0.776769f, -0.776847f, -0.777294f, -0.77809f, -0.7792f, -0.780575f, -0.782153f, -0.783865f, -0.785638f, -0.787395f, -0.789058f, -0.790557f, -0.791828
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.052124f, -0.104059f, -0.155618f, -0.206616f, -0.256871f, -0.306207f, -0.354454f, -0.401447f, -0.447032f, -0.491061f, -0.533399f, -0.573919f, -0.612508f, -0.649063f, -0.683496f, -0.715729f, -0.745701f, -0.773363f, -0.79868f, -0.821632f, -0.842212f, -0.860427f, -0.876299f, -0.889861f, -0.90116f, -0.910255f, -0.917219f, -0.922131f, -0.925086f, -0.926183f, -0.925533f, -0.923254f, -0.919469f, -0.914308f, -0.907906f, -0.900398f, -0.891925f, -0.882628f, -0.872648f, -0.862125f, -0.851196f, -0.839999f, -0.828663f, -0.817315f, -0.806077f, -0.795063f, -0.78438f, -0.774129f, -0.764401f, -0.755278f, -0.746834f, -0.739132f, -0.732226f, -0.726161f, -0.720971f, -0.71668f, -0.713302f, -0.710841f, -0.709294f, -0.708645f, -0.708874f, -0.709948f, -0.71183f, -0.714474f, -0.71783f, -0.721839f, -0.726439f, -0.731564f, -0.737143f, -0.743105f, -0.749374f, -0.755876f, -0.762533f, -0.769271f, -0.776015f, -0.782692f, -0.789234f, -0.795572f, -0.801645f, -0.807393f, -0.812764f, -0.817707f, -0.822181f, -0.826148f, -0.829577f, -0.832445f, -0.834732f, -0.836428f, -0.837527f, -0.83803f, -0.837944f, -0.837284f, -0.836068f, -0.834322f, -0.832074f, -0.829359f, -0.826215f, -0.822686f, -0.818817f, -0.814655f, -0.810251f, -0.805658f, -0.800928f, -0.796114f, -0.791271f, -0.78645f, -0.781703f, -0.777081f, -0.772629f, -0.768395f, -0.764418f, -0.760738f, -0.757389f, -0.754402f, -0.751803f, -0.749613f, -0.747849f, -0.746523f, -0.745642f, -0.74521f, -0.745223f, -0.745673f, -0.746551f, -0.747839f, -0.749517f, -0.751562f, -0.753945f, -0.756636f, -0.759602f, -0.762807f, -0.766211f, -0.769777f, -0.773463f, -0.777227f, -0.781028f, -0.784825f, -0.788577f, -0.792243f, -0.795785f, -0.799167f, -0.802355f, -0.805316f, -0.808021f, -0.810446f, -0.812567f, -0.814365f, -0.815825f, -0.816935f, -0.817688f, -0.818081f, -0.818113f, -0.817788f, -0.817115f, -0.816104f, -0.814771f, -0.813134f, -0.811215f, -0.809036f, -0.806626f, -0.804012f, -0.801225f, -0.798297f, -0.795262f, -0.792153f, -0.789004f, -0.785851f, -0.782727f, -0.779666f, -0.7767f, -0.77386f, -0.771176f, -0.768674f, -0.76638f, -0.764317f, -0.762505f, -0.760959f, -0.759696f, -0.758724f, -0.758052f, -0.757685f, -0.757622f, -0.757862f, -0.758399f, -0.759224f, -0.760326f, -0.761691f, -0.7633f, -0.765134f, -0.767171f, -0.769388f, -0.771758f, -0.774255f, -0.776851f, -0.779515f, -0.78222f, -0.784936f, -0.787632f, -0.79028f, -0.792852f, -0.795321f, -0.79766f, -0.799847f, -0.801857f, -0.803672f, -0.805272f, -0.806644f, -0.807773f, -0.808649f, -0.809266f, -0.809618f, -0.809704f, -0.809525f, -0.809085f, -0.808392f, -0.807454f, -0.806284f, -0.804895f, -0.803306f, -0.801534f, -0.799601f, -0.797528f, -0.795339f, -0.793058f, -0.790711f, -0.788323f, -0.785922f, -0.783532f, -0.78118f, -0.778891f, -0.776689f, -0.774597f, -0.772638f, -0.770831f, -0.769195f, -0.767747f, -0.7665f, -0.765468f, -0.764659f, -0.764081f, -0.763738f, -0.763633f, -0.763765f, -0.764132f, -0.764727f, -0.765543f, -0.766569f, -0.767793f, -0.769201f, -0.770775f, -0.772499f, -0.774352f, -0.776313f, -0.77836f, -0.780472f, -0.782623f, -0.784792f, -0.786954f, -0.789086f, -0.791166f, -0.79317f, -0.795077f, -0.796869f, -0.798525f, -0.800029f, -0.801365f, -0.80252f, -0.803482f, -0.804242f, -0.804794f, -0.805131f, -0.805252f, -0.805157f, -0.804847f, -0.804328f, -0.803606f, -0.802691f, -0.801592f, -0.800323f, -0.798899f, -0.797335f, -0.795651f, -0.793863f, -0.791993f, -0.790061f, -0.788088f, -0.786096f, -0.784107f, -0.782141f, -0.780221f, -0.778367f, -0.776598f, -0.774933f, -0.773391f, -0.771986f, -0.770734f, -0.769647f, -0.768736f, -0.768011f, -0.767478f, -0.767143f, -0.767007f, -0.767072f, -0.767335f, -0.767794f, -0.768442f, -0.769271f, -0.770272f, -0.771432f, -0.77274f, -0.774179f, -0.775733f, -0.777386f, -0.779119f, -0.780913f, -0.782748f, -0.784604f, -0.786461f, -0.788298f, -0.790097f, -0.791837f, -0.793499f, -0.795068f, -0.796524f, -0.797854f, -0.799044f, -0.80008f, -0.800953f, -0.801653f, -0.802174f, -0.802511f, -0.80266f, -0.802622f, -0.802396f, -0.801986f, -0.801398f, -0.800638f, -0.799715f, -0.79864f, -0.797425f, -0.796084f, -0.794631f, -0.793083f, -0.7
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.027607f, -0.055186f, -0.082709f, -0.110149f, -0.137477f, -0.164666f, -0.191689f, -0.218519f, -0.24513f, -0.271495f, -0.297589f, -0.323386f, -0.348861f, -0.373992f, -0.398753f, -0.423123f, -0.447078f, -0.470599f, -0.493663f, -0.516252f, -0.538346f, -0.559928f, -0.58098f, -0.601485f, -0.621429f, -0.640798f, -0.659577f, -0.677755f, -0.695321f, -0.712264f, -0.728575f, -0.744247f, -0.759272f, -0.773645f, -0.78736f, -0.800415f, -0.812806f, -0.824532f, -0.835594f, -0.845991f, -0.855725f, -0.8648f, -0.873219f, -0.880988f, -0.888111f, -0.894597f, -0.900454f, -0.905689f, -0.910313f, -0.914337f, -0.917773f, -0.920632f, -0.922928f, -0.924676f, -0.925889f, -0.926583f, -0.926775f, -0.92648f, -0.925718f, -0.924504f, -0.922858f, -0.920799f, -0.918345f, -0.915517f, -0.912334f, -0.908817f, -0.904985f, -0.90086f, -0.896462f, -0.891813f, -0.886933f, -0.881843f, -0.876565f, -0.871119f, -0.865525f, -0.859805f, -0.853979f, -0.848067f, -0.842089f, -0.836064f, -0.830012f, -0.823952f, -0.817902f, -0.81188f, -0.805903f, -0.799988f, -0.794152f, -0.788411f, -0.782779f, -0.777271f, -0.771901f, -0.766683f, -0.761628f, -0.756749f, -0.752057f, -0.747561f, -0.743272f, -0.739198f, -0.735348f, -0.731728f, -0.728345f, -0.725205f, -0.722312f, -0.719671f, -0.717285f, -0.715156f, -0.713287f, -0.711678f, -0.710329f, -0.709239f, -0.708409f, -0.707835f, -0.707515f, -0.707446f, -0.707624f, -0.708043f, -0.7087f, -0.709587f, -0.710699f, -0.712029f, -0.713568f, -0.71531f, -0.717246f, -0.719367f, -0.721663f, -0.724126f, -0.726745f, -0.72951f, -0.73241f, -0.735435f, -0.738574f, -0.741816f, -0.745149f, -0.748563f, -0.752045f, -0.755584f, -0.759169f, -0.762788f, -0.766431f, -0.770085f, -0.773739f, -0.777383f, -0.781005f, -0.784595f, -0.788142f, -0.791637f, -0.795069f, -0.798429f, -0.801708f, -0.804896f, -0.807986f, -0.810968f, -0.813836f, -0.816582f, -0.819199f, -0.821681f, -0.824022f, -0.826216f, -0.828259f, -0.830146f, -0.831874f, -0.833438f, -0.834836f, -0.836066f, -0.837125f, -0.838013f, -0.838729f, -0.839272f, -0.839643f, -0.839841f, -0.83987f, -0.839729f, -0.839422f, -0.838951f, -0.83832f, -0.837531f, -0.836589f, -0.835498f, -0.834263f, -0.832889f, -0.831382f, -0.829748f, -0.827992f, -0.826122f, -0.824144f, -0.822064f, -0.819891f, -0.817632f, -0.815294f, -0.812885f, -0.810414f, -0.807888f, -0.805315f, -0.802704f, -0.800062f, -0.797399f, -0.794722f, -0.792039f, -0.78936f, -0.786691f, -0.78404f, -0.781417f, -0.778828f, -0.776281f, -0.773783f, -0.771341f, -0.768963f, -0.766655f, -0.764423f, -0.762274f, -0.760213f, -0.758246f, -0.756378f, -0.754614f, -0.752959f, -0.751416f, -0.749989f, -0.748683f, -0.747499f, -0.74644f, -0.74551f, -0.744709f, -0.744039f, -0.743501f, -0.743095f, -0.742823f, -0.742683f, -0.742676f, -0.7428f, -0.743054f, -0.743436f, -0.743944f, -0.744576f, -0.745329f, -0.7462f, -0.747186f, -0.748281f, -0.749484f, -0.750788f, -0.75219f, -0.753685f, -0.755267f, -0.756931f, -0.758671f, -0.760482f, -0.762358f, -0.764293f, -0.76628f, -0.768313f, -0.770385f, -0.772491f, -0.774623f, -0.776775f, -0.77894f, -0.781112f, -0.783284f, -0.785448f, -0.7876f, -0.789732f, -0.791839f, -0.793913f, -0.795948f, -0.79794f, -0.799882f, -0.801768f, -0.803593f, -0.805351f, -0.807039f, -0.808651f, -0.810183f, -0.81163f, -0.812989f, -0.814255f, -0.815427f, -0.8165f, -0.817472f, -0.818341f, -0.819104f, -0.819759f, -0.820306f, -0.820743f, -0.82107f, -0.821286f, -0.82139f, -0.821384f, -0.821268f, -0.821042f, -0.820709f, -0.820269f, -0.819724f, -0.819077f, -0.81833f, -0.817485f, -0.816547f, -0.815517f, -0.814401f, -0.813201f, -0.811921f, -0.810566f, -0.80914f, -0.807648f, -0.806095f, -0.804486f, -0.802826f, -0.801119f, -0.799372f, -0.79759f, -0.795779f, -0.793944f, -0.792091f, -0.790225f, -0.788352f, -0.786479f, -0.78461f, -0.782751f, -0.780909f, -0.779087f, -0.777293f, -0.775531f, -0.773806f, -0.772123f, -0.770488f, -0.768906f, -0.76738f, -0.765915f, -0.764515f, -0.763185f, -0.761928f, -0.760747f, -0.759647f, -0.758629f, -0.757697f, -0.756854f, -0.756101f, -0.75544f, -0.754873f, -0.754402f, -0.754027f, -0.75375f, -0.75357f, -0.753489f, -0.753505f, -0.753619f, -0.753
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.012271f, -0.02454f, -0.036805f, -0.049062f, -0.061309f, -0.073544f, -0.085764f, -0.097968f, -0.110152f, -0.122315f, -0.134453f, -0.146565f, -0.158648f, -0.1707f, -0.182719f, -0.194701f, -0.206645f, -0.218549f, -0.23041f, -0.242225f, -0.253993f, -0.265712f, -0.277379f, -0.288991f, -0.300548f, -0.312046f, -0.323483f, -0.334857f, -0.346167f, -0.35741f, -0.368583f, -0.379686f, -0.390715f, -0.401669f, -0.412547f, -0.423345f, -0.434062f, -0.444697f, -0.455247f, -0.46571f, -0.476085f, -0.48637f, -0.496563f, -0.506663f, -0.516667f, -0.526575f, -0.536384f, -0.546093f, -0.555701f, -0.565205f, -0.574605f, -0.583899f, -0.593086f, -0.602164f, -0.611131f, -0.619988f, -0.628731f, -0.637361f, -0.645876f, -0.654275f, -0.662556f, -0.670719f, -0.678763f, -0.686687f, -0.694489f, -0.702169f, -0.709726f, -0.717159f, -0.724467f, -0.73165f, -0.738707f, -0.745637f, -0.75244f, -0.759115f, -0.765662f, -0.77208f, -0.778368f, -0.784527f, -0.790555f, -0.796453f, -0.80222f, -0.807856f, -0.813361f, -0.818735f, -0.823978f, -0.829089f, -0.834068f, -0.838916f, -0.843632f, -0.848217f, -0.852671f, -0.856994f, -0.861186f, -0.865248f, -0.869179f, -0.872981f, -0.876652f, -0.880195f, -0.88361f, -0.886896f, -0.890054f, -0.893086f, -0.895991f, -0.898771f, -0.901425f, -0.903955f, -0.906362f, -0.908646f, -0.910808f, -0.912849f, -0.91477f, -0.916572f, -0.918255f, -0.919822f, -0.921272f, -0.922607f, -0.923828f, -0.924937f, -0.925934f, -0.92682f, -0.927597f, -0.928266f, -0.928829f, -0.929286f, -0.929639f, -0.92989f, -0.930039f, -0.930088f, -0.930039f, -0.929893f, -0.929652f, -0.929317f, -0.928889f, -0.928371f, -0.927763f, -0.927068f, -0.926287f, -0.925421f, -0.924473f, -0.923444f, -0.922335f, -0.921149f, -0.919886f, -0.91855f, -0.917141f, -0.915661f, -0.914113f, -0.912497f, -0.910816f, -0.909072f, -0.907266f, -0.905399f, -0.903475f, -0.901495f, -0.89946f, -0.897372f, -0.895234f, -0.893047f, -0.890813f, -0.888534f, -0.886212f, -0.883848f, -0.881445f, -0.879004f, -0.876527f, -0.874017f, -0.871474f, -0.8689f, -0.866299f, -0.863671f, -0.861018f, -0.858342f, -0.855645f, -0.852929f, -0.850195f, -0.847446f, -0.844682f, -0.841907f, -0.839121f, -0.836327f, -0.833525f, -0.830719f, -0.827908f, -0.825097f, -0.822285f, -0.819474f, -0.816667f, -0.813865f, -0.811069f, -0.808281f, -0.805503f, -0.802735f, -0.799981f, -0.797241f, -0.794516f, -0.791808f, -0.789119f, -0.786451f, -0.783803f, -0.781178f, -0.778578f, -0.776003f, -0.773454f, -0.770934f, -0.768443f, -0.765983f, -0.763554f, -0.761158f, -0.758796f, -0.756469f, -0.754179f, -0.751926f, -0.749711f, -0.747535f, -0.7454f, -0.743306f, -0.741254f, -0.739245f, -0.73728f, -0.73536f, -0.733485f, -0.731656f, -0.729875f, -0.728141f, -0.726455f, -0.724819f, -0.723232f, -0.721695f, -0.720209f, -0.718774f, -0.717391f, -0.71606f, -0.714782f, -0.713556f, -0.712384f, -0.711266f, -0.710201f, -0.70919f, -0.708234f, -0.707333f, -0.706486f, -0.705694f, -0.704957f, -0.704276f, -0.703649f, -0.703077f, -0.702561f, -0.702099f, -0.701693f, -0.701341f, -0.701044f, -0.700802f, -0.700613f, -0.700479f, -0.700399f, -0.700372f, -0.700399f, -0.700478f, -0.70061f, -0.700795f, -0.70103f, -0.701318f, -0.701656f, -0.702044f, -0.702482f, -0.702969f, -0.703505f, -0.704089f, -0.70472f, -0.705398f, -0.706123f, -0.706893f, -0.707707f, -0.708566f, -0.709467f, -0.710412f, -0.711398f, -0.712425f, -0.713491f, -0.714598f, -0.715742f, -0.716924f, -0.718143f, -0.719397f, -0.720686f, -0.722009f, -0.723365f, -0.724752f, -0.726171f, -0.727619f, -0.729096f, -0.730602f, -0.732134f, -0.733692f, -0.735274f, -0.736881f, -0.73851f, -0.74016f, -0.741831f, -0.743522f, -0.745231f, -0.746957f, -0.748699f, -0.750457f, -0.752228f, -0.754012f, -0.755807f, -0.757614f, -0.75943f, -0.761254f, -0.763085f, -0.764923f, -0.766765f, -0.768611f, -0.770461f, -0.772312f, -0.774163f, -0.776014f, -0.777863f, -0.77971f, -0.781553f, -0.783391f, -0.785223f, -0.787048f, -0.788865f, -0.790673f, -0.792471f, -0.794257f, -0.796032f, -0.797793f, -0.79954f, -0.801273f, -0.802989f, -0.804688f, -0.806369f, -0.808031f, -0.809673f, -0.811294f, -0.812894f, -0.814472f, -0.816026f, -0.817555f, -0.81906f
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.006136f, -0.012271f, -0.018406f, -0.024541f, -0.030674f, -0.036805f, -0.042935f, -0.049063f, -0.055188f, -0.061311f, -0.067431f, -0.073548f, -0.079661f, -0.085771f, -0.091877f, -0.097978f, -0.104075f, -0.110166f, -0.116253f, -0.122334f, -0.128409f, -0.134479f, -0.140542f, -0.146598f, -0.152648f, -0.15869f, -0.164725f, -0.170753f, -0.176772f, -0.182783f, -0.188785f, -0.194779f, -0.200763f, -0.206738f, -0.212704f, -0.218659f, -0.224604f, -0.230539f, -0.236463f, -0.242376f, -0.248277f, -0.254167f, -0.260045f, -0.265911f, -0.271765f, -0.277606f, -0.283434f, -0.289249f, -0.29505f, -0.300838f, -0.306612f, -0.312371f, -0.318116f, -0.323846f, -0.329561f, -0.335261f, -0.340946f, -0.346614f, -0.352267f, -0.357903f, -0.363523f, -0.369126f, -0.374712f, -0.38028f, -0.385832f, -0.391365f, -0.39688f, -0.402377f, -0.407856f, -0.413316f, -0.418757f, -0.424178f, -0.429581f, -0.434963f, -0.440326f, -0.445669f, -0.450991f, -0.456293f, -0.461573f, -0.466833f, -0.472072f, -0.477289f, -0.482484f, -0.487658f, -0.492809f, -0.497938f, -0.503045f, -0.508128f, -0.513189f, -0.518227f, -0.523241f, -0.528232f, -0.533199f, -0.538142f, -0.54306f, -0.547955f, -0.552825f, -0.55767f, -0.56249f, -0.567285f, -0.572055f, -0.576799f, -0.581517f, -0.58621f, -0.590877f, -0.595517f, -0.600131f, -0.604719f, -0.609279f, -0.613813f, -0.61832f, -0.622799f, -0.627252f, -0.631676f, -0.636073f, -0.640442f, -0.644783f, -0.649096f, -0.65338f, -0.657636f, -0.661864f, -0.666063f, -0.670232f, -0.674373f, -0.678485f, -0.682567f, -0.68662f, -0.690643f, -0.694637f, -0.698601f, -0.702535f, -0.706438f, -0.710312f, -0.714155f, -0.717968f, -0.721751f, -0.725502f, -0.729224f, -0.732914f, -0.736573f, -0.740201f, -0.743798f, -0.747364f, -0.750899f, -0.754402f, -0.757874f, -0.761314f, -0.764722f, -0.768099f, -0.771443f, -0.774756f, -0.778037f, -0.781286f, -0.784503f, -0.787687f, -0.79084f, -0.79396f, -0.797047f, -0.800102f, -0.803125f, -0.806115f, -0.809073f, -0.811998f, -0.81489f, -0.817749f, -0.820576f, -0.82337f, -0.826131f, -0.828859f, -0.831555f, -0.834217f, -0.836847f, -0.839443f, -0.842007f, -0.844537f, -0.847035f, -0.849499f, -0.85193f, -0.854329f, -0.856694f, -0.859026f, -0.861325f, -0.863591f, -0.865824f, -0.868024f, -0.870191f, -0.872325f, -0.874425f, -0.876493f, -0.878528f, -0.88053f, -0.882499f, -0.884435f, -0.886338f, -0.888208f, -0.890045f, -0.89185f, -0.893621f, -0.895361f, -0.897067f, -0.898741f, -0.900382f, -0.90199f, -0.903567f, -0.90511f, -0.906622f, -0.908101f, -0.909547f, -0.910962f, -0.912344f, -0.913695f, -0.915013f, -0.9163f, -0.917554f, -0.918777f, -0.919968f, -0.921128f, -0.922256f, -0.923352f, -0.924418f, -0.925452f, -0.926454f, -0.927426f, -0.928367f, -0.929277f, -0.930156f, -0.931005f, -0.931822f, -0.93261f, -0.933367f, -0.934094f, -0.934791f, -0.935457f, -0.936094f, -0.936701f, -0.937279f, -0.937827f, -0.938345f, -0.938835f, -0.939295f, -0.939726f, -0.940128f, -0.940502f, -0.940847f, -0.941163f, -0.941451f, -0.941711f, -0.941943f, -0.942148f, -0.942324f, -0.942473f, -0.942594f, -0.942689f, -0.942756f, -0.942796f, -0.942809f, -0.942796f, -0.942756f, -0.94269f, -0.942598f, -0.94248f, -0.942336f, -0.942166f, -0.941971f, -0.941751f, -0.941506f, -0.941236f, -0.940941f, -0.940621f, -0.940278f, -0.93991f, -0.939518f, -0.939102f, -0.938662f, -0.9382f, -0.937714f, -0.937205f, -0.936673f, -0.936118f, -0.935541f, -0.934942f, -0.934321f, -0.933678f, -0.933013f, -0.932327f, -0.93162f, -0.930892f, -0.930143f, -0.929373f, -0.928583f, -0.927773f, -0.926943f, -0.926093f, -0.925223f, -0.924335f, -0.923427f, -0.9225f, -0.921555f, -0.920591f, -0.919609f, -0.918609f, -0.917592f, -0.916557f, -0.915504f, -0.914435f, -0.913348f, -0.912245f, -0.911126f, -0.90999f, -0.908839f, -0.907672f, -0.906489f, -0.905291f, -0.904078f, -0.902851f, -0.901609f, -0.900352f, -0.899082f, -0.897798f, -0.8965f, -0.895189f, -0.893864f, -0.892527f, -0.891177f, -0.889815f, -0.888441f, -0.887055f, -0.885657f, -0.884248f, -0.882828f, -0.881396f, -0.879954f, -0.878502f, -0.877039f, -0.875567f, -0.874085f, -0.872593f, -0.871092f, -0.869582f, -0.868063f, -0.866536f, -0.865001f, -0.863458f
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.003068f, -0.006136f, -0.009204f, -0.012272f, -0.015339f, -0.018407f, -0.021474f, -0.024541f, -0.027608f, -0.030675f, -0.033741f, -0.036807f, -0.039873f, -0.042938f, -0.046003f, -0.049068f, -0.052132f, -0.055195f, -0.058258f, -0.061321f, -0.064383f, -0.067444f, -0.070505f, -0.073565f, -0.076624f, -0.079682f, -0.08274f, -0.085797f, -0.088854f, -0.091909f, -0.094963f, -0.098017f, -0.10107f, -0.104122f, -0.107172f, -0.110222f, -0.113271f, -0.116319f, -0.119365f, -0.122411f, -0.125455f, -0.128498f, -0.13154f, -0.134581f, -0.13762f, -0.140658f, -0.143695f, -0.14673f, -0.149765f, -0.152797f, -0.155828f, -0.158858f, -0.161886f, -0.164913f, -0.167938f, -0.170962f, -0.173984f, -0.177004f, -0.180023f, -0.18304f, -0.186055f, -0.189069f, -0.19208f, -0.19509f, -0.198098f, -0.201105f, -0.204109f, -0.207111f, -0.210112f, -0.21311f, -0.216107f, -0.219101f, -0.222094f, -0.225084f, -0.228072f, -0.231058f, -0.234042f, -0.237024f, -0.240003f, -0.24298f, -0.245955f, -0.248928f, -0.251898f, -0.254866f, -0.257831f, -0.260794f, -0.263755f, -0.266713f, -0.269668f, -0.272621f, -0.275572f, -0.27852f, -0.281465f, -0.284408f, -0.287347f, -0.290285f, -0.293219f, -0.296151f, -0.29908f, -0.302006f, -0.304929f, -0.30785f, -0.310767f, -0.313682f, -0.316593f, -0.319502f, -0.322408f, -0.32531f, -0.32821f, -0.331106f, -0.334f, -0.33689f, -0.339777f, -0.342661f, -0.345541f, -0.348419f, -0.351293f, -0.354164f, -0.357031f, -0.359895f, -0.362756f, -0.365613f, -0.368467f, -0.371317f, -0.374164f, -0.377007f, -0.379847f, -0.382683f, -0.385516f, -0.388345f, -0.39117f, -0.393992f, -0.39681f, -0.399624f, -0.402435f, -0.405241f, -0.408044f, -0.410843f, -0.413638f, -0.41643f, -0.419217f, -0.422f, -0.42478f, -0.427555f, -0.430326f, -0.433094f, -0.435857f, -0.438616f, -0.441371f, -0.444122f, -0.446869f, -0.449611f, -0.45235f, -0.455084f, -0.457813f, -0.460539f, -0.46326f, -0.465976f, -0.468689f, -0.471397f, -0.4741f, -0.476799f, -0.479494f, -0.482184f, -0.484869f, -0.48755f, -0.490226f, -0.492898f, -0.495565f, -0.498228f, -0.500885f, -0.503538f, -0.506187f, -0.50883f, -0.511469f, -0.514103f, -0.516732f, -0.519356f, -0.521975f, -0.52459f, -0.527199f, -0.529804f, -0.532403f, -0.534998f, -0.537587f, -0.540171f, -0.542751f, -0.545325f, -0.547894f, -0.550458f, -0.553017f, -0.55557f, -0.558119f, -0.560662f, -0.563199f, -0.565732f, -0.568259f, -0.570781f, -0.573297f, -0.575808f, -0.578314f, -0.580814f, -0.583309f, -0.585798f, -0.588282f, -0.59076f, -0.593232f, -0.595699f, -0.598161f, -0.600616f, -0.603067f, -0.605511f, -0.60795f, -0.610383f, -0.61281f, -0.615232f, -0.617647f, -0.620057f, -0.622461f, -0.624859f, -0.627252f, -0.629638f, -0.632019f, -0.634393f, -0.636762f, -0.639124f, -0.641481f, -0.643832f, -0.646176f, -0.648514f, -0.650847f, -0.653173f, -0.655493f, -0.657807f, -0.660114f, -0.662416f, -0.664711f, -0.667f, -0.669283f, -0.671559f, -0.673829f, -0.676093f, -0.67835f, -0.680601f, -0.682846f, -0.685084f, -0.687315f, -0.689541f, -0.691759f, -0.693971f, -0.696177f, -0.698376f, -0.700569f, -0.702755f, -0.704934f, -0.707107f, -0.709273f, -0.711432f, -0.713585f, -0.715731f, -0.71787f, -0.720003f, -0.722128f, -0.724247f, -0.726359f, -0.728464f, -0.730563f, -0.732654f, -0.734739f, -0.736817f, -0.738887f, -0.740951f, -0.743008f, -0.745058f, -0.747101f, -0.749136f, -0.751165f, -0.753187f, -0.755201f, -0.757209f, -0.759209f, -0.761202f, -0.763188f, -0.765167f, -0.767139f, -0.769103f, -0.771061f, -0.77301f, -0.774953f, -0.776888f, -0.778817f, -0.780737f, -0.782651f, -0.784557f, -0.786455f, -0.788346f, -0.79023f, -0.792107f, -0.793975f, -0.795837f, -0.797691f, -0.799537f, -0.801376f, -0.803208f, -0.805031f, -0.806848f, -0.808656f, -0.810457f, -0.812251f, -0.814036f, -0.815814f, -0.817585f, -0.819348f, -0.821103f, -0.82285f, -0.824589f, -0.826321f, -0.828045f, -0.829761f, -0.83147f, -0.83317f, -0.834863f, -0.836548f, -0.838225f, -0.839894f, -0.841555f, -0.843208f, -0.844854f, -0.846491f, -0.84812f, -0.849742f, -0.851355f, -0.852961f, -0.854558f, -0.856147f, -0.857729f, -0.859302f, -0.860867f, -0.862424f, -0.863973f, -0.865514f, -0.867046f, -0.868571f, -0.870087f,
\ No newline at end of file
+ },
+
+ {
+ -0.0f, -0.003068f, -0.006136f, -0.009204f, -0.012272f, -0.015339f, -0.018407f, -0.021474f, -0.024541f, -0.027608f, -0.030675f, -0.033741f, -0.036807f, -0.039873f, -0.042938f, -0.046003f, -0.049068f, -0.052132f, -0.055195f, -0.058258f, -0.061321f, -0.064383f, -0.067444f, -0.070505f, -0.073565f, -0.076624f, -0.079682f, -0.08274f, -0.085797f, -0.088854f, -0.091909f, -0.094963f, -0.098017f, -0.10107f, -0.104122f, -0.107172f, -0.110222f, -0.113271f, -0.116319f, -0.119365f, -0.122411f, -0.125455f, -0.128498f, -0.13154f, -0.134581f, -0.13762f, -0.140658f, -0.143695f, -0.14673f, -0.149765f, -0.152797f, -0.155828f, -0.158858f, -0.161886f, -0.164913f, -0.167938f, -0.170962f, -0.173984f, -0.177004f, -0.180023f, -0.18304f, -0.186055f, -0.189069f, -0.19208f, -0.19509f, -0.198098f, -0.201105f, -0.204109f, -0.207111f, -0.210112f, -0.21311f, -0.216107f, -0.219101f, -0.222094f, -0.225084f, -0.228072f, -0.231058f, -0.234042f, -0.237024f, -0.240003f, -0.24298f, -0.245955f, -0.248928f, -0.251898f, -0.254866f, -0.257831f, -0.260794f, -0.263755f, -0.266713f, -0.269668f, -0.272621f, -0.275572f, -0.27852f, -0.281465f, -0.284408f, -0.287347f, -0.290285f, -0.293219f, -0.296151f, -0.29908f, -0.302006f, -0.304929f, -0.30785f, -0.310767f, -0.313682f, -0.316593f, -0.319502f, -0.322408f, -0.32531f, -0.32821f, -0.331106f, -0.334f, -0.33689f, -0.339777f, -0.342661f, -0.345541f, -0.348419f, -0.351293f, -0.354164f, -0.357031f, -0.359895f, -0.362756f, -0.365613f, -0.368467f, -0.371317f, -0.374164f, -0.377007f, -0.379847f, -0.382683f, -0.385516f, -0.388345f, -0.39117f, -0.393992f, -0.39681f, -0.399624f, -0.402435f, -0.405241f, -0.408044f, -0.410843f, -0.413638f, -0.41643f, -0.419217f, -0.422f, -0.42478f, -0.427555f, -0.430326f, -0.433094f, -0.435857f, -0.438616f, -0.441371f, -0.444122f, -0.446869f, -0.449611f, -0.45235f, -0.455084f, -0.457813f, -0.460539f, -0.46326f, -0.465976f, -0.468689f, -0.471397f, -0.4741f, -0.476799f, -0.479494f, -0.482184f, -0.484869f, -0.48755f, -0.490226f, -0.492898f, -0.495565f, -0.498228f, -0.500885f, -0.503538f, -0.506187f, -0.50883f, -0.511469f, -0.514103f, -0.516732f, -0.519356f, -0.521975f, -0.52459f, -0.527199f, -0.529804f, -0.532403f, -0.534998f, -0.537587f, -0.540171f, -0.542751f, -0.545325f, -0.547894f, -0.550458f, -0.553017f, -0.55557f, -0.558119f, -0.560662f, -0.563199f, -0.565732f, -0.568259f, -0.570781f, -0.573297f, -0.575808f, -0.578314f, -0.580814f, -0.583309f, -0.585798f, -0.588282f, -0.59076f, -0.593232f, -0.595699f, -0.598161f, -0.600616f, -0.603067f, -0.605511f, -0.60795f, -0.610383f, -0.61281f, -0.615232f, -0.617647f, -0.620057f, -0.622461f, -0.624859f, -0.627252f, -0.629638f, -0.632019f, -0.634393f, -0.636762f, -0.639124f, -0.641481f, -0.643832f, -0.646176f, -0.648514f, -0.650847f, -0.653173f, -0.655493f, -0.657807f, -0.660114f, -0.662416f, -0.664711f, -0.667f, -0.669283f, -0.671559f, -0.673829f, -0.676093f, -0.67835f, -0.680601f, -0.682846f, -0.685084f, -0.687315f, -0.689541f, -0.691759f, -0.693971f, -0.696177f, -0.698376f, -0.700569f, -0.702755f, -0.704934f, -0.707107f, -0.709273f, -0.711432f, -0.713585f, -0.715731f, -0.71787f, -0.720003f, -0.722128f, -0.724247f, -0.726359f, -0.728464f, -0.730563f, -0.732654f, -0.734739f, -0.736817f, -0.738887f, -0.740951f, -0.743008f, -0.745058f, -0.747101f, -0.749136f, -0.751165f, -0.753187f, -0.755201f, -0.757209f, -0.759209f, -0.761202f, -0.763188f, -0.765167f, -0.767139f, -0.769103f, -0.771061f, -0.77301f, -0.774953f, -0.776888f, -0.778817f, -0.780737f, -0.782651f, -0.784557f, -0.786455f, -0.788346f, -0.79023f, -0.792107f, -0.793975f, -0.795837f, -0.797691f, -0.799537f, -0.801376f, -0.803208f, -0.805031f, -0.806848f, -0.808656f, -0.810457f, -0.812251f, -0.814036f, -0.815814f, -0.817585f, -0.819348f, -0.821103f, -0.82285f, -0.824589f, -0.826321f, -0.828045f, -0.829761f, -0.83147f, -0.83317f, -0.834863f, -0.836548f, -0.838225f, -0.839894f, -0.841555f, -0.843208f, -0.844854f, -0.846491f, -0.84812f, -0.849742f, -0.851355f, -0.852961f, -0.854558f, -0.856147f, -0.857729f, -0.859302f, -0.860867f, -0.862424f, -0.863973f, -0.865514f, -0.867046f, -0.868571f, -0.870087f,
\ No newline at end of file
+ },
+
+};
+#endif
+
+
+
+
+#if DECAY_TABLES_USED
+const float __leaf_table_exp_decay[EXP_DECAY_TABLE_SIZE] = {
+ 1.0f, 0.999969f, 0.999939f, 0.999908f, 0.999878f, 0.999847f, 0.999817f, 0.999786f, 0.999756f, 0.999725f, 0.999695f, 0.999664f, 0.999634f, 0.999603f, 0.999573f, 0.999542f, 0.999512f, 0.999481f, 0.999451f, 0.99942f,
+0.99939f, 0.999359f, 0.999329f, 0.999298f, 0.999268f, 0.999237f, 0.999207f, 0.999176f, 0.999146f, 0.999115f, 0.999085f, 0.999054f, 0.999024f, 0.998993f, 0.998963f, 0.998932f, 0.998902f, 0.998871f, 0.998841f, 0.99881f,
+0.99878f, 0.998749f, 0.998719f, 0.998688f, 0.998658f, 0.998627f, 0.998597f, 0.998566f, 0.998536f, 0.998505f, 0.998475f, 0.998444f, 0.998414f, 0.998383f, 0.998353f, 0.998322f, 0.998292f, 0.998261f, 0.998231f, 0.9982f,
+0.99817f, 0.998139f, 0.998109f, 0.998078f, 0.998048f, 0.998017f, 0.997987f, 0.997956f, 0.997926f, 0.997895f, 0.997865f, 0.997834f, 0.997804f, 0.997773f, 0.997743f, 0.997712f, 0.997682f, 0.997652f, 0.997621f, 0.997591f,
+0.99756f, 0.99753f, 0.997499f, 0.997469f, 0.997438f, 0.997408f, 0.997377f, 0.997347f, 0.997316f, 0.997286f, 0.997255f, 0.997225f, 0.997194f, 0.997164f, 0.997133f, 0.997103f, 0.997072f, 0.997042f, 0.997012f, 0.996981f,
+0.996951f, 0.99692f, 0.99689f, 0.996859f, 0.996829f, 0.996798f, 0.996768f, 0.996737f, 0.996707f, 0.996676f, 0.996646f, 0.996615f, 0.996585f, 0.996554f, 0.996524f, 0.996494f, 0.996463f, 0.996433f, 0.996402f, 0.996372f,
+0.996341f, 0.996311f, 0.99628f, 0.99625f, 0.996219f, 0.996189f, 0.996158f, 0.996128f, 0.996098f, 0.996067f, 0.996037f, 0.996006f, 0.995976f, 0.995945f, 0.995915f, 0.995884f, 0.995854f, 0.995823f, 0.995793f, 0.995763f,
+0.995732f, 0.995702f, 0.995671f, 0.995641f, 0.99561f, 0.99558f, 0.995549f, 0.995519f, 0.995488f, 0.995458f, 0.995428f, 0.995397f, 0.995367f, 0.995336f, 0.995306f, 0.995275f, 0.995245f, 0.995214f, 0.995184f, 0.995154f,
+0.995123f, 0.995093f, 0.995062f, 0.995032f, 0.995001f, 0.994971f, 0.99494f, 0.99491f, 0.99488f, 0.994849f, 0.994819f, 0.994788f, 0.994758f, 0.994727f, 0.994697f, 0.994667f, 0.994636f, 0.994606f, 0.994575f, 0.994545f,
+0.994514f, 0.994484f, 0.994454f, 0.994423f, 0.994393f, 0.994362f, 0.994332f, 0.994301f, 0.994271f, 0.99424f, 0.99421f, 0.99418f, 0.994149f, 0.994119f, 0.994088f, 0.994058f, 0.994027f, 0.993997f, 0.993967f, 0.993936f,
+0.993906f, 0.993875f, 0.993845f, 0.993815f, 0.993784f, 0.993754f, 0.993723f, 0.993693f, 0.993662f, 0.993632f, 0.993602f, 0.993571f, 0.993541f, 0.99351f, 0.99348f, 0.993449f, 0.993419f, 0.993389f, 0.993358f, 0.993328f,
+0.993297f, 0.993267f, 0.993237f, 0.993206f, 0.993176f, 0.993145f, 0.993115f, 0.993085f, 0.993054f, 0.993024f, 0.992993f, 0.992963f, 0.992932f, 0.992902f, 0.992872f, 0.992841f, 0.992811f, 0.99278f, 0.99275f, 0.99272f,
+0.992689f, 0.992659f, 0.992628f, 0.992598f, 0.992568f, 0.992537f, 0.992507f, 0.992476f, 0.992446f, 0.992416f, 0.992385f, 0.992355f, 0.992324f, 0.992294f, 0.992264f, 0.992233f, 0.992203f, 0.992172f, 0.992142f, 0.992112f,
+0.992081f, 0.992051f, 0.99202f, 0.99199f, 0.99196f, 0.991929f, 0.991899f, 0.991868f, 0.991838f, 0.991808f, 0.991777f, 0.991747f, 0.991716f, 0.991686f, 0.991656f, 0.991625f, 0.991595f, 0.991564f, 0.991534f, 0.991504f,
+0.991473f, 0.991443f, 0.991413f, 0.991382f, 0.991352f, 0.991321f, 0.991291f, 0.991261f, 0.99123f, 0.9912f, 0.991169f, 0.991139f, 0.991109f, 0.991078f, 0.991048f, 0.991018f, 0.990987f, 0.990957f, 0.990926f, 0.990896f,
+0.990866f, 0.990835f, 0.990805f, 0.990775f, 0.990744f, 0.990714f, 0.990683f, 0.990653f, 0.990623f, 0.990592f, 0.990562f, 0.990532f, 0.990501f, 0.990471f, 0.99044f, 0.99041f, 0.99038f, 0.990349f, 0.990319f, 0.990289f,
+0.990258f, 0.990228f, 0.990197f, 0.990167f, 0.990137f, 0.990106f, 0.990076f, 0.990046f, 0.990015f, 0.989985f, 0.989955f, 0.989924f, 0.989894f, 0.989863f, 0.989833f, 0.989803f, 0.989772f, 0.989742f, 0.989712f, 0.989681f,
+0.989651f, 0.989621f, 0.98959f, 0.98956f, 0.98953f, 0.989499f, 0.989469f, 0.989438f, 0.989408f, 0.989378f, 0.989347f, 0.989317f, 0.989287f, 0.989256f, 0.989226f, 0.989196f, 0.989165f, 0.989135f, 0.989105f, 0.989074f,
+0.989044f, 0.989013f, 0.988983f, 0.988953f, 0.988922f, 0.988892f, 0.988862f, 0.988831f, 0.988801f, 0.988771f, 0.98874f, 0.98871f, 0.98868f, 0.988649f, 0.988619f, 0.988589f, 0.988558f, 0.988528f, 0.988498f, 0.988467f,
+0.988437f, 0.988407f, 0.988376f, 0.988346f, 0.988316f, 0.988285f, 0.988255f, 0.988225f, 0.988194f, 0.988164f, 0.988134f, 0.988103f, 0.988073f, 0.988043f, 0.988012f, 0.987982f, 0.987952f, 0.987921f, 0.987891f, 0.987861f,
+0.98783f, 0.9878f, 0.98777f, 0.987739f, 0.987709f, 0.987679f, 0.987648f, 0.987618f, 0.987588f, 0.987557f, 0.987527f, 0.987497f, 0.987466f, 0.987436f, 0.987406f, 0.987375f, 0.987345f, 0.987315f, 0.987284f, 0.987254f,
+0.987224f, 0.987193f, 0.987163f, 0.987133f, 0.987102f, 0.987072f, 0.987042f, 0.987011f, 0.986981f, 0.986951f, 0.98692f, 0.98689f, 0.98686f, 0.98683f, 0.986799f, 0.986769f, 0.986739f, 0.986708f, 0.986678f, 0.986648f,
+0.986617f, 0.986587f, 0.986557f, 0.986526f, 0.986496f, 0.986466f, 0.986435f, 0.986405f, 0.986375f, 0.986345f, 0.986314f, 0.986284f, 0.986254f, 0.986223f, 0.986193f, 0.986163f, 0.986132f, 0.986102f, 0.986072f, 0.986041f,
+0.986011f, 0.985981f, 0.985951f, 0.98592f, 0.98589f, 0.98586f, 0.985829f, 0.985799f, 0.985769f, 0.985738f, 0.985708f, 0.985678f, 0.985648f, 0.985617f, 0.985587f, 0.985557f, 0.985526f, 0.985496f, 0.985466f, 0.985436f,
+0.985405f, 0.985375f, 0.985345f, 0.985314f, 0.985284f, 0.985254f, 0.985223f, 0.985193f, 0.985163f, 0.985133f, 0.985102f, 0.985072f, 0.985042f, 0.985011f, 0.984981f, 0.984951f, 0.984921f, 0.98489f, 0.98486f, 0.98483f,
+0.984799f, 0.984769f, 0.984739f, 0.984709f, 0.984678f, 0.984648f, 0.984618f, 0.984587f, 0.984557f, 0.984527f, 0.984497f, 0.984466f, 0.984436f, 0.984406f, 0.984375f, 0.984345f, 0.984315f, 0.984285f, 0.984254f, 0.984224f,
+0.984194f, 0.984164f, 0.984133f, 0.984103f, 0.984073f, 0.984042f, 0.984012f, 0.983982f, 0.983952f, 0.983921f, 0.983891f, 0.983861f, 0.983831f, 0.9838f, 0.98377f, 0.98374f, 0.983709f, 0.983679f, 0.983649f, 0.983619f,
+0.983588f, 0.983558f, 0.983528f, 0.983498f, 0.983467f, 0.983437f, 0.983407f, 0.983377f, 0.983346f, 0.983316f, 0.983286f, 0.983256f, 0.983225f, 0.983195f, 0.983165f, 0.983134f, 0.983104f, 0.983074f, 0.983044f, 0.983013f,
+0.982983f, 0.982953f, 0.982923f, 0.982892f, 0.982862f, 0.982832f, 0.982802f, 0.982771f, 0.982741f, 0.982711f, 0.982681f, 0.98265f, 0.98262f, 0.98259f, 0.98256f, 0.982529f, 0.982499f, 0.982469f, 0.982439f, 0.982408f,
+0.982378f, 0.982348f, 0.982318f, 0.982287f, 0.982257f, 0.982227f, 0.982197f, 0.982166f, 0.982136f, 0.982106f, 0.982076f, 0.982045f, 0.982015f, 0.981985f, 0.981955f, 0.981924f, 0.981894f, 0.981864f, 0.981834f, 0.981804f,
+0.981773f, 0.981743f, 0.981713f, 0.981683f, 0.981652f, 0.981622f, 0.981592f, 0.981562f, 0.981531f, 0.981501f, 0.981471f, 0.981441f, 0.98141f, 0.98138f, 0.98135f, 0.98132f, 0.98129f, 0.981259f, 0.981229f, 0.981199f,
+0.981169f, 0.981138f, 0.981108f, 0.981078f, 0.981048f, 0.981017f, 0.980987f, 0.980957f, 0.980927f, 0.980897f, 0.980866f, 0.980836f, 0.980806f, 0.980776f, 0.980745f, 0.980715f, 0.980685f, 0.980655f, 0.980625f, 0.980594f,
+0.980564f, 0.980534f, 0.980504f, 0.980473f, 0.980443f, 0.980413f, 0.980383f, 0.980353f, 0.980322f, 0.980292f, 0.980262f, 0.980232f, 0.980202f, 0.980171f, 0.980141f, 0.980111f, 0.980081f, 0.98005f, 0.98002f, 0.97999f,
+0.97996f, 0.97993f, 0.979899f, 0.979869f, 0.979839f, 0.979809f, 0.979779f, 0.979748f, 0.979718f, 0.979688f, 0.979658f, 0.979628f, 0.979597f, 0.979567f, 0.979537f, 0.979507f, 0.979477f, 0.979446f, 0.979416f, 0.979386f,
+0.979356f, 0.979326f, 0.979295f, 0.979265f, 0.979235f, 0.979205f, 0.979175f, 0.979144f, 0.979114f, 0.979084f, 0.979054f, 0.979024f, 0.978993f, 0.978963f, 0.978933f, 0.978903f, 0.978873f, 0.978842f, 0.978812f, 0.978782f,
+0.978752f, 0.978722f, 0.978691f, 0.978661f, 0.978631f, 0.978601f, 0.978571f, 0.97854f, 0.97851f, 0.97848f, 0.97845f, 0.97842f, 0.97839f, 0.978359f, 0.978329f, 0.978299f, 0.978269f, 0.978239f, 0.978208f, 0.978178f,
+0.978148f, 0.978118f, 0.978088f, 0.978057f, 0.978027f, 0.977997f, 0.977967f, 0.977937f, 0.977907f, 0.977876f, 0.977846f, 0.977816f, 0.977786f, 0.977756f, 0.977726f, 0.977695f, 0.977665f, 0.977635f, 0.977605f, 0.977575f,
+0.977544f, 0.977514f, 0.977484f, 0.977454f, 0.977424f, 0.977394f, 0.977363f, 0.977333f, 0.977303f, 0.977273f, 0.977243f, 0.977213f, 0.977182f, 0.977152f, 0.977122f, 0.977092f, 0.977062f, 0.977032f, 0.977001f, 0.976971f,
+0.976941f, 0.976911f, 0.976881f, 0.976851f, 0.97682f, 0.97679f, 0.97676f, 0.97673f, 0.9767f, 0.97667f, 0.97664f, 0.976609f, 0.976579f, 0.976549f, 0.976519f, 0.976489f, 0.976459f, 0.976428f, 0.976398f, 0.976368f,
+0.976338f, 0.976308f, 0.976278f, 0.976247f, 0.976217f, 0.976187f, 0.976157f, 0.976127f, 0.976097f, 0.976067f, 0.976036f, 0.976006f, 0.975976f, 0.975946f, 0.975916f, 0.975886f, 0.975856f, 0.975825f, 0.975795f, 0.975765f,
+0.975735f, 0.975705f, 0.975675f, 0.975645f, 0.975614f, 0.975584f, 0.975554f, 0.975524f, 0.975494f, 0.975464f, 0.975434f, 0.975403f, 0.975373f, 0.975343f, 0.975313f, 0.975283f, 0.975253f, 0.975223f, 0.975192f, 0.975162f,
+0.975132f, 0.975102f, 0.975072f, 0.975042f, 0.975012f, 0.974981f, 0.974951f, 0.974921f, 0.974891f, 0.974861f, 0.974831f, 0.974801f, 0.974771f, 0.97474f, 0.97471f, 0.97468f, 0.97465f, 0.97462f, 0.97459f, 0.97456f,
+0.97453f, 0.974499f, 0.974469f, 0.974439f, 0.974409f, 0.974379f, 0.974349f, 0.974319f, 0.974289f, 0.974258f, 0.974228f, 0.974198f, 0.974168f, 0.974138f, 0.974108f, 0.974078f, 0.974048f, 0.974017f, 0.973987f, 0.973957f,
+0.973927f, 0.973897f, 0.973867f, 0.973837f, 0.973807f, 0.973777f, 0.973746f, 0.973716f, 0.973686f, 0.973656f, 0.973626f, 0.973596f, 0.973566f, 0.973536f, 0.973505f, 0.973475f, 0.973445f, 0.973415f, 0.973385f, 0.973355f,
+0.973325f, 0.973295f, 0.973265f, 0.973235f, 0.973204f, 0.973174f, 0.973144f, 0.973114f, 0.973084f, 0.973054f, 0.973024f, 0.972994f, 0.972964f, 0.972933f, 0.972903f, 0.972873f, 0.972843f, 0.972813f, 0.972783f, 0.972753f,
+0.972723f, 0.972693f, 0.972663f, 0.972632f, 0.972602f, 0.972572f, 0.972542f, 0.972512f, 0.972482f, 0.972452f, 0.972422f, 0.972392f, 0.972362f, 0.972332f, 0.972301f, 0.972271f, 0.972241f, 0.972211f, 0.972181f, 0.972151f,
+0.972121f, 0.972091f, 0.972061f, 0.972031f, 0.972001f, 0.97197f, 0.97194f, 0.97191f, 0.97188f, 0.97185f, 0.97182f, 0.97179f, 0.97176f, 0.97173f, 0.9717f, 0.97167f, 0.97164f, 0.971609f, 0.971579f, 0.971549f,
+0.971519f, 0.971489f, 0.971459f, 0.971429f, 0.971399f, 0.971369f, 0.971339f, 0.971309f, 0.971279f, 0.971249f, 0.971218f, 0.971188f, 0.971158f, 0.971128f, 0.971098f, 0.971068f, 0.971038f, 0.971008f, 0.970978f, 0.970948f,
+0.970918f, 0.970888f, 0.970858f, 0.970827f, 0.970797f, 0.970767f, 0.970737f, 0.970707f, 0.970677f, 0.970647f, 0.970617f, 0.970587f, 0.970557f, 0.970527f, 0.970497f, 0.970467f, 0.970437f, 0.970407f, 0.970377f, 0.970346f,
+0.970316f, 0.970286f, 0.970256f, 0.970226f, 0.970196f, 0.970166f, 0.970136f, 0.970106f, 0.970076f, 0.970046f, 0.970016f, 0.969986f, 0.969956f, 0.969926f, 0.969896f, 0.969866f, 0.969835f, 0.969805f, 0.969775f, 0.969745f,
+0.969715f, 0.969685f, 0.969655f, 0.969625f, 0.969595f, 0.969565f, 0.969535f, 0.969505f, 0.969475f, 0.969445f, 0.969415f, 0.969385f, 0.969355f, 0.969325f, 0.969295f, 0.969265f, 0.969234f, 0.969204f, 0.969174f, 0.969144f,
+0.969114f, 0.969084f, 0.969054f, 0.969024f, 0.968994f, 0.968964f, 0.968934f, 0.968904f, 0.968874f, 0.968844f, 0.968814f, 0.968784f, 0.968754f, 0.968724f, 0.968694f, 0.968664f, 0.968634f, 0.968604f, 0.968574f, 0.968544f,
+0.968514f, 0.968484f, 0.968453f, 0.968423f, 0.968393f, 0.968363f, 0.968333f, 0.968303f, 0.968273f, 0.968243f, 0.968213f, 0.968183f, 0.968153f, 0.968123f, 0.968093f, 0.968063f, 0.968033f, 0.968003f, 0.967973f, 0.967943f,
+0.967913f, 0.967883f, 0.967853f, 0.967823f, 0.967793f, 0.967763f, 0.967733f, 0.967703f, 0.967673f, 0.967643f, 0.967613f, 0.967583f, 0.967553f, 0.967523f, 0.967493f, 0.967463f, 0.967433f, 0.967403f, 0.967373f, 0.967343f,
+0.967313f, 0.967283f, 0.967253f, 0.967223f, 0.967193f, 0.967163f, 0.967133f, 0.967102f, 0.967072f, 0.967042f, 0.967012f, 0.966982f, 0.966952f, 0.966922f, 0.966892f, 0.966862f, 0.966832f, 0.966802f, 0.966772f, 0.966742f,
+0.966712f, 0.966682f, 0.966652f, 0.966622f, 0.966592f, 0.966562f, 0.966532f, 0.966502f, 0.966472f, 0.966442f, 0.966412f, 0.966382f, 0.966352f, 0.966322f, 0.966292f, 0.966262f, 0.966232f, 0.966202f, 0.966172f, 0.966142f,
+0.966112f, 0.966082f, 0.966052f, 0.966022f, 0.965992f, 0.965962f, 0.965932f, 0.965902f, 0.965872f, 0.965842f, 0.965812f, 0.965782f, 0.965752f, 0.965722f, 0.965692f, 0.965662f, 0.965632f, 0.965603f, 0.965573f, 0.965543f,
+0.965513f, 0.965483f, 0.965453f, 0.965423f, 0.965393f, 0.965363f, 0.965333f, 0.965303f, 0.965273f, 0.965243f, 0.965213f, 0.965183f, 0.965153f, 0.965123f, 0.965093f, 0.965063f, 0.965033f, 0.965003f, 0.964973f, 0.964943f,
+0.964913f, 0.964883f, 0.964853f, 0.964823f, 0.964793f, 0.964763f, 0.964733f, 0.964703f, 0.964673f, 0.964643f, 0.964613f, 0.964583f, 0.964553f, 0.964523f, 0.964493f, 0.964463f, 0.964433f, 0.964403f, 0.964373f, 0.964343f,
+0.964313f, 0.964283f, 0.964254f, 0.964224f, 0.964194f, 0.964164f, 0.964134f, 0.964104f, 0.964074f, 0.964044f, 0.964014f, 0.963984f, 0.963954f, 0.963924f, 0.963894f, 0.963864f, 0.963834f, 0.963804f, 0.963774f, 0.963744f,
+0.963714f, 0.963684f, 0.963654f, 0.963624f, 0.963594f, 0.963564f, 0.963534f, 0.963504f, 0.963475f, 0.963445f, 0.963415f, 0.963385f, 0.963355f, 0.963325f, 0.963295f, 0.963265f, 0.963235f, 0.963205f, 0.963175f, 0.963145f,
+0.963115f, 0.963085f, 0.963055f, 0.963025f, 0.962995f, 0.962965f, 0.962935f, 0.962905f, 0.962876f, 0.962846f, 0.962816f, 0.962786f, 0.962756f, 0.962726f, 0.962696f, 0.962666f, 0.962636f, 0.962606f, 0.962576f, 0.962546f,
+0.962516f, 0.962486f, 0.962456f, 0.962426f, 0.962396f, 0.962367f, 0.962337f, 0.962307f, 0.962277f, 0.962247f, 0.962217f, 0.962187f, 0.962157f, 0.962127f, 0.962097f, 0.962067f, 0.962037f, 0.962007f, 0.961977f, 0.961947f,
+0.961917f, 0.961888f, 0.961858f, 0.961828f, 0.961798f, 0.961768f, 0.961738f, 0.961708f, 0.961678f, 0.961648f, 0.961618f, 0.961588f, 0.961558f, 0.961528f, 0.961499f, 0.961469f, 0.961439f, 0.961409f, 0.961379f, 0.961349f,
+0.961319f, 0.961289f, 0.961259f, 0.961229f, 0.961199f, 0.961169f, 0.961139f, 0.96111f, 0.96108f, 0.96105f, 0.96102f, 0.96099f, 0.96096f, 0.96093f, 0.9609f, 0.96087f, 0.96084f, 0.96081f, 0.96078f, 0.960751f,
+0.960721f, 0.960691f, 0.960661f, 0.960631f, 0.960601f, 0.960571f, 0.960541f, 0.960511f, 0.960481f, 0.960451f, 0.960422f, 0.960392f, 0.960362f, 0.960332f, 0.960302f, 0.960272f, 0.960242f, 0.960212f, 0.960182f, 0.960152f,
+0.960122f, 0.960093f, 0.960063f, 0.960033f, 0.960003f, 0.959973f, 0.959943f, 0.959913f, 0.959883f, 0.959853f, 0.959823f, 0.959794f, 0.959764f, 0.959734f, 0.959704f, 0.959674f, 0.959644f, 0.959614f, 0.959584f, 0.959554f,
+0.959525f, 0.959495f, 0.959465f, 0.959435f, 0.959405f, 0.959375f, 0.959345f, 0.959315f, 0.959285f, 0.959255f, 0.959226f, 0.959196f, 0.959166f, 0.959136f, 0.959106f, 0.959076f, 0.959046f, 0.959016f, 0.958987f, 0.958957f,
+0.958927f, 0.958897f, 0.958867f, 0.958837f, 0.958807f, 0.958777f, 0.958747f, 0.958718f, 0.958688f, 0.958658f, 0.958628f, 0.958598f, 0.958568f, 0.958538f, 0.958508f, 0.958479f, 0.958449f, 0.958419f, 0.958389f, 0.958359f,
+0.958329f, 0.958299f, 0.958269f, 0.95824f, 0.95821f, 0.95818f, 0.95815f, 0.95812f, 0.95809f, 0.95806f, 0.95803f, 0.958001f, 0.957971f, 0.957941f, 0.957911f, 0.957881f, 0.957851f, 0.957821f, 0.957791f, 0.957762f,
+0.957732f, 0.957702f, 0.957672f, 0.957642f, 0.957612f, 0.957582f, 0.957553f, 0.957523f, 0.957493f, 0.957463f, 0.957433f, 0.957403f, 0.957373f, 0.957344f, 0.957314f, 0.957284f, 0.957254f, 0.957224f, 0.957194f, 0.957164f,
+0.957135f, 0.957105f, 0.957075f, 0.957045f, 0.957015f, 0.956985f, 0.956955f, 0.956926f, 0.956896f, 0.956866f, 0.956836f, 0.956806f, 0.956776f, 0.956746f, 0.956717f, 0.956687f, 0.956657f, 0.956627f, 0.956597f, 0.956567f,
+0.956537f, 0.956508f, 0.956478f, 0.956448f, 0.956418f, 0.956388f, 0.956358f, 0.956329f, 0.956299f, 0.956269f, 0.956239f, 0.956209f, 0.956179f, 0.95615f, 0.95612f, 0.95609f, 0.95606f, 0.95603f, 0.956f, 0.95597f,
+0.955941f, 0.955911f, 0.955881f, 0.955851f, 0.955821f, 0.955791f, 0.955762f, 0.955732f, 0.955702f, 0.955672f, 0.955642f, 0.955612f, 0.955583f, 0.955553f, 0.955523f, 0.955493f, 0.955463f, 0.955433f, 0.955404f, 0.955374f,
+0.955344f, 0.955314f, 0.955284f, 0.955254f, 0.955225f, 0.955195f, 0.955165f, 0.955135f, 0.955105f, 0.955076f, 0.955046f, 0.955016f, 0.954986f, 0.954956f, 0.954926f, 0.954897f, 0.954867f, 0.954837f, 0.954807f, 0.954777f,
+0.954748f, 0.954718f, 0.954688f, 0.954658f, 0.954628f, 0.954598f, 0.954569f, 0.954539f, 0.954509f, 0.954479f, 0.954449f, 0.95442f, 0.95439f, 0.95436f, 0.95433f, 0.9543f, 0.95427f, 0.954241f, 0.954211f, 0.954181f,
+0.954151f, 0.954121f, 0.954092f, 0.954062f, 0.954032f, 0.954002f, 0.953972f, 0.953943f, 0.953913f, 0.953883f, 0.953853f, 0.953823f, 0.953794f, 0.953764f, 0.953734f, 0.953704f, 0.953674f, 0.953645f, 0.953615f, 0.953585f,
+0.953555f, 0.953525f, 0.953496f, 0.953466f, 0.953436f, 0.953406f, 0.953376f, 0.953347f, 0.953317f, 0.953287f, 0.953257f, 0.953227f, 0.953198f, 0.953168f, 0.953138f, 0.953108f, 0.953078f, 0.953049f, 0.953019f, 0.952989f,
+0.952959f, 0.952929f, 0.9529f, 0.95287f, 0.95284f, 0.95281f, 0.95278f, 0.952751f, 0.952721f, 0.952691f, 0.952661f, 0.952632f, 0.952602f, 0.952572f, 0.952542f, 0.952512f, 0.952483f, 0.952453f, 0.952423f, 0.952393f,
+0.952363f, 0.952334f, 0.952304f, 0.952274f, 0.952244f, 0.952215f, 0.952185f, 0.952155f, 0.952125f, 0.952095f, 0.952066f, 0.952036f, 0.952006f, 0.951976f, 0.951947f, 0.951917f, 0.951887f, 0.951857f, 0.951827f, 0.951798f,
+0.951768f, 0.951738f, 0.951708f, 0.951679f, 0.951649f, 0.951619f, 0.951589f, 0.95156f, 0.95153f, 0.9515f, 0.95147f, 0.95144f, 0.951411f, 0.951381f, 0.951351f, 0.951321f, 0.951292f, 0.951262f, 0.951232f, 0.951202f,
+0.951173f, 0.951143f, 0.951113f, 0.951083f, 0.951054f, 0.951024f, 0.950994f, 0.950964f, 0.950934f, 0.950905f, 0.950875f, 0.950845f, 0.950815f, 0.950786f, 0.950756f, 0.950726f, 0.950696f, 0.950667f, 0.950637f, 0.950607f,
+0.950577f, 0.950548f, 0.950518f, 0.950488f, 0.950458f, 0.950429f, 0.950399f, 0.950369f, 0.950339f, 0.95031f, 0.95028f, 0.95025f, 0.95022f, 0.950191f, 0.950161f, 0.950131f, 0.950101f, 0.950072f, 0.950042f, 0.950012f,
+0.949982f, 0.949953f, 0.949923f, 0.949893f, 0.949863f, 0.949834f, 0.949804f, 0.949774f, 0.949744f, 0.949715f, 0.949685f, 0.949655f, 0.949626f, 0.949596f, 0.949566f, 0.949536f, 0.949507f, 0.949477f, 0.949447f, 0.949417f,
+0.949388f, 0.949358f, 0.949328f, 0.949298f, 0.949269f, 0.949239f, 0.949209f, 0.949179f, 0.94915f, 0.94912f, 0.94909f, 0.949061f, 0.949031f, 0.949001f, 0.948971f, 0.948942f, 0.948912f, 0.948882f, 0.948852f, 0.948823f,
+0.948793f, 0.948763f, 0.948734f, 0.948704f, 0.948674f, 0.948644f, 0.948615f, 0.948585f, 0.948555f, 0.948525f, 0.948496f, 0.948466f, 0.948436f, 0.948407f, 0.948377f, 0.948347f, 0.948317f, 0.948288f, 0.948258f, 0.948228f,
+0.948199f, 0.948169f, 0.948139f, 0.948109f, 0.94808f, 0.94805f, 0.94802f, 0.947991f, 0.947961f, 0.947931f, 0.947901f, 0.947872f, 0.947842f, 0.947812f, 0.947783f, 0.947753f, 0.947723f, 0.947693f, 0.947664f, 0.947634f,
+0.947604f, 0.947575f, 0.947545f, 0.947515f, 0.947486f, 0.947456f, 0.947426f, 0.947396f, 0.947367f, 0.947337f, 0.947307f, 0.947278f, 0.947248f, 0.947218f, 0.947188f, 0.947159f, 0.947129f, 0.947099f, 0.94707f, 0.94704f,
+0.94701f, 0.946981f, 0.946951f, 0.946921f, 0.946891f, 0.946862f, 0.946832f, 0.946802f, 0.946773f, 0.946743f, 0.946713f, 0.946684f, 0.946654f, 0.946624f, 0.946595f, 0.946565f, 0.946535f, 0.946505f, 0.946476f, 0.946446f,
+0.946416f, 0.946387f, 0.946357f, 0.946327f, 0.946298f, 0.946268f, 0.946238f, 0.946209f, 0.946179f, 0.946149f, 0.94612f, 0.94609f, 0.94606f, 0.94603f, 0.946001f, 0.945971f, 0.945941f, 0.945912f, 0.945882f, 0.945852f,
+0.945823f, 0.945793f, 0.945763f, 0.945734f, 0.945704f, 0.945674f, 0.945645f, 0.945615f, 0.945585f, 0.945556f, 0.945526f, 0.945496f, 0.945467f, 0.945437f, 0.945407f, 0.945378f, 0.945348f, 0.945318f, 0.945289f, 0.945259f,
+0.945229f, 0.9452f, 0.94517f, 0.94514f, 0.945111f, 0.945081f, 0.945051f, 0.945022f, 0.944992f, 0.944962f, 0.944933f, 0.944903f, 0.944873f, 0.944844f, 0.944814f, 0.944784f, 0.944755f, 0.944725f, 0.944695f, 0.944666f,
+0.944636f, 0.944606f, 0.944577f, 0.944547f, 0.944517f, 0.944488f, 0.944458f, 0.944428f, 0.944399f, 0.944369f, 0.944339f, 0.94431f, 0.94428f, 0.94425f, 0.944221f, 0.944191f, 0.944161f, 0.944132f, 0.944102f, 0.944072f,
+0.944043f, 0.944013f, 0.943984f, 0.943954f, 0.943924f, 0.943895f, 0.943865f, 0.943835f, 0.943806f, 0.943776f, 0.943746f, 0.943717f, 0.943687f, 0.943657f, 0.943628f, 0.943598f, 0.943568f, 0.943539f, 0.943509f, 0.94348f,
+0.94345f, 0.94342f, 0.943391f, 0.943361f, 0.943331f, 0.943302f, 0.943272f, 0.943242f, 0.943213f, 0.943183f, 0.943153f, 0.943124f, 0.943094f, 0.943065f, 0.943035f, 0.943005f, 0.942976f, 0.942946f, 0.942916f, 0.942887f,
+0.942857f, 0.942827f, 0.942798f, 0.942768f, 0.942739f, 0.942709f, 0.942679f, 0.94265f, 0.94262f, 0.94259f, 0.942561f, 0.942531f, 0.942502f, 0.942472f, 0.942442f, 0.942413f, 0.942383f, 0.942353f, 0.942324f, 0.942294f,
+0.942265f, 0.942235f, 0.942205f, 0.942176f, 0.942146f, 0.942116f, 0.942087f, 0.942057f, 0.942028f, 0.941998f, 0.941968f, 0.941939f, 0.941909f, 0.941879f, 0.94185f, 0.94182f, 0.941791f, 0.941761f, 0.941731f, 0.941702f,
+0.941672f, 0.941643f, 0.941613f, 0.941583f, 0.941554f, 0.941524f, 0.941495f, 0.941465f, 0.941435f, 0.941406f, 0.941376f, 0.941346f, 0.941317f, 0.941287f, 0.941258f, 0.941228f, 0.941198f, 0.941169f, 0.941139f, 0.94111f,
+0.94108f, 0.94105f, 0.941021f, 0.940991f, 0.940962f, 0.940932f, 0.940902f, 0.940873f, 0.940843f, 0.940814f, 0.940784f, 0.940754f, 0.940725f, 0.940695f, 0.940666f, 0.940636f, 0.940606f, 0.940577f, 0.940547f, 0.940518f,
+0.940488f, 0.940458f, 0.940429f, 0.940399f, 0.94037f, 0.94034f, 0.94031f, 0.940281f, 0.940251f, 0.940222f, 0.940192f, 0.940162f, 0.940133f, 0.940103f, 0.940074f, 0.940044f, 0.940015f, 0.939985f, 0.939955f, 0.939926f,
+0.939896f, 0.939867f, 0.939837f, 0.939807f, 0.939778f, 0.939748f, 0.939719f, 0.939689f, 0.939659f, 0.93963f, 0.9396f, 0.939571f, 0.939541f, 0.939512f, 0.939482f, 0.939452f, 0.939423f, 0.939393f, 0.939364f, 0.939334f,
+0.939305f, 0.939275f, 0.939245f, 0.939216f, 0.939186f, 0.939157f, 0.939127f, 0.939098f, 0.939068f, 0.939038f, 0.939009f, 0.938979f, 0.93895f, 0.93892f, 0.938891f, 0.938861f, 0.938831f, 0.938802f, 0.938772f, 0.938743f,
+0.938713f, 0.938684f, 0.938654f, 0.938624f, 0.938595f, 0.938565f, 0.938536f, 0.938506f, 0.938477f, 0.938447f, 0.938417f, 0.938388f, 0.938358f, 0.938329f, 0.938299f, 0.93827f, 0.93824f, 0.938211f, 0.938181f, 0.938151f,
+0.938122f, 0.938092f, 0.938063f, 0.938033f, 0.938004f, 0.937974f, 0.937944f, 0.937915f, 0.937885f, 0.937856f, 0.937826f, 0.937797f, 0.937767f, 0.937738f, 0.937708f, 0.937679f, 0.937649f, 0.937619f, 0.93759f, 0.93756f,
+0.937531f, 0.937501f, 0.937472f, 0.937442f, 0.937413f, 0.937383f, 0.937353f, 0.937324f, 0.937294f, 0.937265f, 0.937235f, 0.937206f, 0.937176f, 0.937147f, 0.937117f, 0.937088f, 0.937058f, 0.937028f, 0.936999f, 0.936969f,
+0.93694f, 0.93691f, 0.936881f, 0.936851f, 0.936822f, 0.936792f, 0.936763f, 0.936733f, 0.936704f, 0.936674f, 0.936644f, 0.936615f, 0.936585f, 0.936556f, 0.936526f, 0.936497f, 0.936467f, 0.936438f, 0.936408f, 0.936379f,
+0.936349f, 0.93632f, 0.93629f, 0.936261f, 0.936231f, 0.936202f, 0.936172f, 0.936142f, 0.936113f, 0.936083f, 0.936054f, 0.936024f, 0.935995f, 0.935965f, 0.935936f, 0.935906f, 0.935877f, 0.935847f, 0.935818f, 0.935788f,
+0.935759f, 0.935729f, 0.9357f, 0.93567f, 0.935641f, 0.935611f, 0.935582f, 0.935552f, 0.935523f, 0.935493f, 0.935463f, 0.935434f, 0.935404f, 0.935375f, 0.935345f, 0.935316f, 0.935286f, 0.935257f, 0.935227f, 0.935198f,
+0.935168f, 0.935139f, 0.935109f, 0.93508f, 0.93505f, 0.935021f, 0.934991f, 0.934962f, 0.934932f, 0.934903f, 0.934873f, 0.934844f, 0.934814f, 0.934785f, 0.934755f, 0.934726f, 0.934696f, 0.934667f, 0.934637f, 0.934608f,
+0.934578f, 0.934549f, 0.934519f, 0.93449f, 0.93446f, 0.934431f, 0.934401f, 0.934372f, 0.934342f, 0.934313f, 0.934283f, 0.934254f, 0.934224f, 0.934195f, 0.934165f, 0.934136f, 0.934106f, 0.934077f, 0.934047f, 0.934018f,
+0.933988f, 0.933959f, 0.933929f, 0.9339f, 0.93387f, 0.933841f, 0.933811f, 0.933782f, 0.933752f, 0.933723f, 0.933693f, 0.933664f, 0.933634f, 0.933605f, 0.933575f, 0.933546f, 0.933516f, 0.933487f, 0.933457f, 0.933428f,
+0.933398f, 0.933369f, 0.933339f, 0.93331f, 0.933281f, 0.933251f, 0.933222f, 0.933192f, 0.933163f, 0.933133f, 0.933104f, 0.933074f, 0.933045f, 0.933015f, 0.932986f, 0.932956f, 0.932927f, 0.932897f, 0.932868f, 0.932838f,
+0.932809f, 0.932779f, 0.93275f, 0.93272f, 0.932691f, 0.932662f, 0.932632f, 0.932603f, 0.932573f, 0.932544f, 0.932514f, 0.932485f, 0.932455f, 0.932426f, 0.932396f, 0.932367f, 0.932337f, 0.932308f, 0.932278f, 0.932249f,
+0.932219f, 0.93219f, 0.932161f, 0.932131f, 0.932102f, 0.932072f, 0.932043f, 0.932013f, 0.931984f, 0.931954f, 0.931925f, 0.931895f, 0.931866f, 0.931836f, 0.931807f, 0.931778f, 0.931748f, 0.931719f, 0.931689f, 0.93166f,
+0.93163f, 0.931601f, 0.931571f, 0.931542f, 0.931512f, 0.931483f, 0.931454f, 0.931424f, 0.931395f, 0.931365f, 0.931336f, 0.931306f, 0.931277f, 0.931247f, 0.931218f, 0.931188f, 0.931159f, 0.93113f, 0.9311f, 0.931071f,
+0.931041f, 0.931012f, 0.930982f, 0.930953f, 0.930923f, 0.930894f, 0.930865f, 0.930835f, 0.930806f, 0.930776f, 0.930747f, 0.930717f, 0.930688f, 0.930658f, 0.930629f, 0.9306f, 0.93057f, 0.930541f, 0.930511f, 0.930482f,
+0.930452f, 0.930423f, 0.930394f, 0.930364f, 0.930335f, 0.930305f, 0.930276f, 0.930246f, 0.930217f, 0.930187f, 0.930158f, 0.930129f, 0.930099f, 0.93007f, 0.93004f, 0.930011f, 0.929981f, 0.929952f, 0.929923f, 0.929893f,
+0.929864f, 0.929834f, 0.929805f, 0.929775f, 0.929746f, 0.929717f, 0.929687f, 0.929658f, 0.929628f, 0.929599f, 0.929569f, 0.92954f, 0.929511f, 0.929481f, 0.929452f, 0.929422f, 0.929393f, 0.929364f, 0.929334f, 0.929305f,
+0.929275f, 0.929246f, 0.929216f, 0.929187f, 0.929158f, 0.929128f, 0.929099f, 0.929069f, 0.92904f, 0.929011f, 0.928981f, 0.928952f, 0.928922f, 0.928893f, 0.928863f, 0.928834f, 0.928805f, 0.928775f, 0.928746f, 0.928716f,
+0.928687f, 0.928658f, 0.928628f, 0.928599f, 0.928569f, 0.92854f, 0.928511f, 0.928481f, 0.928452f, 0.928422f, 0.928393f, 0.928364f, 0.928334f, 0.928305f, 0.928275f, 0.928246f, 0.928217f, 0.928187f, 0.928158f, 0.928128f,
+0.928099f, 0.92807f, 0.92804f, 0.928011f, 0.927981f, 0.927952f, 0.927923f, 0.927893f, 0.927864f, 0.927834f, 0.927805f, 0.927776f, 0.927746f, 0.927717f, 0.927687f, 0.927658f, 0.927629f, 0.927599f, 0.92757f, 0.92754f,
+0.927511f, 0.927482f, 0.927452f, 0.927423f, 0.927393f, 0.927364f, 0.927335f, 0.927305f, 0.927276f, 0.927247f, 0.927217f, 0.927188f, 0.927158f, 0.927129f, 0.9271f, 0.92707f, 0.927041f, 0.927011f, 0.926982f, 0.926953f,
+0.926923f, 0.926894f, 0.926865f, 0.926835f, 0.926806f, 0.926776f, 0.926747f, 0.926718f, 0.926688f, 0.926659f, 0.926629f, 0.9266f, 0.926571f, 0.926541f, 0.926512f, 0.926483f, 0.926453f, 0.926424f, 0.926395f, 0.926365f,
+0.926336f, 0.926306f, 0.926277f, 0.926248f, 0.926218f, 0.926189f, 0.92616f, 0.92613f, 0.926101f, 0.926071f, 0.926042f, 0.926013f, 0.925983f, 0.925954f, 0.925925f, 0.925895f, 0.925866f, 0.925836f, 0.925807f, 0.925778f,
+0.925748f, 0.925719f, 0.92569f, 0.92566f, 0.925631f, 0.925602f, 0.925572f, 0.925543f, 0.925514f, 0.925484f, 0.925455f, 0.925425f, 0.925396f, 0.925367f, 0.925337f, 0.925308f, 0.925279f, 0.925249f, 0.92522f, 0.925191f,
+0.925161f, 0.925132f, 0.925103f, 0.925073f, 0.925044f, 0.925014f, 0.924985f, 0.924956f, 0.924926f, 0.924897f, 0.924868f, 0.924838f, 0.924809f, 0.92478f, 0.92475f, 0.924721f, 0.924692f, 0.924662f, 0.924633f, 0.924604f,
+0.924574f, 0.924545f, 0.924516f, 0.924486f, 0.924457f, 0.924428f, 0.924398f, 0.924369f, 0.92434f, 0.92431f, 0.924281f, 0.924252f, 0.924222f, 0.924193f, 0.924163f, 0.924134f, 0.924105f, 0.924075f, 0.924046f, 0.924017f,
+0.923987f, 0.923958f, 0.923929f, 0.923899f, 0.92387f, 0.923841f, 0.923811f, 0.923782f, 0.923753f, 0.923723f, 0.923694f, 0.923665f, 0.923635f, 0.923606f, 0.923577f, 0.923548f, 0.923518f, 0.923489f, 0.92346f, 0.92343f,
+0.923401f, 0.923372f, 0.923342f, 0.923313f, 0.923284f, 0.923254f, 0.923225f, 0.923196f, 0.923166f, 0.923137f, 0.923108f, 0.923078f, 0.923049f, 0.92302f, 0.92299f, 0.922961f, 0.922932f, 0.922902f, 0.922873f, 0.922844f,
+0.922814f, 0.922785f, 0.922756f, 0.922727f, 0.922697f, 0.922668f, 0.922639f, 0.922609f, 0.92258f, 0.922551f, 0.922521f, 0.922492f, 0.922463f, 0.922433f, 0.922404f, 0.922375f, 0.922345f, 0.922316f, 0.922287f, 0.922258f,
+0.922228f, 0.922199f, 0.92217f, 0.92214f, 0.922111f, 0.922082f, 0.922052f, 0.922023f, 0.921994f, 0.921964f, 0.921935f, 0.921906f, 0.921877f, 0.921847f, 0.921818f, 0.921789f, 0.921759f, 0.92173f, 0.921701f, 0.921671f,
+0.921642f, 0.921613f, 0.921584f, 0.921554f, 0.921525f, 0.921496f, 0.921466f, 0.921437f, 0.921408f, 0.921379f, 0.921349f, 0.92132f, 0.921291f, 0.921261f, 0.921232f, 0.921203f, 0.921173f, 0.921144f, 0.921115f, 0.921086f,
+0.921056f, 0.921027f, 0.920998f, 0.920968f, 0.920939f, 0.92091f, 0.920881f, 0.920851f, 0.920822f, 0.920793f, 0.920763f, 0.920734f, 0.920705f, 0.920676f, 0.920646f, 0.920617f, 0.920588f, 0.920558f, 0.920529f, 0.9205f,
+0.920471f, 0.920441f, 0.920412f, 0.920383f, 0.920354f, 0.920324f, 0.920295f, 0.920266f, 0.920236f, 0.920207f, 0.920178f, 0.920149f, 0.920119f, 0.92009f, 0.920061f, 0.920032f, 0.920002f, 0.919973f, 0.919944f, 0.919914f,
+0.919885f, 0.919856f, 0.919827f, 0.919797f, 0.919768f, 0.919739f, 0.91971f, 0.91968f, 0.919651f, 0.919622f, 0.919593f, 0.919563f, 0.919534f, 0.919505f, 0.919475f, 0.919446f, 0.919417f, 0.919388f, 0.919358f, 0.919329f,
+0.9193f, 0.919271f, 0.919241f, 0.919212f, 0.919183f, 0.919154f, 0.919124f, 0.919095f, 0.919066f, 0.919037f, 0.919007f, 0.918978f, 0.918949f, 0.91892f, 0.91889f, 0.918861f, 0.918832f, 0.918803f, 0.918773f, 0.918744f,
+0.918715f, 0.918686f, 0.918656f, 0.918627f, 0.918598f, 0.918569f, 0.918539f, 0.91851f, 0.918481f, 0.918452f, 0.918422f, 0.918393f, 0.918364f, 0.918335f, 0.918305f, 0.918276f, 0.918247f, 0.918218f, 0.918188f, 0.918159f,
+0.91813f, 0.918101f, 0.918071f, 0.918042f, 0.918013f, 0.917984f, 0.917954f, 0.917925f, 0.917896f, 0.917867f, 0.917837f, 0.917808f, 0.917779f, 0.91775f, 0.91772f, 0.917691f, 0.917662f, 0.917633f, 0.917604f, 0.917574f,
+0.917545f, 0.917516f, 0.917487f, 0.917457f, 0.917428f, 0.917399f, 0.91737f, 0.91734f, 0.917311f, 0.917282f, 0.917253f, 0.917224f, 0.917194f, 0.917165f, 0.917136f, 0.917107f, 0.917077f, 0.917048f, 0.917019f, 0.91699f,
+0.916961f, 0.916931f, 0.916902f, 0.916873f, 0.916844f, 0.916814f, 0.916785f, 0.916756f, 0.916727f, 0.916698f, 0.916668f, 0.916639f, 0.91661f, 0.916581f, 0.916551f, 0.916522f, 0.916493f, 0.916464f, 0.916435f, 0.916405f,
+0.916376f, 0.916347f, 0.916318f, 0.916289f, 0.916259f, 0.91623f, 0.916201f, 0.916172f, 0.916142f, 0.916113f, 0.916084f, 0.916055f, 0.916026f, 0.915996f, 0.915967f, 0.915938f, 0.915909f, 0.91588f, 0.91585f, 0.915821f,
+0.915792f, 0.915763f, 0.915734f, 0.915704f, 0.915675f, 0.915646f, 0.915617f, 0.915588f, 0.915558f, 0.915529f, 0.9155f, 0.915471f, 0.915442f, 0.915412f, 0.915383f, 0.915354f, 0.915325f, 0.915296f, 0.915266f, 0.915237f,
+0.915208f, 0.915179f, 0.91515f, 0.91512f, 0.915091f, 0.915062f, 0.915033f, 0.915004f, 0.914974f, 0.914945f, 0.914916f, 0.914887f, 0.914858f, 0.914829f, 0.914799f, 0.91477f, 0.914741f, 0.914712f, 0.914683f, 0.914653f,
+0.914624f, 0.914595f, 0.914566f, 0.914537f, 0.914507f, 0.914478f, 0.914449f, 0.91442f, 0.914391f, 0.914362f, 0.914332f, 0.914303f, 0.914274f, 0.914245f, 0.914216f, 0.914186f, 0.914157f, 0.914128f, 0.914099f, 0.91407f,
+0.914041f, 0.914011f, 0.913982f, 0.913953f, 0.913924f, 0.913895f, 0.913866f, 0.913836f, 0.913807f, 0.913778f, 0.913749f, 0.91372f, 0.91369f, 0.913661f, 0.913632f, 0.913603f, 0.913574f, 0.913545f, 0.913515f, 0.913486f,
+0.913457f, 0.913428f, 0.913399f, 0.91337f, 0.91334f, 0.913311f, 0.913282f, 0.913253f, 0.913224f, 0.913195f, 0.913165f, 0.913136f, 0.913107f, 0.913078f, 0.913049f, 0.91302f, 0.912991f, 0.912961f, 0.912932f, 0.912903f,
+0.912874f, 0.912845f, 0.912816f, 0.912786f, 0.912757f, 0.912728f, 0.912699f, 0.91267f, 0.912641f, 0.912611f, 0.912582f, 0.912553f, 0.912524f, 0.912495f, 0.912466f, 0.912437f, 0.912407f, 0.912378f, 0.912349f, 0.91232f,
+0.912291f, 0.912262f, 0.912233f, 0.912203f, 0.912174f, 0.912145f, 0.912116f, 0.912087f, 0.912058f, 0.912028f, 0.911999f, 0.91197f, 0.911941f, 0.911912f, 0.911883f, 0.911854f, 0.911824f, 0.911795f, 0.911766f, 0.911737f,
+0.911708f, 0.911679f, 0.91165f, 0.911621f, 0.911591f, 0.911562f, 0.911533f, 0.911504f, 0.911475f, 0.911446f, 0.911417f, 0.911387f, 0.911358f, 0.911329f, 0.9113f, 0.911271f, 0.911242f, 0.911213f, 0.911184f, 0.911154f,
+0.911125f, 0.911096f, 0.911067f, 0.911038f, 0.911009f, 0.91098f, 0.91095f, 0.910921f, 0.910892f, 0.910863f, 0.910834f, 0.910805f, 0.910776f, 0.910747f, 0.910717f, 0.910688f, 0.910659f, 0.91063f, 0.910601f, 0.910572f,
+0.910543f, 0.910514f, 0.910485f, 0.910455f, 0.910426f, 0.910397f, 0.910368f, 0.910339f, 0.91031f, 0.910281f, 0.910252f, 0.910222f, 0.910193f, 0.910164f, 0.910135f, 0.910106f, 0.910077f, 0.910048f, 0.910019f, 0.90999f,
+0.90996f, 0.909931f, 0.909902f, 0.909873f, 0.909844f, 0.909815f, 0.909786f, 0.909757f, 0.909728f, 0.909698f, 0.909669f, 0.90964f, 0.909611f, 0.909582f, 0.909553f, 0.909524f, 0.909495f, 0.909466f, 0.909436f, 0.909407f,
+0.909378f, 0.909349f, 0.90932f, 0.909291f, 0.909262f, 0.909233f, 0.909204f, 0.909175f, 0.909145f, 0.909116f, 0.909087f, 0.909058f, 0.909029f, 0.909f, 0.908971f, 0.908942f, 0.908913f, 0.908884f, 0.908855f, 0.908825f,
+0.908796f, 0.908767f, 0.908738f, 0.908709f, 0.90868f, 0.908651f, 0.908622f, 0.908593f, 0.908564f, 0.908535f, 0.908505f, 0.908476f, 0.908447f, 0.908418f, 0.908389f, 0.90836f, 0.908331f, 0.908302f, 0.908273f, 0.908244f,
+0.908215f, 0.908186f, 0.908156f, 0.908127f, 0.908098f, 0.908069f, 0.90804f, 0.908011f, 0.907982f, 0.907953f, 0.907924f, 0.907895f, 0.907866f, 0.907837f, 0.907807f, 0.907778f, 0.907749f, 0.90772f, 0.907691f, 0.907662f,
+0.907633f, 0.907604f, 0.907575f, 0.907546f, 0.907517f, 0.907488f, 0.907459f, 0.90743f, 0.9074f, 0.907371f, 0.907342f, 0.907313f, 0.907284f, 0.907255f, 0.907226f, 0.907197f, 0.907168f, 0.907139f, 0.90711f, 0.907081f,
+0.907052f, 0.907023f, 0.906993f, 0.906964f, 0.906935f, 0.906906f, 0.906877f, 0.906848f, 0.906819f, 0.90679f, 0.906761f, 0.906732f, 0.906703f, 0.906674f, 0.906645f, 0.906616f, 0.906587f, 0.906558f, 0.906529f, 0.906499f,
+0.90647f, 0.906441f, 0.906412f, 0.906383f, 0.906354f, 0.906325f, 0.906296f, 0.906267f, 0.906238f, 0.906209f, 0.90618f, 0.906151f, 0.906122f, 0.906093f, 0.906064f, 0.906035f, 0.906006f, 0.905977f, 0.905947f, 0.905918f,
+0.905889f, 0.90586f, 0.905831f, 0.905802f, 0.905773f, 0.905744f, 0.905715f, 0.905686f, 0.905657f, 0.905628f, 0.905599f, 0.90557f, 0.905541f, 0.905512f, 0.905483f, 0.905454f, 0.905425f, 0.905396f, 0.905367f, 0.905338f,
+0.905309f, 0.90528f, 0.905251f, 0.905221f, 0.905192f, 0.905163f, 0.905134f, 0.905105f, 0.905076f, 0.905047f, 0.905018f, 0.904989f, 0.90496f, 0.904931f, 0.904902f, 0.904873f, 0.904844f, 0.904815f, 0.904786f, 0.904757f,
+0.904728f, 0.904699f, 0.90467f, 0.904641f, 0.904612f, 0.904583f, 0.904554f, 0.904525f, 0.904496f, 0.904467f, 0.904438f, 0.904409f, 0.90438f, 0.904351f, 0.904322f, 0.904293f, 0.904264f, 0.904235f, 0.904206f, 0.904176f,
+0.904147f, 0.904118f, 0.904089f, 0.90406f, 0.904031f, 0.904002f, 0.903973f, 0.903944f, 0.903915f, 0.903886f, 0.903857f, 0.903828f, 0.903799f, 0.90377f, 0.903741f, 0.903712f, 0.903683f, 0.903654f, 0.903625f, 0.903596f,
+0.903567f, 0.903538f, 0.903509f, 0.90348f, 0.903451f, 0.903422f, 0.903393f, 0.903364f, 0.903335f, 0.903306f, 0.903277f, 0.903248f, 0.903219f, 0.90319f, 0.903161f, 0.903132f, 0.903103f, 0.903074f, 0.903045f, 0.903016f,
+0.902987f, 0.902958f, 0.902929f, 0.9029f, 0.902871f, 0.902842f, 0.902813f, 0.902784f, 0.902755f, 0.902726f, 0.902697f, 0.902668f, 0.902639f, 0.90261f, 0.902581f, 0.902552f, 0.902523f, 0.902494f, 0.902465f, 0.902436f,
+0.902407f, 0.902378f, 0.902349f, 0.90232f, 0.902291f, 0.902262f, 0.902233f, 0.902204f, 0.902175f, 0.902146f, 0.902117f, 0.902088f, 0.902059f, 0.90203f, 0.902001f, 0.901972f, 0.901943f, 0.901914f, 0.901885f, 0.901856f,
+0.901828f, 0.901799f, 0.90177f, 0.901741f, 0.901712f, 0.901683f, 0.901654f, 0.901625f, 0.901596f, 0.901567f, 0.901538f, 0.901509f, 0.90148f, 0.901451f, 0.901422f, 0.901393f, 0.901364f, 0.901335f, 0.901306f, 0.901277f,
+0.901248f, 0.901219f, 0.90119f, 0.901161f, 0.901132f, 0.901103f, 0.901074f, 0.901045f, 0.901016f, 0.900987f, 0.900958f, 0.900929f, 0.9009f, 0.900871f, 0.900842f, 0.900813f, 0.900785f, 0.900756f, 0.900727f, 0.900698f,
+0.900669f, 0.90064f, 0.900611f, 0.900582f, 0.900553f, 0.900524f, 0.900495f, 0.900466f, 0.900437f, 0.900408f, 0.900379f, 0.90035f, 0.900321f, 0.900292f, 0.900263f, 0.900234f, 0.900205f, 0.900176f, 0.900147f, 0.900118f,
+0.90009f, 0.900061f, 0.900032f, 0.900003f, 0.899974f, 0.899945f, 0.899916f, 0.899887f, 0.899858f, 0.899829f, 0.8998f, 0.899771f, 0.899742f, 0.899713f, 0.899684f, 0.899655f, 0.899626f, 0.899597f, 0.899568f, 0.899539f,
+0.899511f, 0.899482f, 0.899453f, 0.899424f, 0.899395f, 0.899366f, 0.899337f, 0.899308f, 0.899279f, 0.89925f, 0.899221f, 0.899192f, 0.899163f, 0.899134f, 0.899105f, 0.899076f, 0.899047f, 0.899019f, 0.89899f, 0.898961f,
+0.898932f, 0.898903f, 0.898874f, 0.898845f, 0.898816f, 0.898787f, 0.898758f, 0.898729f, 0.8987f, 0.898671f, 0.898642f, 0.898614f, 0.898585f, 0.898556f, 0.898527f, 0.898498f, 0.898469f, 0.89844f, 0.898411f, 0.898382f,
+0.898353f, 0.898324f, 0.898295f, 0.898266f, 0.898237f, 0.898209f, 0.89818f, 0.898151f, 0.898122f, 0.898093f, 0.898064f, 0.898035f, 0.898006f, 0.897977f, 0.897948f, 0.897919f, 0.89789f, 0.897862f, 0.897833f, 0.897804f,
+0.897775f, 0.897746f, 0.897717f, 0.897688f, 0.897659f, 0.89763f, 0.897601f, 0.897572f, 0.897543f, 0.897515f, 0.897486f, 0.897457f, 0.897428f, 0.897399f, 0.89737f, 0.897341f, 0.897312f, 0.897283f, 0.897254f, 0.897225f,
+0.897197f, 0.897168f, 0.897139f, 0.89711f, 0.897081f, 0.897052f, 0.897023f, 0.896994f, 0.896965f, 0.896936f, 0.896907f, 0.896879f, 0.89685f, 0.896821f, 0.896792f, 0.896763f, 0.896734f, 0.896705f, 0.896676f, 0.896647f,
+0.896619f, 0.89659f, 0.896561f, 0.896532f, 0.896503f, 0.896474f, 0.896445f, 0.896416f, 0.896387f, 0.896358f, 0.89633f, 0.896301f, 0.896272f, 0.896243f, 0.896214f, 0.896185f, 0.896156f, 0.896127f, 0.896098f, 0.89607f,
+0.896041f, 0.896012f, 0.895983f, 0.895954f, 0.895925f, 0.895896f, 0.895867f, 0.895838f, 0.89581f, 0.895781f, 0.895752f, 0.895723f, 0.895694f, 0.895665f, 0.895636f, 0.895607f, 0.895579f, 0.89555f, 0.895521f, 0.895492f,
+0.895463f, 0.895434f, 0.895405f, 0.895376f, 0.895347f, 0.895319f, 0.89529f, 0.895261f, 0.895232f, 0.895203f, 0.895174f, 0.895145f, 0.895116f, 0.895088f, 0.895059f, 0.89503f, 0.895001f, 0.894972f, 0.894943f, 0.894914f,
+0.894886f, 0.894857f, 0.894828f, 0.894799f, 0.89477f, 0.894741f, 0.894712f, 0.894683f, 0.894655f, 0.894626f, 0.894597f, 0.894568f, 0.894539f, 0.89451f, 0.894481f, 0.894453f, 0.894424f, 0.894395f, 0.894366f, 0.894337f,
+0.894308f, 0.894279f, 0.894251f, 0.894222f, 0.894193f, 0.894164f, 0.894135f, 0.894106f, 0.894077f, 0.894049f, 0.89402f, 0.893991f, 0.893962f, 0.893933f, 0.893904f, 0.893875f, 0.893847f, 0.893818f, 0.893789f, 0.89376f,
+0.893731f, 0.893702f, 0.893673f, 0.893645f, 0.893616f, 0.893587f, 0.893558f, 0.893529f, 0.8935f, 0.893471f, 0.893443f, 0.893414f, 0.893385f, 0.893356f, 0.893327f, 0.893298f, 0.89327f, 0.893241f, 0.893212f, 0.893183f,
+0.893154f, 0.893125f, 0.893097f, 0.893068f, 0.893039f, 0.89301f, 0.892981f, 0.892952f, 0.892923f, 0.892895f, 0.892866f, 0.892837f, 0.892808f, 0.892779f, 0.89275f, 0.892722f, 0.892693f, 0.892664f, 0.892635f, 0.892606f,
+0.892577f, 0.892549f, 0.89252f, 0.892491f, 0.892462f, 0.892433f, 0.892404f, 0.892376f, 0.892347f, 0.892318f, 0.892289f, 0.89226f, 0.892232f, 0.892203f, 0.892174f, 0.892145f, 0.892116f, 0.892087f, 0.892059f, 0.89203f,
+0.892001f, 0.891972f, 0.891943f, 0.891914f, 0.891886f, 0.891857f, 0.891828f, 0.891799f, 0.89177f, 0.891742f, 0.891713f, 0.891684f, 0.891655f, 0.891626f, 0.891597f, 0.891569f, 0.89154f, 0.891511f, 0.891482f, 0.891453f,
+0.891425f, 0.891396f, 0.891367f, 0.891338f, 0.891309f, 0.891281f, 0.891252f, 0.891223f, 0.891194f, 0.891165f, 0.891136f, 0.891108f, 0.891079f, 0.89105f, 0.891021f, 0.890992f, 0.890964f, 0.890935f, 0.890906f, 0.890877f,
+0.890848f, 0.89082f, 0.890791f, 0.890762f, 0.890733f, 0.890704f, 0.890676f, 0.890647f, 0.890618f, 0.890589f, 0.89056f, 0.890532f, 0.890503f, 0.890474f, 0.890445f, 0.890416f, 0.890388f, 0.890359f, 0.89033f, 0.890301f,
+0.890272f, 0.890244f, 0.890215f, 0.890186f, 0.890157f, 0.890128f, 0.8901f, 0.890071f, 0.890042f, 0.890013f, 0.889984f, 0.889956f, 0.889927f, 0.889898f, 0.889869f, 0.889841f, 0.889812f, 0.889783f, 0.889754f, 0.889725f,
+0.889697f, 0.889668f, 0.889639f, 0.88961f, 0.889581f, 0.889553f, 0.889524f, 0.889495f, 0.889466f, 0.889438f, 0.889409f, 0.88938f, 0.889351f, 0.889322f, 0.889294f, 0.889265f, 0.889236f, 0.889207f, 0.889179f, 0.88915f,
+0.889121f, 0.889092f, 0.889063f, 0.889035f, 0.889006f, 0.888977f, 0.888948f, 0.88892f, 0.888891f, 0.888862f, 0.888833f, 0.888804f, 0.888776f, 0.888747f, 0.888718f, 0.888689f, 0.888661f, 0.888632f, 0.888603f, 0.888574f,
+0.888546f, 0.888517f, 0.888488f, 0.888459f, 0.888431f, 0.888402f, 0.888373f, 0.888344f, 0.888315f, 0.888287f, 0.888258f, 0.888229f, 0.8882f, 0.888172f, 0.888143f, 0.888114f, 0.888085f, 0.888057f, 0.888028f, 0.887999f,
+0.88797f, 0.887942f, 0.887913f, 0.887884f, 0.887855f, 0.887827f, 0.887798f, 0.887769f, 0.88774f, 0.887712f, 0.887683f, 0.887654f, 0.887625f, 0.887597f, 0.887568f, 0.887539f, 0.88751f, 0.887482f, 0.887453f, 0.887424f,
+0.887395f, 0.887367f, 0.887338f, 0.887309f, 0.88728f, 0.887252f, 0.887223f, 0.887194f, 0.887165f, 0.887137f, 0.887108f, 0.887079f, 0.88705f, 0.887022f, 0.886993f, 0.886964f, 0.886935f, 0.886907f, 0.886878f, 0.886849f,
+0.88682f, 0.886792f, 0.886763f, 0.886734f, 0.886705f, 0.886677f, 0.886648f, 0.886619f, 0.886591f, 0.886562f, 0.886533f, 0.886504f, 0.886476f, 0.886447f, 0.886418f, 0.886389f, 0.886361f, 0.886332f, 0.886303f, 0.886274f,
+0.886246f, 0.886217f, 0.886188f, 0.88616f, 0.886131f, 0.886102f, 0.886073f, 0.886045f, 0.886016f, 0.885987f, 0.885958f, 0.88593f, 0.885901f, 0.885872f, 0.885844f, 0.885815f, 0.885786f, 0.885757f, 0.885729f, 0.8857f,
+0.885671f, 0.885643f, 0.885614f, 0.885585f, 0.885556f, 0.885528f, 0.885499f, 0.88547f, 0.885441f, 0.885413f, 0.885384f, 0.885355f, 0.885327f, 0.885298f, 0.885269f, 0.88524f, 0.885212f, 0.885183f, 0.885154f, 0.885126f,
+0.885097f, 0.885068f, 0.88504f, 0.885011f, 0.884982f, 0.884953f, 0.884925f, 0.884896f, 0.884867f, 0.884839f, 0.88481f, 0.884781f, 0.884752f, 0.884724f, 0.884695f, 0.884666f, 0.884638f, 0.884609f, 0.88458f, 0.884552f,
+0.884523f, 0.884494f, 0.884465f, 0.884437f, 0.884408f, 0.884379f, 0.884351f, 0.884322f, 0.884293f, 0.884265f, 0.884236f, 0.884207f, 0.884178f, 0.88415f, 0.884121f, 0.884092f, 0.884064f, 0.884035f, 0.884006f, 0.883978f,
+0.883949f, 0.88392f, 0.883891f, 0.883863f, 0.883834f, 0.883805f, 0.883777f, 0.883748f, 0.883719f, 0.883691f, 0.883662f, 0.883633f, 0.883605f, 0.883576f, 0.883547f, 0.883519f, 0.88349f, 0.883461f, 0.883432f, 0.883404f,
+0.883375f, 0.883346f, 0.883318f, 0.883289f, 0.88326f, 0.883232f, 0.883203f, 0.883174f, 0.883146f, 0.883117f, 0.883088f, 0.88306f, 0.883031f, 0.883002f, 0.882974f, 0.882945f, 0.882916f, 0.882888f, 0.882859f, 0.88283f,
+0.882802f, 0.882773f, 0.882744f, 0.882716f, 0.882687f, 0.882658f, 0.88263f, 0.882601f, 0.882572f, 0.882544f, 0.882515f, 0.882486f, 0.882457f, 0.882429f, 0.8824f, 0.882371f, 0.882343f, 0.882314f, 0.882285f, 0.882257f,
+0.882228f, 0.8822f, 0.882171f, 0.882142f, 0.882114f, 0.882085f, 0.882056f, 0.882028f, 0.881999f, 0.88197f, 0.881942f, 0.881913f, 0.881884f, 0.881856f, 0.881827f, 0.881798f, 0.88177f, 0.881741f, 0.881712f, 0.881684f,
+0.881655f, 0.881626f, 0.881598f, 0.881569f, 0.88154f, 0.881512f, 0.881483f, 0.881454f, 0.881426f, 0.881397f, 0.881368f, 0.88134f, 0.881311f, 0.881283f, 0.881254f, 0.881225f, 0.881197f, 0.881168f, 0.881139f, 0.881111f,
+0.881082f, 0.881053f, 0.881025f, 0.880996f, 0.880967f, 0.880939f, 0.88091f, 0.880881f, 0.880853f, 0.880824f, 0.880796f, 0.880767f, 0.880738f, 0.88071f, 0.880681f, 0.880652f, 0.880624f, 0.880595f, 0.880566f, 0.880538f,
+0.880509f, 0.880481f, 0.880452f, 0.880423f, 0.880395f, 0.880366f, 0.880337f, 0.880309f, 0.88028f, 0.880251f, 0.880223f, 0.880194f, 0.880166f, 0.880137f, 0.880108f, 0.88008f, 0.880051f, 0.880022f, 0.879994f, 0.879965f,
+0.879937f, 0.879908f, 0.879879f, 0.879851f, 0.879822f, 0.879793f, 0.879765f, 0.879736f, 0.879708f, 0.879679f, 0.87965f, 0.879622f, 0.879593f, 0.879564f, 0.879536f, 0.879507f, 0.879479f, 0.87945f, 0.879421f, 0.879393f,
+0.879364f, 0.879335f, 0.879307f, 0.879278f, 0.87925f, 0.879221f, 0.879192f, 0.879164f, 0.879135f, 0.879107f, 0.879078f, 0.879049f, 0.879021f, 0.878992f, 0.878963f, 0.878935f, 0.878906f, 0.878878f, 0.878849f, 0.87882f,
+0.878792f, 0.878763f, 0.878735f, 0.878706f, 0.878677f, 0.878649f, 0.87862f, 0.878592f, 0.878563f, 0.878534f, 0.878506f, 0.878477f, 0.878449f, 0.87842f, 0.878391f, 0.878363f, 0.878334f, 0.878306f, 0.878277f, 0.878248f,
+0.87822f, 0.878191f, 0.878163f, 0.878134f, 0.878105f, 0.878077f, 0.878048f, 0.87802f, 0.877991f, 0.877962f, 0.877934f, 0.877905f, 0.877877f, 0.877848f, 0.877819f, 0.877791f, 0.877762f, 0.877734f, 0.877705f, 0.877676f,
+0.877648f, 0.877619f, 0.877591f, 0.877562f, 0.877533f, 0.877505f, 0.877476f, 0.877448f, 0.877419f, 0.877391f, 0.877362f, 0.877333f, 0.877305f, 0.877276f, 0.877248f, 0.877219f, 0.87719f, 0.877162f, 0.877133f, 0.877105f,
+0.877076f, 0.877048f, 0.877019f, 0.87699f, 0.876962f, 0.876933f, 0.876905f, 0.876876f, 0.876848f, 0.876819f, 0.87679f, 0.876762f, 0.876733f, 0.876705f, 0.876676f, 0.876647f, 0.876619f, 0.87659f, 0.876562f, 0.876533f,
+0.876505f, 0.876476f, 0.876447f, 0.876419f, 0.87639f, 0.876362f, 0.876333f, 0.876305f, 0.876276f, 0.876248f, 0.876219f, 0.87619f, 0.876162f, 0.876133f, 0.876105f, 0.876076f, 0.876048f, 0.876019f, 0.87599f, 0.875962f,
+0.875933f, 0.875905f, 0.875876f, 0.875848f, 0.875819f, 0.875791f, 0.875762f, 0.875733f, 0.875705f, 0.875676f, 0.875648f, 0.875619f, 0.875591f, 0.875562f, 0.875533f, 0.875505f, 0.875476f, 0.875448f, 0.875419f, 0.875391f,
+0.875362f, 0.875334f, 0.875305f, 0.875277f, 0.875248f, 0.875219f, 0.875191f, 0.875162f, 0.875134f, 0.875105f, 0.875077f, 0.875048f, 0.87502f, 0.874991f, 0.874962f, 0.874934f, 0.874905f, 0.874877f, 0.874848f, 0.87482f,
+0.874791f, 0.874763f, 0.874734f, 0.874706f, 0.874677f, 0.874648f, 0.87462f, 0.874591f, 0.874563f, 0.874534f, 0.874506f, 0.874477f, 0.874449f, 0.87442f, 0.874392f, 0.874363f, 0.874335f, 0.874306f, 0.874278f, 0.874249f,
+0.87422f, 0.874192f, 0.874163f, 0.874135f, 0.874106f, 0.874078f, 0.874049f, 0.874021f, 0.873992f, 0.873964f, 0.873935f, 0.873907f, 0.873878f, 0.87385f, 0.873821f, 0.873792f, 0.873764f, 0.873735f, 0.873707f, 0.873678f,
+0.87365f, 0.873621f, 0.873593f, 0.873564f, 0.873536f, 0.873507f, 0.873479f, 0.87345f, 0.873422f, 0.873393f, 0.873365f, 0.873336f, 0.873308f, 0.873279f, 0.873251f, 0.873222f, 0.873194f, 0.873165f, 0.873136f, 0.873108f,
+0.873079f, 0.873051f, 0.873022f, 0.872994f, 0.872965f, 0.872937f, 0.872908f, 0.87288f, 0.872851f, 0.872823f, 0.872794f, 0.872766f, 0.872737f, 0.872709f, 0.87268f, 0.872652f, 0.872623f, 0.872595f, 0.872566f, 0.872538f,
+0.872509f, 0.872481f, 0.872452f, 0.872424f, 0.872395f, 0.872367f, 0.872338f, 0.87231f, 0.872281f, 0.872253f, 0.872224f, 0.872196f, 0.872167f, 0.872139f, 0.87211f, 0.872082f, 0.872053f, 0.872025f, 0.871996f, 0.871968f,
+0.871939f, 0.871911f, 0.871882f, 0.871854f, 0.871825f, 0.871797f, 0.871768f, 0.87174f, 0.871711f, 0.871683f, 0.871654f, 0.871626f, 0.871597f, 0.871569f, 0.87154f, 0.871512f, 0.871483f, 0.871455f, 0.871426f, 0.871398f,
+0.871369f, 0.871341f, 0.871312f, 0.871284f, 0.871255f, 0.871227f, 0.871198f, 0.87117f, 0.871141f, 0.871113f, 0.871085f, 0.871056f, 0.871028f, 0.870999f, 0.870971f, 0.870942f, 0.870914f, 0.870885f, 0.870857f, 0.870828f,
+0.8708f, 0.870771f, 0.870743f, 0.870714f, 0.870686f, 0.870657f, 0.870629f, 0.8706f, 0.870572f, 0.870543f, 0.870515f, 0.870486f, 0.870458f, 0.87043f, 0.870401f, 0.870373f, 0.870344f, 0.870316f, 0.870287f, 0.870259f,
+0.87023f, 0.870202f, 0.870173f, 0.870145f, 0.870116f, 0.870088f, 0.870059f, 0.870031f, 0.870003f, 0.869974f, 0.869946f, 0.869917f, 0.869889f, 0.86986f, 0.869832f, 0.869803f, 0.869775f, 0.869746f, 0.869718f, 0.869689f,
+0.869661f, 0.869633f, 0.869604f, 0.869576f, 0.869547f, 0.869519f, 0.86949f, 0.869462f, 0.869433f, 0.869405f, 0.869376f, 0.869348f, 0.869319f, 0.869291f, 0.869263f, 0.869234f, 0.869206f, 0.869177f, 0.869149f, 0.86912f,
+0.869092f, 0.869063f, 0.869035f, 0.869007f, 0.868978f, 0.86895f, 0.868921f, 0.868893f, 0.868864f, 0.868836f, 0.868807f, 0.868779f, 0.868751f, 0.868722f, 0.868694f, 0.868665f, 0.868637f, 0.868608f, 0.86858f, 0.868551f,
+0.868523f, 0.868495f, 0.868466f, 0.868438f, 0.868409f, 0.868381f, 0.868352f, 0.868324f, 0.868295f, 0.868267f, 0.868239f, 0.86821f, 0.868182f, 0.868153f, 0.868125f, 0.868096f, 0.868068f, 0.86804f, 0.868011f, 0.867983f,
+0.867954f, 0.867926f, 0.867897f, 0.867869f, 0.867841f, 0.867812f, 0.867784f, 0.867755f, 0.867727f, 0.867698f, 0.86767f, 0.867642f, 0.867613f, 0.867585f, 0.867556f, 0.867528f, 0.867499f, 0.867471f, 0.867443f, 0.867414f,
+0.867386f, 0.867357f, 0.867329f, 0.8673f, 0.867272f, 0.867244f, 0.867215f, 0.867187f, 0.867158f, 0.86713f, 0.867102f, 0.867073f, 0.867045f, 0.867016f, 0.866988f, 0.866959f, 0.866931f, 0.866903f, 0.866874f, 0.866846f,
+0.866817f, 0.866789f, 0.866761f, 0.866732f, 0.866704f, 0.866675f, 0.866647f, 0.866618f, 0.86659f, 0.866562f, 0.866533f, 0.866505f, 0.866476f, 0.866448f, 0.86642f, 0.866391f, 0.866363f, 0.866334f, 0.866306f, 0.866278f,
+0.866249f, 0.866221f, 0.866192f, 0.866164f, 0.866136f, 0.866107f, 0.866079f, 0.86605f, 0.866022f, 0.865994f, 0.865965f, 0.865937f, 0.865908f, 0.86588f, 0.865852f, 0.865823f, 0.865795f, 0.865766f, 0.865738f, 0.86571f,
+0.865681f, 0.865653f, 0.865624f, 0.865596f, 0.865568f, 0.865539f, 0.865511f, 0.865482f, 0.865454f, 0.865426f, 0.865397f, 0.865369f, 0.865341f, 0.865312f, 0.865284f, 0.865255f, 0.865227f, 0.865199f, 0.86517f, 0.865142f,
+0.865113f, 0.865085f, 0.865057f, 0.865028f, 0.865f, 0.864972f, 0.864943f, 0.864915f, 0.864886f, 0.864858f, 0.86483f, 0.864801f, 0.864773f, 0.864744f, 0.864716f, 0.864688f, 0.864659f, 0.864631f, 0.864603f, 0.864574f,
+0.864546f, 0.864517f, 0.864489f, 0.864461f, 0.864432f, 0.864404f, 0.864376f, 0.864347f, 0.864319f, 0.86429f, 0.864262f, 0.864234f, 0.864205f, 0.864177f, 0.864149f, 0.86412f, 0.864092f, 0.864064f, 0.864035f, 0.864007f,
+0.863978f, 0.86395f, 0.863922f, 0.863893f, 0.863865f, 0.863837f, 0.863808f, 0.86378f, 0.863752f, 0.863723f, 0.863695f, 0.863666f, 0.863638f, 0.86361f, 0.863581f, 0.863553f, 0.863525f, 0.863496f, 0.863468f, 0.86344f,
+0.863411f, 0.863383f, 0.863354f, 0.863326f, 0.863298f, 0.863269f, 0.863241f, 0.863213f, 0.863184f, 0.863156f, 0.863128f, 0.863099f, 0.863071f, 0.863043f, 0.863014f, 0.862986f, 0.862958f, 0.862929f, 0.862901f, 0.862872f,
+0.862844f, 0.862816f, 0.862787f, 0.862759f, 0.862731f, 0.862702f, 0.862674f, 0.862646f, 0.862617f, 0.862589f, 0.862561f, 0.862532f, 0.862504f, 0.862476f, 0.862447f, 0.862419f, 0.862391f, 0.862362f, 0.862334f, 0.862306f,
+0.862277f, 0.862249f, 0.862221f, 0.862192f, 0.862164f, 0.862136f, 0.862107f, 0.862079f, 0.862051f, 0.862022f, 0.861994f, 0.861966f, 0.861937f, 0.861909f, 0.861881f, 0.861852f, 0.861824f, 0.861796f, 0.861767f, 0.861739f,
+0.861711f, 0.861682f, 0.861654f, 0.861626f, 0.861597f, 0.861569f, 0.861541f, 0.861512f, 0.861484f, 0.861456f, 0.861427f, 0.861399f, 0.861371f, 0.861342f, 0.861314f, 0.861286f, 0.861257f, 0.861229f, 0.861201f, 0.861172f,
+0.861144f, 0.861116f, 0.861087f, 0.861059f, 0.861031f, 0.861003f, 0.860974f, 0.860946f, 0.860918f, 0.860889f, 0.860861f, 0.860833f, 0.860804f, 0.860776f, 0.860748f, 0.860719f, 0.860691f, 0.860663f, 0.860634f, 0.860606f,
+0.860578f, 0.86055f, 0.860521f, 0.860493f, 0.860465f, 0.860436f, 0.860408f, 0.86038f, 0.860351f, 0.860323f, 0.860295f, 0.860266f, 0.860238f, 0.86021f, 0.860182f, 0.860153f, 0.860125f, 0.860097f, 0.860068f, 0.86004f,
+0.860012f, 0.859983f, 0.859955f, 0.859927f, 0.859899f, 0.85987f, 0.859842f, 0.859814f, 0.859785f, 0.859757f, 0.859729f, 0.8597f, 0.859672f, 0.859644f, 0.859616f, 0.859587f, 0.859559f, 0.859531f, 0.859502f, 0.859474f,
+0.859446f, 0.859417f, 0.859389f, 0.859361f, 0.859333f, 0.859304f, 0.859276f, 0.859248f, 0.859219f, 0.859191f, 0.859163f, 0.859135f, 0.859106f, 0.859078f, 0.85905f, 0.859021f, 0.858993f, 0.858965f, 0.858937f, 0.858908f,
+0.85888f, 0.858852f, 0.858823f, 0.858795f, 0.858767f, 0.858739f, 0.85871f, 0.858682f, 0.858654f, 0.858626f, 0.858597f, 0.858569f, 0.858541f, 0.858512f, 0.858484f, 0.858456f, 0.858428f, 0.858399f, 0.858371f, 0.858343f,
+0.858314f, 0.858286f, 0.858258f, 0.85823f, 0.858201f, 0.858173f, 0.858145f, 0.858117f, 0.858088f, 0.85806f, 0.858032f, 0.858004f, 0.857975f, 0.857947f, 0.857919f, 0.85789f, 0.857862f, 0.857834f, 0.857806f, 0.857777f,
+0.857749f, 0.857721f, 0.857693f, 0.857664f, 0.857636f, 0.857608f, 0.85758f, 0.857551f, 0.857523f, 0.857495f, 0.857467f, 0.857438f, 0.85741f, 0.857382f, 0.857353f, 0.857325f, 0.857297f, 0.857269f, 0.85724f, 0.857212f,
+0.857184f, 0.857156f, 0.857127f, 0.857099f, 0.857071f, 0.857043f, 0.857014f, 0.856986f, 0.856958f, 0.85693f, 0.856901f, 0.856873f, 0.856845f, 0.856817f, 0.856788f, 0.85676f, 0.856732f, 0.856704f, 0.856675f, 0.856647f,
+0.856619f, 0.856591f, 0.856562f, 0.856534f, 0.856506f, 0.856478f, 0.856449f, 0.856421f, 0.856393f, 0.856365f, 0.856337f, 0.856308f, 0.85628f, 0.856252f, 0.856224f, 0.856195f, 0.856167f, 0.856139f, 0.856111f, 0.856082f,
+0.856054f, 0.856026f, 0.855998f, 0.855969f, 0.855941f, 0.855913f, 0.855885f, 0.855856f, 0.855828f, 0.8558f, 0.855772f, 0.855744f, 0.855715f, 0.855687f, 0.855659f, 0.855631f, 0.855602f, 0.855574f, 0.855546f, 0.855518f,
+0.85549f, 0.855461f, 0.855433f, 0.855405f, 0.855377f, 0.855348f, 0.85532f, 0.855292f, 0.855264f, 0.855235f, 0.855207f, 0.855179f, 0.855151f, 0.855123f, 0.855094f, 0.855066f, 0.855038f, 0.85501f, 0.854982f, 0.854953f,
+0.854925f, 0.854897f, 0.854869f, 0.85484f, 0.854812f, 0.854784f, 0.854756f, 0.854728f, 0.854699f, 0.854671f, 0.854643f, 0.854615f, 0.854586f, 0.854558f, 0.85453f, 0.854502f, 0.854474f, 0.854445f, 0.854417f, 0.854389f,
+0.854361f, 0.854333f, 0.854304f, 0.854276f, 0.854248f, 0.85422f, 0.854192f, 0.854163f, 0.854135f, 0.854107f, 0.854079f, 0.854051f, 0.854022f, 0.853994f, 0.853966f, 0.853938f, 0.85391f, 0.853881f, 0.853853f, 0.853825f,
+0.853797f, 0.853769f, 0.85374f, 0.853712f, 0.853684f, 0.853656f, 0.853628f, 0.853599f, 0.853571f, 0.853543f, 0.853515f, 0.853487f, 0.853458f, 0.85343f, 0.853402f, 0.853374f, 0.853346f, 0.853317f, 0.853289f, 0.853261f,
+0.853233f, 0.853205f, 0.853176f, 0.853148f, 0.85312f, 0.853092f, 0.853064f, 0.853036f, 0.853007f, 0.852979f, 0.852951f, 0.852923f, 0.852895f, 0.852866f, 0.852838f, 0.85281f, 0.852782f, 0.852754f, 0.852726f, 0.852697f,
+0.852669f, 0.852641f, 0.852613f, 0.852585f, 0.852556f, 0.852528f, 0.8525f, 0.852472f, 0.852444f, 0.852416f, 0.852387f, 0.852359f, 0.852331f, 0.852303f, 0.852275f, 0.852247f, 0.852218f, 0.85219f, 0.852162f, 0.852134f,
+0.852106f, 0.852078f, 0.852049f, 0.852021f, 0.851993f, 0.851965f, 0.851937f, 0.851908f, 0.85188f, 0.851852f, 0.851824f, 0.851796f, 0.851768f, 0.851739f, 0.851711f, 0.851683f, 0.851655f, 0.851627f, 0.851599f, 0.851571f,
+0.851542f, 0.851514f, 0.851486f, 0.851458f, 0.85143f, 0.851402f, 0.851373f, 0.851345f, 0.851317f, 0.851289f, 0.851261f, 0.851233f, 0.851204f, 0.851176f, 0.851148f, 0.85112f, 0.851092f, 0.851064f, 0.851036f, 0.851007f,
+0.850979f, 0.850951f, 0.850923f, 0.850895f, 0.850867f, 0.850838f, 0.85081f, 0.850782f, 0.850754f, 0.850726f, 0.850698f, 0.85067f, 0.850641f, 0.850613f, 0.850585f, 0.850557f, 0.850529f, 0.850501f, 0.850473f, 0.850444f,
+0.850416f, 0.850388f, 0.85036f, 0.850332f, 0.850304f, 0.850276f, 0.850247f, 0.850219f, 0.850191f, 0.850163f, 0.850135f, 0.850107f, 0.850079f, 0.85005f, 0.850022f, 0.849994f, 0.849966f, 0.849938f, 0.84991f, 0.849882f,
+0.849854f, 0.849825f, 0.849797f, 0.849769f, 0.849741f, 0.849713f, 0.849685f, 0.849657f, 0.849628f, 0.8496f, 0.849572f, 0.849544f, 0.849516f, 0.849488f, 0.84946f, 0.849432f, 0.849403f, 0.849375f, 0.849347f, 0.849319f,
+0.849291f, 0.849263f, 0.849235f, 0.849207f, 0.849178f, 0.84915f, 0.849122f, 0.849094f, 0.849066f, 0.849038f, 0.84901f, 0.848982f, 0.848953f, 0.848925f, 0.848897f, 0.848869f, 0.848841f, 0.848813f, 0.848785f, 0.848757f,
+0.848729f, 0.8487f, 0.848672f, 0.848644f, 0.848616f, 0.848588f, 0.84856f, 0.848532f, 0.848504f, 0.848476f, 0.848447f, 0.848419f, 0.848391f, 0.848363f, 0.848335f, 0.848307f, 0.848279f, 0.848251f, 0.848223f, 0.848194f,
+0.848166f, 0.848138f, 0.84811f, 0.848082f, 0.848054f, 0.848026f, 0.847998f, 0.84797f, 0.847942f, 0.847913f, 0.847885f, 0.847857f, 0.847829f, 0.847801f, 0.847773f, 0.847745f, 0.847717f, 0.847689f, 0.847661f, 0.847632f,
+0.847604f, 0.847576f, 0.847548f, 0.84752f, 0.847492f, 0.847464f, 0.847436f, 0.847408f, 0.84738f, 0.847351f, 0.847323f, 0.847295f, 0.847267f, 0.847239f, 0.847211f, 0.847183f, 0.847155f, 0.847127f, 0.847099f, 0.847071f,
+0.847043f, 0.847014f, 0.846986f, 0.846958f, 0.84693f, 0.846902f, 0.846874f, 0.846846f, 0.846818f, 0.84679f, 0.846762f, 0.846734f, 0.846705f, 0.846677f, 0.846649f, 0.846621f, 0.846593f, 0.846565f, 0.846537f, 0.846509f,
+0.846481f, 0.846453f, 0.846425f, 0.846397f, 0.846369f, 0.84634f, 0.846312f, 0.846284f, 0.846256f, 0.846228f, 0.8462f, 0.846172f, 0.846144f, 0.846116f, 0.846088f, 0.84606f, 0.846032f, 0.846004f, 0.845976f, 0.845947f,
+0.845919f, 0.845891f, 0.845863f, 0.845835f, 0.845807f, 0.845779f, 0.845751f, 0.845723f, 0.845695f, 0.845667f, 0.845639f, 0.845611f, 0.845583f, 0.845555f, 0.845526f, 0.845498f, 0.84547f, 0.845442f, 0.845414f, 0.845386f,
+0.845358f, 0.84533f, 0.845302f, 0.845274f, 0.845246f, 0.845218f, 0.84519f, 0.845162f, 0.845134f, 0.845106f, 0.845078f, 0.84505f, 0.845021f, 0.844993f, 0.844965f, 0.844937f, 0.844909f, 0.844881f, 0.844853f, 0.844825f,
+0.844797f, 0.844769f, 0.844741f, 0.844713f, 0.844685f, 0.844657f, 0.844629f, 0.844601f, 0.844573f, 0.844545f, 0.844517f, 0.844489f, 0.84446f, 0.844432f, 0.844404f, 0.844376f, 0.844348f, 0.84432f, 0.844292f, 0.844264f,
+0.844236f, 0.844208f, 0.84418f, 0.844152f, 0.844124f, 0.844096f, 0.844068f, 0.84404f, 0.844012f, 0.843984f, 0.843956f, 0.843928f, 0.8439f, 0.843872f, 0.843844f, 0.843816f, 0.843788f, 0.84376f, 0.843732f, 0.843703f,
+0.843675f, 0.843647f, 0.843619f, 0.843591f, 0.843563f, 0.843535f, 0.843507f, 0.843479f, 0.843451f, 0.843423f, 0.843395f, 0.843367f, 0.843339f, 0.843311f, 0.843283f, 0.843255f, 0.843227f, 0.843199f, 0.843171f, 0.843143f,
+0.843115f, 0.843087f, 0.843059f, 0.843031f, 0.843003f, 0.842975f, 0.842947f, 0.842919f, 0.842891f, 0.842863f, 0.842835f, 0.842807f, 0.842779f, 0.842751f, 0.842723f, 0.842695f, 0.842667f, 0.842639f, 0.842611f, 0.842583f,
+0.842555f, 0.842527f, 0.842499f, 0.842471f, 0.842443f, 0.842415f, 0.842387f, 0.842358f, 0.84233f, 0.842302f, 0.842274f, 0.842246f, 0.842218f, 0.84219f, 0.842162f, 0.842134f, 0.842106f, 0.842078f, 0.84205f, 0.842022f,
+0.841994f, 0.841966f, 0.841938f, 0.84191f, 0.841882f, 0.841854f, 0.841826f, 0.841798f, 0.84177f, 0.841742f, 0.841714f, 0.841686f, 0.841658f, 0.84163f, 0.841602f, 0.841574f, 0.841546f, 0.841518f, 0.84149f, 0.841462f,
+0.841434f, 0.841406f, 0.841378f, 0.84135f, 0.841322f, 0.841294f, 0.841266f, 0.841239f, 0.841211f, 0.841183f, 0.841155f, 0.841127f, 0.841099f, 0.841071f, 0.841043f, 0.841015f, 0.840987f, 0.840959f, 0.840931f, 0.840903f,
+0.840875f, 0.840847f, 0.840819f, 0.840791f, 0.840763f, 0.840735f, 0.840707f, 0.840679f, 0.840651f, 0.840623f, 0.840595f, 0.840567f, 0.840539f, 0.840511f, 0.840483f, 0.840455f, 0.840427f, 0.840399f, 0.840371f, 0.840343f,
+0.840315f, 0.840287f, 0.840259f, 0.840231f, 0.840203f, 0.840175f, 0.840147f, 0.840119f, 0.840091f, 0.840063f, 0.840035f, 0.840007f, 0.839979f, 0.839951f, 0.839923f, 0.839896f, 0.839868f, 0.83984f, 0.839812f, 0.839784f,
+0.839756f, 0.839728f, 0.8397f, 0.839672f, 0.839644f, 0.839616f, 0.839588f, 0.83956f, 0.839532f, 0.839504f, 0.839476f, 0.839448f, 0.83942f, 0.839392f, 0.839364f, 0.839336f, 0.839308f, 0.83928f, 0.839252f, 0.839224f,
+0.839196f, 0.839168f, 0.839141f, 0.839113f, 0.839085f, 0.839057f, 0.839029f, 0.839001f, 0.838973f, 0.838945f, 0.838917f, 0.838889f, 0.838861f, 0.838833f, 0.838805f, 0.838777f, 0.838749f, 0.838721f, 0.838693f, 0.838665f,
+0.838637f, 0.838609f, 0.838582f, 0.838554f, 0.838526f, 0.838498f, 0.83847f, 0.838442f, 0.838414f, 0.838386f, 0.838358f, 0.83833f, 0.838302f, 0.838274f, 0.838246f, 0.838218f, 0.83819f, 0.838162f, 0.838134f, 0.838107f,
+0.838079f, 0.838051f, 0.838023f, 0.837995f, 0.837967f, 0.837939f, 0.837911f, 0.837883f, 0.837855f, 0.837827f, 0.837799f, 0.837771f, 0.837743f, 0.837715f, 0.837687f, 0.83766f, 0.837632f, 0.837604f, 0.837576f, 0.837548f,
+0.83752f, 0.837492f, 0.837464f, 0.837436f, 0.837408f, 0.83738f, 0.837352f, 0.837324f, 0.837296f, 0.837269f, 0.837241f, 0.837213f, 0.837185f, 0.837157f, 0.837129f, 0.837101f, 0.837073f, 0.837045f, 0.837017f, 0.836989f,
+0.836961f, 0.836934f, 0.836906f, 0.836878f, 0.83685f, 0.836822f, 0.836794f, 0.836766f, 0.836738f, 0.83671f, 0.836682f, 0.836654f, 0.836626f, 0.836599f, 0.836571f, 0.836543f, 0.836515f, 0.836487f, 0.836459f, 0.836431f,
+0.836403f, 0.836375f, 0.836347f, 0.836319f, 0.836291f, 0.836264f, 0.836236f, 0.836208f, 0.83618f, 0.836152f, 0.836124f, 0.836096f, 0.836068f, 0.83604f, 0.836012f, 0.835985f, 0.835957f, 0.835929f, 0.835901f, 0.835873f,
+0.835845f, 0.835817f, 0.835789f, 0.835761f, 0.835733f, 0.835706f, 0.835678f, 0.83565f, 0.835622f, 0.835594f, 0.835566f, 0.835538f, 0.83551f, 0.835482f, 0.835454f, 0.835427f, 0.835399f, 0.835371f, 0.835343f, 0.835315f,
+0.835287f, 0.835259f, 0.835231f, 0.835203f, 0.835176f, 0.835148f, 0.83512f, 0.835092f, 0.835064f, 0.835036f, 0.835008f, 0.83498f, 0.834952f, 0.834925f, 0.834897f, 0.834869f, 0.834841f, 0.834813f, 0.834785f, 0.834757f,
+0.834729f, 0.834701f, 0.834674f, 0.834646f, 0.834618f, 0.83459f, 0.834562f, 0.834534f, 0.834506f, 0.834478f, 0.834451f, 0.834423f, 0.834395f, 0.834367f, 0.834339f, 0.834311f, 0.834283f, 0.834255f, 0.834228f, 0.8342f,
+0.834172f, 0.834144f, 0.834116f, 0.834088f, 0.83406f, 0.834032f, 0.834005f, 0.833977f, 0.833949f, 0.833921f, 0.833893f, 0.833865f, 0.833837f, 0.83381f, 0.833782f, 0.833754f, 0.833726f, 0.833698f, 0.83367f, 0.833642f,
+0.833614f, 0.833587f, 0.833559f, 0.833531f, 0.833503f, 0.833475f, 0.833447f, 0.833419f, 0.833392f, 0.833364f, 0.833336f, 0.833308f, 0.83328f, 0.833252f, 0.833224f, 0.833197f, 0.833169f, 0.833141f, 0.833113f, 0.833085f,
+0.833057f, 0.833029f, 0.833002f, 0.832974f, 0.832946f, 0.832918f, 0.83289f, 0.832862f, 0.832834f, 0.832807f, 0.832779f, 0.832751f, 0.832723f, 0.832695f, 0.832667f, 0.83264f, 0.832612f, 0.832584f, 0.832556f, 0.832528f,
+0.8325f, 0.832472f, 0.832445f, 0.832417f, 0.832389f, 0.832361f, 0.832333f, 0.832305f, 0.832278f, 0.83225f, 0.832222f, 0.832194f, 0.832166f, 0.832138f, 0.832111f, 0.832083f, 0.832055f, 0.832027f, 0.831999f, 0.831971f,
+0.831944f, 0.831916f, 0.831888f, 0.83186f, 0.831832f, 0.831804f, 0.831777f, 0.831749f, 0.831721f, 0.831693f, 0.831665f, 0.831637f, 0.83161f, 0.831582f, 0.831554f, 0.831526f, 0.831498f, 0.83147f, 0.831443f, 0.831415f,
+0.831387f, 0.831359f, 0.831331f, 0.831303f, 0.831276f, 0.831248f, 0.83122f, 0.831192f, 0.831164f, 0.831136f, 0.831109f, 0.831081f, 0.831053f, 0.831025f, 0.830997f, 0.83097f, 0.830942f, 0.830914f, 0.830886f, 0.830858f,
+0.83083f, 0.830803f, 0.830775f, 0.830747f, 0.830719f, 0.830691f, 0.830664f, 0.830636f, 0.830608f, 0.83058f, 0.830552f, 0.830525f, 0.830497f, 0.830469f, 0.830441f, 0.830413f, 0.830385f, 0.830358f, 0.83033f, 0.830302f,
+0.830274f, 0.830246f, 0.830219f, 0.830191f, 0.830163f, 0.830135f, 0.830107f, 0.83008f, 0.830052f, 0.830024f, 0.829996f, 0.829968f, 0.829941f, 0.829913f, 0.829885f, 0.829857f, 0.829829f, 0.829802f, 0.829774f, 0.829746f,
+0.829718f, 0.82969f, 0.829663f, 0.829635f, 0.829607f, 0.829579f, 0.829551f, 0.829524f, 0.829496f, 0.829468f, 0.82944f, 0.829412f, 0.829385f, 0.829357f, 0.829329f, 0.829301f, 0.829273f, 0.829246f, 0.829218f, 0.82919f,
+0.829162f, 0.829135f, 0.829107f, 0.829079f, 0.829051f, 0.829023f, 0.828996f, 0.828968f, 0.82894f, 0.828912f, 0.828884f, 0.828857f, 0.828829f, 0.828801f, 0.828773f, 0.828746f, 0.828718f, 0.82869f, 0.828662f, 0.828634f,
+0.828607f, 0.828579f, 0.828551f, 0.828523f, 0.828496f, 0.828468f, 0.82844f, 0.828412f, 0.828384f, 0.828357f, 0.828329f, 0.828301f, 0.828273f, 0.828246f, 0.828218f, 0.82819f, 0.828162f, 0.828134f, 0.828107f, 0.828079f,
+0.828051f, 0.828023f, 0.827996f, 0.827968f, 0.82794f, 0.827912f, 0.827885f, 0.827857f, 0.827829f, 0.827801f, 0.827773f, 0.827746f, 0.827718f, 0.82769f, 0.827662f, 0.827635f, 0.827607f, 0.827579f, 0.827551f, 0.827524f,
+0.827496f, 0.827468f, 0.82744f, 0.827413f, 0.827385f, 0.827357f, 0.827329f, 0.827301f, 0.827274f, 0.827246f, 0.827218f, 0.82719f, 0.827163f, 0.827135f, 0.827107f, 0.827079f, 0.827052f, 0.827024f, 0.826996f, 0.826968f,
+0.826941f, 0.826913f, 0.826885f, 0.826857f, 0.82683f, 0.826802f, 0.826774f, 0.826746f, 0.826719f, 0.826691f, 0.826663f, 0.826635f, 0.826608f, 0.82658f, 0.826552f, 0.826524f, 0.826497f, 0.826469f, 0.826441f, 0.826413f,
+0.826386f, 0.826358f, 0.82633f, 0.826303f, 0.826275f, 0.826247f, 0.826219f, 0.826192f, 0.826164f, 0.826136f, 0.826108f, 0.826081f, 0.826053f, 0.826025f, 0.825997f, 0.82597f, 0.825942f, 0.825914f, 0.825886f, 0.825859f,
+0.825831f, 0.825803f, 0.825776f, 0.825748f, 0.82572f, 0.825692f, 0.825665f, 0.825637f, 0.825609f, 0.825581f, 0.825554f, 0.825526f, 0.825498f, 0.825471f, 0.825443f, 0.825415f, 0.825387f, 0.82536f, 0.825332f, 0.825304f,
+0.825276f, 0.825249f, 0.825221f, 0.825193f, 0.825166f, 0.825138f, 0.82511f, 0.825082f, 0.825055f, 0.825027f, 0.824999f, 0.824972f, 0.824944f, 0.824916f, 0.824888f, 0.824861f, 0.824833f, 0.824805f, 0.824777f, 0.82475f,
+0.824722f, 0.824694f, 0.824667f, 0.824639f, 0.824611f, 0.824583f, 0.824556f, 0.824528f, 0.8245f, 0.824473f, 0.824445f, 0.824417f, 0.82439f, 0.824362f, 0.824334f, 0.824306f, 0.824279f, 0.824251f, 0.824223f, 0.824196f,
+0.824168f, 0.82414f, 0.824112f, 0.824085f, 0.824057f, 0.824029f, 0.824002f, 0.823974f, 0.823946f, 0.823919f, 0.823891f, 0.823863f, 0.823835f, 0.823808f, 0.82378f, 0.823752f, 0.823725f, 0.823697f, 0.823669f, 0.823642f,
+0.823614f, 0.823586f, 0.823558f, 0.823531f, 0.823503f, 0.823475f, 0.823448f, 0.82342f, 0.823392f, 0.823365f, 0.823337f, 0.823309f, 0.823282f, 0.823254f, 0.823226f, 0.823198f, 0.823171f, 0.823143f, 0.823115f, 0.823088f,
+0.82306f, 0.823032f, 0.823005f, 0.822977f, 0.822949f, 0.822922f, 0.822894f, 0.822866f, 0.822839f, 0.822811f, 0.822783f, 0.822756f, 0.822728f, 0.8227f, 0.822672f, 0.822645f, 0.822617f, 0.822589f, 0.822562f, 0.822534f,
+0.822506f, 0.822479f, 0.822451f, 0.822423f, 0.822396f, 0.822368f, 0.82234f, 0.822313f, 0.822285f, 0.822257f, 0.82223f, 0.822202f, 0.822174f, 0.822147f, 0.822119f, 0.822091f, 0.822064f, 0.822036f, 0.822008f, 0.821981f,
+0.821953f, 0.821925f, 0.821898f, 0.82187f, 0.821842f, 0.821815f, 0.821787f, 0.821759f, 0.821732f, 0.821704f, 0.821676f, 0.821649f, 0.821621f, 0.821593f, 0.821566f, 0.821538f, 0.82151f, 0.821483f, 0.821455f, 0.821427f,
+0.8214f, 0.821372f, 0.821344f, 0.821317f, 0.821289f, 0.821261f, 0.821234f, 0.821206f, 0.821178f, 0.821151f, 0.821123f, 0.821095f, 0.821068f, 0.82104f, 0.821013f, 0.820985f, 0.820957f, 0.82093f, 0.820902f, 0.820874f,
+0.820847f, 0.820819f, 0.820791f, 0.820764f, 0.820736f, 0.820708f, 0.820681f, 0.820653f, 0.820625f, 0.820598f, 0.82057f, 0.820543f, 0.820515f, 0.820487f, 0.82046f, 0.820432f, 0.820404f, 0.820377f, 0.820349f, 0.820321f,
+0.820294f, 0.820266f, 0.820238f, 0.820211f, 0.820183f, 0.820156f, 0.820128f, 0.8201f, 0.820073f, 0.820045f, 0.820017f, 0.81999f, 0.819962f, 0.819934f, 0.819907f, 0.819879f, 0.819852f, 0.819824f, 0.819796f, 0.819769f,
+0.819741f, 0.819713f, 0.819686f, 0.819658f, 0.819631f, 0.819603f, 0.819575f, 0.819548f, 0.81952f, 0.819492f, 0.819465f, 0.819437f, 0.819409f, 0.819382f, 0.819354f, 0.819327f, 0.819299f, 0.819271f, 0.819244f, 0.819216f,
+0.819189f, 0.819161f, 0.819133f, 0.819106f, 0.819078f, 0.81905f, 0.819023f, 0.818995f, 0.818968f, 0.81894f, 0.818912f, 0.818885f, 0.818857f, 0.818829f, 0.818802f, 0.818774f, 0.818747f, 0.818719f, 0.818691f, 0.818664f,
+0.818636f, 0.818609f, 0.818581f, 0.818553f, 0.818526f, 0.818498f, 0.818471f, 0.818443f, 0.818415f, 0.818388f, 0.81836f, 0.818332f, 0.818305f, 0.818277f, 0.81825f, 0.818222f, 0.818194f, 0.818167f, 0.818139f, 0.818112f,
+0.818084f, 0.818056f, 0.818029f, 0.818001f, 0.817974f, 0.817946f, 0.817918f, 0.817891f, 0.817863f, 0.817836f, 0.817808f, 0.81778f, 0.817753f, 0.817725f, 0.817698f, 0.81767f, 0.817642f, 0.817615f, 0.817587f, 0.81756f,
+0.817532f, 0.817504f, 0.817477f, 0.817449f, 0.817422f, 0.817394f, 0.817367f, 0.817339f, 0.817311f, 0.817284f, 0.817256f, 0.817229f, 0.817201f, 0.817173f, 0.817146f, 0.817118f, 0.817091f, 0.817063f, 0.817035f, 0.817008f,
+0.81698f, 0.816953f, 0.816925f, 0.816898f, 0.81687f, 0.816842f, 0.816815f, 0.816787f, 0.81676f, 0.816732f, 0.816704f, 0.816677f, 0.816649f, 0.816622f, 0.816594f, 0.816567f, 0.816539f, 0.816511f, 0.816484f, 0.816456f,
+0.816429f, 0.816401f, 0.816374f, 0.816346f, 0.816318f, 0.816291f, 0.816263f, 0.816236f, 0.816208f, 0.816181f, 0.816153f, 0.816125f, 0.816098f, 0.81607f, 0.816043f, 0.816015f, 0.815988f, 0.81596f, 0.815932f, 0.815905f,
+0.815877f, 0.81585f, 0.815822f, 0.815795f, 0.815767f, 0.81574f, 0.815712f, 0.815684f, 0.815657f, 0.815629f, 0.815602f, 0.815574f, 0.815547f, 0.815519f, 0.815491f, 0.815464f, 0.815436f, 0.815409f, 0.815381f, 0.815354f,
+0.815326f, 0.815299f, 0.815271f, 0.815243f, 0.815216f, 0.815188f, 0.815161f, 0.815133f, 0.815106f, 0.815078f, 0.815051f, 0.815023f, 0.814995f, 0.814968f, 0.81494f, 0.814913f, 0.814885f, 0.814858f, 0.81483f, 0.814803f,
+0.814775f, 0.814748f, 0.81472f, 0.814692f, 0.814665f, 0.814637f, 0.81461f, 0.814582f, 0.814555f, 0.814527f, 0.8145f, 0.814472f, 0.814445f, 0.814417f, 0.814389f, 0.814362f, 0.814334f, 0.814307f, 0.814279f, 0.814252f,
+0.814224f, 0.814197f, 0.814169f, 0.814142f, 0.814114f, 0.814087f, 0.814059f, 0.814031f, 0.814004f, 0.813976f, 0.813949f, 0.813921f, 0.813894f, 0.813866f, 0.813839f, 0.813811f, 0.813784f, 0.813756f, 0.813729f, 0.813701f,
+0.813674f, 0.813646f, 0.813619f, 0.813591f, 0.813563f, 0.813536f, 0.813508f, 0.813481f, 0.813453f, 0.813426f, 0.813398f, 0.813371f, 0.813343f, 0.813316f, 0.813288f, 0.813261f, 0.813233f, 0.813206f, 0.813178f, 0.813151f,
+0.813123f, 0.813096f, 0.813068f, 0.813041f, 0.813013f, 0.812986f, 0.812958f, 0.812931f, 0.812903f, 0.812875f, 0.812848f, 0.81282f, 0.812793f, 0.812765f, 0.812738f, 0.81271f, 0.812683f, 0.812655f, 0.812628f, 0.8126f,
+0.812573f, 0.812545f, 0.812518f, 0.81249f, 0.812463f, 0.812435f, 0.812408f, 0.81238f, 0.812353f, 0.812325f, 0.812298f, 0.81227f, 0.812243f, 0.812215f, 0.812188f, 0.81216f, 0.812133f, 0.812105f, 0.812078f, 0.81205f,
+0.812023f, 0.811995f, 0.811968f, 0.81194f, 0.811913f, 0.811885f, 0.811858f, 0.81183f, 0.811803f, 0.811775f, 0.811748f, 0.81172f, 0.811693f, 0.811665f, 0.811638f, 0.81161f, 0.811583f, 0.811555f, 0.811528f, 0.8115f,
+0.811473f, 0.811445f, 0.811418f, 0.81139f, 0.811363f, 0.811335f, 0.811308f, 0.81128f, 0.811253f, 0.811225f, 0.811198f, 0.81117f, 0.811143f, 0.811115f, 0.811088f, 0.811061f, 0.811033f, 0.811006f, 0.810978f, 0.810951f,
+0.810923f, 0.810896f, 0.810868f, 0.810841f, 0.810813f, 0.810786f, 0.810758f, 0.810731f, 0.810703f, 0.810676f, 0.810648f, 0.810621f, 0.810593f, 0.810566f, 0.810538f, 0.810511f, 0.810483f, 0.810456f, 0.810429f, 0.810401f,
+0.810374f, 0.810346f, 0.810319f, 0.810291f, 0.810264f, 0.810236f, 0.810209f, 0.810181f, 0.810154f, 0.810126f, 0.810099f, 0.810071f, 0.810044f, 0.810016f, 0.809989f, 0.809962f, 0.809934f, 0.809907f, 0.809879f, 0.809852f,
+0.809824f, 0.809797f, 0.809769f, 0.809742f, 0.809714f, 0.809687f, 0.809659f, 0.809632f, 0.809605f, 0.809577f, 0.80955f, 0.809522f, 0.809495f, 0.809467f, 0.80944f, 0.809412f, 0.809385f, 0.809357f, 0.80933f, 0.809303f,
+0.809275f, 0.809248f, 0.80922f, 0.809193f, 0.809165f, 0.809138f, 0.80911f, 0.809083f, 0.809055f, 0.809028f, 0.809001f, 0.808973f, 0.808946f, 0.808918f, 0.808891f, 0.808863f, 0.808836f, 0.808808f, 0.808781f, 0.808754f,
+0.808726f, 0.808699f, 0.808671f, 0.808644f, 0.808616f, 0.808589f, 0.808561f, 0.808534f, 0.808507f, 0.808479f, 0.808452f, 0.808424f, 0.808397f, 0.808369f, 0.808342f, 0.808314f, 0.808287f, 0.80826f, 0.808232f, 0.808205f,
+0.808177f, 0.80815f, 0.808122f, 0.808095f, 0.808068f, 0.80804f, 0.808013f, 0.807985f, 0.807958f, 0.80793f, 0.807903f, 0.807876f, 0.807848f, 0.807821f, 0.807793f, 0.807766f, 0.807738f, 0.807711f, 0.807684f, 0.807656f,
+0.807629f, 0.807601f, 0.807574f, 0.807546f, 0.807519f, 0.807492f, 0.807464f, 0.807437f, 0.807409f, 0.807382f, 0.807354f, 0.807327f, 0.8073f, 0.807272f, 0.807245f, 0.807217f, 0.80719f, 0.807163f, 0.807135f, 0.807108f,
+0.80708f, 0.807053f, 0.807025f, 0.806998f, 0.806971f, 0.806943f, 0.806916f, 0.806888f, 0.806861f, 0.806834f, 0.806806f, 0.806779f, 0.806751f, 0.806724f, 0.806696f, 0.806669f, 0.806642f, 0.806614f, 0.806587f, 0.806559f,
+0.806532f, 0.806505f, 0.806477f, 0.80645f, 0.806422f, 0.806395f, 0.806368f, 0.80634f, 0.806313f, 0.806285f, 0.806258f, 0.806231f, 0.806203f, 0.806176f, 0.806148f, 0.806121f, 0.806094f, 0.806066f, 0.806039f, 0.806011f,
+0.805984f, 0.805957f, 0.805929f, 0.805902f, 0.805874f, 0.805847f, 0.80582f, 0.805792f, 0.805765f, 0.805737f, 0.80571f, 0.805683f, 0.805655f, 0.805628f, 0.8056f, 0.805573f, 0.805546f, 0.805518f, 0.805491f, 0.805464f,
+0.805436f, 0.805409f, 0.805381f, 0.805354f, 0.805327f, 0.805299f, 0.805272f, 0.805244f, 0.805217f, 0.80519f, 0.805162f, 0.805135f, 0.805108f, 0.80508f, 0.805053f, 0.805025f, 0.804998f, 0.804971f, 0.804943f, 0.804916f,
+0.804888f, 0.804861f, 0.804834f, 0.804806f, 0.804779f, 0.804752f, 0.804724f, 0.804697f, 0.804669f, 0.804642f, 0.804615f, 0.804587f, 0.80456f, 0.804533f, 0.804505f, 0.804478f, 0.80445f, 0.804423f, 0.804396f, 0.804368f,
+0.804341f, 0.804314f, 0.804286f, 0.804259f, 0.804231f, 0.804204f, 0.804177f, 0.804149f, 0.804122f, 0.804095f, 0.804067f, 0.80404f, 0.804013f, 0.803985f, 0.803958f, 0.80393f, 0.803903f, 0.803876f, 0.803848f, 0.803821f,
+0.803794f, 0.803766f, 0.803739f, 0.803712f, 0.803684f, 0.803657f, 0.80363f, 0.803602f, 0.803575f, 0.803547f, 0.80352f, 0.803493f, 0.803465f, 0.803438f, 0.803411f, 0.803383f, 0.803356f, 0.803329f, 0.803301f, 0.803274f,
+0.803247f, 0.803219f, 0.803192f, 0.803165f, 0.803137f, 0.80311f, 0.803082f, 0.803055f, 0.803028f, 0.803f, 0.802973f, 0.802946f, 0.802918f, 0.802891f, 0.802864f, 0.802836f, 0.802809f, 0.802782f, 0.802754f, 0.802727f,
+0.8027f, 0.802672f, 0.802645f, 0.802618f, 0.80259f, 0.802563f, 0.802536f, 0.802508f, 0.802481f, 0.802454f, 0.802426f, 0.802399f, 0.802372f, 0.802344f, 0.802317f, 0.80229f, 0.802262f, 0.802235f, 0.802208f, 0.80218f,
+0.802153f, 0.802126f, 0.802098f, 0.802071f, 0.802044f, 0.802016f, 0.801989f, 0.801962f, 0.801934f, 0.801907f, 0.80188f, 0.801852f, 0.801825f, 0.801798f, 0.80177f, 0.801743f, 0.801716f, 0.801688f, 0.801661f, 0.801634f,
+0.801606f, 0.801579f, 0.801552f, 0.801524f, 0.801497f, 0.80147f, 0.801442f, 0.801415f, 0.801388f, 0.80136f, 0.801333f, 0.801306f, 0.801278f, 0.801251f, 0.801224f, 0.801197f, 0.801169f, 0.801142f, 0.801115f, 0.801087f,
+0.80106f, 0.801033f, 0.801005f, 0.800978f, 0.800951f, 0.800923f, 0.800896f, 0.800869f, 0.800841f, 0.800814f, 0.800787f, 0.80076f, 0.800732f, 0.800705f, 0.800678f, 0.80065f, 0.800623f, 0.800596f, 0.800568f, 0.800541f,
+0.800514f, 0.800486f, 0.800459f, 0.800432f, 0.800405f, 0.800377f, 0.80035f, 0.800323f, 0.800295f, 0.800268f, 0.800241f, 0.800213f, 0.800186f, 0.800159f, 0.800132f, 0.800104f, 0.800077f, 0.80005f, 0.800022f, 0.799995f,
+0.799968f, 0.79994f, 0.799913f, 0.799886f, 0.799859f, 0.799831f, 0.799804f, 0.799777f, 0.799749f, 0.799722f, 0.799695f, 0.799668f, 0.79964f, 0.799613f, 0.799586f, 0.799558f, 0.799531f, 0.799504f, 0.799477f, 0.799449f,
+0.799422f, 0.799395f, 0.799367f, 0.79934f, 0.799313f, 0.799286f, 0.799258f, 0.799231f, 0.799204f, 0.799176f, 0.799149f, 0.799122f, 0.799095f, 0.799067f, 0.79904f, 0.799013f, 0.798985f, 0.798958f, 0.798931f, 0.798904f,
+0.798876f, 0.798849f, 0.798822f, 0.798795f, 0.798767f, 0.79874f, 0.798713f, 0.798685f, 0.798658f, 0.798631f, 0.798604f, 0.798576f, 0.798549f, 0.798522f, 0.798495f, 0.798467f, 0.79844f, 0.798413f, 0.798385f, 0.798358f,
+0.798331f, 0.798304f, 0.798276f, 0.798249f, 0.798222f, 0.798195f, 0.798167f, 0.79814f, 0.798113f, 0.798086f, 0.798058f, 0.798031f, 0.798004f, 0.797976f, 0.797949f, 0.797922f, 0.797895f, 0.797867f, 0.79784f, 0.797813f,
+0.797786f, 0.797758f, 0.797731f, 0.797704f, 0.797677f, 0.797649f, 0.797622f, 0.797595f, 0.797568f, 0.79754f, 0.797513f, 0.797486f, 0.797459f, 0.797431f, 0.797404f, 0.797377f, 0.79735f, 0.797322f, 0.797295f, 0.797268f,
+0.797241f, 0.797213f, 0.797186f, 0.797159f, 0.797132f, 0.797104f, 0.797077f, 0.79705f, 0.797023f, 0.796995f, 0.796968f, 0.796941f, 0.796914f, 0.796886f, 0.796859f, 0.796832f, 0.796805f, 0.796777f, 0.79675f, 0.796723f,
+0.796696f, 0.796668f, 0.796641f, 0.796614f, 0.796587f, 0.79656f, 0.796532f, 0.796505f, 0.796478f, 0.796451f, 0.796423f, 0.796396f, 0.796369f, 0.796342f, 0.796314f, 0.796287f, 0.79626f, 0.796233f, 0.796205f, 0.796178f,
+0.796151f, 0.796124f, 0.796097f, 0.796069f, 0.796042f, 0.796015f, 0.795988f, 0.79596f, 0.795933f, 0.795906f, 0.795879f, 0.795852f, 0.795824f, 0.795797f, 0.79577f, 0.795743f, 0.795715f, 0.795688f, 0.795661f, 0.795634f,
+0.795607f, 0.795579f, 0.795552f, 0.795525f, 0.795498f, 0.79547f, 0.795443f, 0.795416f, 0.795389f, 0.795362f, 0.795334f, 0.795307f, 0.79528f, 0.795253f, 0.795225f, 0.795198f, 0.795171f, 0.795144f, 0.795117f, 0.795089f,
+0.795062f, 0.795035f, 0.795008f, 0.794981f, 0.794953f, 0.794926f, 0.794899f, 0.794872f, 0.794845f, 0.794817f, 0.79479f, 0.794763f, 0.794736f, 0.794708f, 0.794681f, 0.794654f, 0.794627f, 0.7946f, 0.794572f, 0.794545f,
+0.794518f, 0.794491f, 0.794464f, 0.794436f, 0.794409f, 0.794382f, 0.794355f, 0.794328f, 0.7943f, 0.794273f, 0.794246f, 0.794219f, 0.794192f, 0.794164f, 0.794137f, 0.79411f, 0.794083f, 0.794056f, 0.794028f, 0.794001f,
+0.793974f, 0.793947f, 0.79392f, 0.793893f, 0.793865f, 0.793838f, 0.793811f, 0.793784f, 0.793757f, 0.793729f, 0.793702f, 0.793675f, 0.793648f, 0.793621f, 0.793593f, 0.793566f, 0.793539f, 0.793512f, 0.793485f, 0.793458f,
+0.79343f, 0.793403f, 0.793376f, 0.793349f, 0.793322f, 0.793294f, 0.793267f, 0.79324f, 0.793213f, 0.793186f, 0.793159f, 0.793131f, 0.793104f, 0.793077f, 0.79305f, 0.793023f, 0.792995f, 0.792968f, 0.792941f, 0.792914f,
+0.792887f, 0.79286f, 0.792832f, 0.792805f, 0.792778f, 0.792751f, 0.792724f, 0.792697f, 0.792669f, 0.792642f, 0.792615f, 0.792588f, 0.792561f, 0.792534f, 0.792506f, 0.792479f, 0.792452f, 0.792425f, 0.792398f, 0.792371f,
+0.792343f, 0.792316f, 0.792289f, 0.792262f, 0.792235f, 0.792208f, 0.79218f, 0.792153f, 0.792126f, 0.792099f, 0.792072f, 0.792045f, 0.792017f, 0.79199f, 0.791963f, 0.791936f, 0.791909f, 0.791882f, 0.791854f, 0.791827f,
+0.7918f, 0.791773f, 0.791746f, 0.791719f, 0.791692f, 0.791664f, 0.791637f, 0.79161f, 0.791583f, 0.791556f, 0.791529f, 0.791501f, 0.791474f, 0.791447f, 0.79142f, 0.791393f, 0.791366f, 0.791339f, 0.791311f, 0.791284f,
+0.791257f, 0.79123f, 0.791203f, 0.791176f, 0.791149f, 0.791121f, 0.791094f, 0.791067f, 0.79104f, 0.791013f, 0.790986f, 0.790959f, 0.790931f, 0.790904f, 0.790877f, 0.79085f, 0.790823f, 0.790796f, 0.790769f, 0.790741f,
+0.790714f, 0.790687f, 0.79066f, 0.790633f, 0.790606f, 0.790579f, 0.790552f, 0.790524f, 0.790497f, 0.79047f, 0.790443f, 0.790416f, 0.790389f, 0.790362f, 0.790334f, 0.790307f, 0.79028f, 0.790253f, 0.790226f, 0.790199f,
+0.790172f, 0.790145f, 0.790117f, 0.79009f, 0.790063f, 0.790036f, 0.790009f, 0.789982f, 0.789955f, 0.789928f, 0.7899f, 0.789873f, 0.789846f, 0.789819f, 0.789792f, 0.789765f, 0.789738f, 0.789711f, 0.789683f, 0.789656f,
+0.789629f, 0.789602f, 0.789575f, 0.789548f, 0.789521f, 0.789494f, 0.789467f, 0.789439f, 0.789412f, 0.789385f, 0.789358f, 0.789331f, 0.789304f, 0.789277f, 0.78925f, 0.789223f, 0.789195f, 0.789168f, 0.789141f, 0.789114f,
+0.789087f, 0.78906f, 0.789033f, 0.789006f, 0.788979f, 0.788951f, 0.788924f, 0.788897f, 0.78887f, 0.788843f, 0.788816f, 0.788789f, 0.788762f, 0.788735f, 0.788707f, 0.78868f, 0.788653f, 0.788626f, 0.788599f, 0.788572f,
+0.788545f, 0.788518f, 0.788491f, 0.788464f, 0.788436f, 0.788409f, 0.788382f, 0.788355f, 0.788328f, 0.788301f, 0.788274f, 0.788247f, 0.78822f, 0.788193f, 0.788166f, 0.788138f, 0.788111f, 0.788084f, 0.788057f, 0.78803f,
+0.788003f, 0.787976f, 0.787949f, 0.787922f, 0.787895f, 0.787868f, 0.78784f, 0.787813f, 0.787786f, 0.787759f, 0.787732f, 0.787705f, 0.787678f, 0.787651f, 0.787624f, 0.787597f, 0.78757f, 0.787542f, 0.787515f, 0.787488f,
+0.787461f, 0.787434f, 0.787407f, 0.78738f, 0.787353f, 0.787326f, 0.787299f, 0.787272f, 0.787245f, 0.787218f, 0.78719f, 0.787163f, 0.787136f, 0.787109f, 0.787082f, 0.787055f, 0.787028f, 0.787001f, 0.786974f, 0.786947f,
+0.78692f, 0.786893f, 0.786866f, 0.786839f, 0.786811f, 0.786784f, 0.786757f, 0.78673f, 0.786703f, 0.786676f, 0.786649f, 0.786622f, 0.786595f, 0.786568f, 0.786541f, 0.786514f, 0.786487f, 0.78646f, 0.786433f, 0.786405f,
+0.786378f, 0.786351f, 0.786324f, 0.786297f, 0.78627f, 0.786243f, 0.786216f, 0.786189f, 0.786162f, 0.786135f, 0.786108f, 0.786081f, 0.786054f, 0.786027f, 0.786f, 0.785973f, 0.785945f, 0.785918f, 0.785891f, 0.785864f,
+0.785837f, 0.78581f, 0.785783f, 0.785756f, 0.785729f, 0.785702f, 0.785675f, 0.785648f, 0.785621f, 0.785594f, 0.785567f, 0.78554f, 0.785513f, 0.785486f, 0.785459f, 0.785431f, 0.785404f, 0.785377f, 0.78535f, 0.785323f,
+0.785296f, 0.785269f, 0.785242f, 0.785215f, 0.785188f, 0.785161f, 0.785134f, 0.785107f, 0.78508f, 0.785053f, 0.785026f, 0.784999f, 0.784972f, 0.784945f, 0.784918f, 0.784891f, 0.784864f, 0.784837f, 0.78481f, 0.784783f,
+0.784755f, 0.784728f, 0.784701f, 0.784674f, 0.784647f, 0.78462f, 0.784593f, 0.784566f, 0.784539f, 0.784512f, 0.784485f, 0.784458f, 0.784431f, 0.784404f, 0.784377f, 0.78435f, 0.784323f, 0.784296f, 0.784269f, 0.784242f,
+0.784215f, 0.784188f, 0.784161f, 0.784134f, 0.784107f, 0.78408f, 0.784053f, 0.784026f, 0.783999f, 0.783972f, 0.783945f, 0.783918f, 0.783891f, 0.783864f, 0.783837f, 0.78381f, 0.783783f, 0.783756f, 0.783729f, 0.783701f,
+0.783674f, 0.783647f, 0.78362f, 0.783593f, 0.783566f, 0.783539f, 0.783512f, 0.783485f, 0.783458f, 0.783431f, 0.783404f, 0.783377f, 0.78335f, 0.783323f, 0.783296f, 0.783269f, 0.783242f, 0.783215f, 0.783188f, 0.783161f,
+0.783134f, 0.783107f, 0.78308f, 0.783053f, 0.783026f, 0.782999f, 0.782972f, 0.782945f, 0.782918f, 0.782891f, 0.782864f, 0.782837f, 0.78281f, 0.782783f, 0.782756f, 0.782729f, 0.782702f, 0.782675f, 0.782648f, 0.782621f,
+0.782594f, 0.782567f, 0.78254f, 0.782513f, 0.782486f, 0.782459f, 0.782432f, 0.782405f, 0.782378f, 0.782351f, 0.782324f, 0.782297f, 0.78227f, 0.782243f, 0.782216f, 0.782189f, 0.782162f, 0.782135f, 0.782108f, 0.782081f,
+0.782054f, 0.782027f, 0.782f, 0.781973f, 0.781946f, 0.781919f, 0.781892f, 0.781865f, 0.781838f, 0.781811f, 0.781785f, 0.781758f, 0.781731f, 0.781704f, 0.781677f, 0.78165f, 0.781623f, 0.781596f, 0.781569f, 0.781542f,
+0.781515f, 0.781488f, 0.781461f, 0.781434f, 0.781407f, 0.78138f, 0.781353f, 0.781326f, 0.781299f, 0.781272f, 0.781245f, 0.781218f, 0.781191f, 0.781164f, 0.781137f, 0.78111f, 0.781083f, 0.781056f, 0.781029f, 0.781002f,
+0.780975f, 0.780948f, 0.780921f, 0.780894f, 0.780867f, 0.78084f, 0.780813f, 0.780786f, 0.780759f, 0.780733f, 0.780706f, 0.780679f, 0.780652f, 0.780625f, 0.780598f, 0.780571f, 0.780544f, 0.780517f, 0.78049f, 0.780463f,
+0.780436f, 0.780409f, 0.780382f, 0.780355f, 0.780328f, 0.780301f, 0.780274f, 0.780247f, 0.78022f, 0.780193f, 0.780166f, 0.780139f, 0.780112f, 0.780085f, 0.780059f, 0.780032f, 0.780005f, 0.779978f, 0.779951f, 0.779924f,
+0.779897f, 0.77987f, 0.779843f, 0.779816f, 0.779789f, 0.779762f, 0.779735f, 0.779708f, 0.779681f, 0.779654f, 0.779627f, 0.7796f, 0.779573f, 0.779547f, 0.77952f, 0.779493f, 0.779466f, 0.779439f, 0.779412f, 0.779385f,
+0.779358f, 0.779331f, 0.779304f, 0.779277f, 0.77925f, 0.779223f, 0.779196f, 0.779169f, 0.779142f, 0.779115f, 0.779089f, 0.779062f, 0.779035f, 0.779008f, 0.778981f, 0.778954f, 0.778927f, 0.7789f, 0.778873f, 0.778846f,
+0.778819f, 0.778792f, 0.778765f, 0.778738f, 0.778711f, 0.778685f, 0.778658f, 0.778631f, 0.778604f, 0.778577f, 0.77855f, 0.778523f, 0.778496f, 0.778469f, 0.778442f, 0.778415f, 0.778388f, 0.778361f, 0.778334f, 0.778308f,
+0.778281f, 0.778254f, 0.778227f, 0.7782f, 0.778173f, 0.778146f, 0.778119f, 0.778092f, 0.778065f, 0.778038f, 0.778011f, 0.777985f, 0.777958f, 0.777931f, 0.777904f, 0.777877f, 0.77785f, 0.777823f, 0.777796f, 0.777769f,
+0.777742f, 0.777715f, 0.777688f, 0.777662f, 0.777635f, 0.777608f, 0.777581f, 0.777554f, 0.777527f, 0.7775f, 0.777473f, 0.777446f, 0.777419f, 0.777392f, 0.777366f, 0.777339f, 0.777312f, 0.777285f, 0.777258f, 0.777231f,
+0.777204f, 0.777177f, 0.77715f, 0.777123f, 0.777096f, 0.77707f, 0.777043f, 0.777016f, 0.776989f, 0.776962f, 0.776935f, 0.776908f, 0.776881f, 0.776854f, 0.776827f, 0.776801f, 0.776774f, 0.776747f, 0.77672f, 0.776693f,
+0.776666f, 0.776639f, 0.776612f, 0.776585f, 0.776559f, 0.776532f, 0.776505f, 0.776478f, 0.776451f, 0.776424f, 0.776397f, 0.77637f, 0.776343f, 0.776317f, 0.77629f, 0.776263f, 0.776236f, 0.776209f, 0.776182f, 0.776155f,
+0.776128f, 0.776101f, 0.776075f, 0.776048f, 0.776021f, 0.775994f, 0.775967f, 0.77594f, 0.775913f, 0.775886f, 0.775859f, 0.775833f, 0.775806f, 0.775779f, 0.775752f, 0.775725f, 0.775698f, 0.775671f, 0.775644f, 0.775618f,
+0.775591f, 0.775564f, 0.775537f, 0.77551f, 0.775483f, 0.775456f, 0.775429f, 0.775403f, 0.775376f, 0.775349f, 0.775322f, 0.775295f, 0.775268f, 0.775241f, 0.775214f, 0.775188f, 0.775161f, 0.775134f, 0.775107f, 0.77508f,
+0.775053f, 0.775026f, 0.775f, 0.774973f, 0.774946f, 0.774919f, 0.774892f, 0.774865f, 0.774838f, 0.774811f, 0.774785f, 0.774758f, 0.774731f, 0.774704f, 0.774677f, 0.77465f, 0.774623f, 0.774597f, 0.77457f, 0.774543f,
+0.774516f, 0.774489f, 0.774462f, 0.774435f, 0.774409f, 0.774382f, 0.774355f, 0.774328f, 0.774301f, 0.774274f, 0.774247f, 0.774221f, 0.774194f, 0.774167f, 0.77414f, 0.774113f, 0.774086f, 0.77406f, 0.774033f, 0.774006f,
+0.773979f, 0.773952f, 0.773925f, 0.773898f, 0.773872f, 0.773845f, 0.773818f, 0.773791f, 0.773764f, 0.773737f, 0.773711f, 0.773684f, 0.773657f, 0.77363f, 0.773603f, 0.773576f, 0.773549f, 0.773523f, 0.773496f, 0.773469f,
+0.773442f, 0.773415f, 0.773388f, 0.773362f, 0.773335f, 0.773308f, 0.773281f, 0.773254f, 0.773227f, 0.773201f, 0.773174f, 0.773147f, 0.77312f, 0.773093f, 0.773066f, 0.77304f, 0.773013f, 0.772986f, 0.772959f, 0.772932f,
+0.772905f, 0.772879f, 0.772852f, 0.772825f, 0.772798f, 0.772771f, 0.772744f, 0.772718f, 0.772691f, 0.772664f, 0.772637f, 0.77261f, 0.772583f, 0.772557f, 0.77253f, 0.772503f, 0.772476f, 0.772449f, 0.772423f, 0.772396f,
+0.772369f, 0.772342f, 0.772315f, 0.772288f, 0.772262f, 0.772235f, 0.772208f, 0.772181f, 0.772154f, 0.772128f, 0.772101f, 0.772074f, 0.772047f, 0.77202f, 0.771993f, 0.771967f, 0.77194f, 0.771913f, 0.771886f, 0.771859f,
+0.771833f, 0.771806f, 0.771779f, 0.771752f, 0.771725f, 0.771699f, 0.771672f, 0.771645f, 0.771618f, 0.771591f, 0.771565f, 0.771538f, 0.771511f, 0.771484f, 0.771457f, 0.77143f, 0.771404f, 0.771377f, 0.77135f, 0.771323f,
+0.771296f, 0.77127f, 0.771243f, 0.771216f, 0.771189f, 0.771162f, 0.771136f, 0.771109f, 0.771082f, 0.771055f, 0.771028f, 0.771002f, 0.770975f, 0.770948f, 0.770921f, 0.770895f, 0.770868f, 0.770841f, 0.770814f, 0.770787f,
+0.770761f, 0.770734f, 0.770707f, 0.77068f, 0.770653f, 0.770627f, 0.7706f, 0.770573f, 0.770546f, 0.770519f, 0.770493f, 0.770466f, 0.770439f, 0.770412f, 0.770385f, 0.770359f, 0.770332f, 0.770305f, 0.770278f, 0.770252f,
+0.770225f, 0.770198f, 0.770171f, 0.770144f, 0.770118f, 0.770091f, 0.770064f, 0.770037f, 0.770011f, 0.769984f, 0.769957f, 0.76993f, 0.769903f, 0.769877f, 0.76985f, 0.769823f, 0.769796f, 0.76977f, 0.769743f, 0.769716f,
+0.769689f, 0.769662f, 0.769636f, 0.769609f, 0.769582f, 0.769555f, 0.769529f, 0.769502f, 0.769475f, 0.769448f, 0.769422f, 0.769395f, 0.769368f, 0.769341f, 0.769314f, 0.769288f, 0.769261f, 0.769234f, 0.769207f, 0.769181f,
+0.769154f, 0.769127f, 0.7691f, 0.769074f, 0.769047f, 0.76902f, 0.768993f, 0.768966f, 0.76894f, 0.768913f, 0.768886f, 0.768859f, 0.768833f, 0.768806f, 0.768779f, 0.768752f, 0.768726f, 0.768699f, 0.768672f, 0.768645f,
+0.768619f, 0.768592f, 0.768565f, 0.768538f, 0.768512f, 0.768485f, 0.768458f, 0.768431f, 0.768405f, 0.768378f, 0.768351f, 0.768324f, 0.768298f, 0.768271f, 0.768244f, 0.768217f, 0.768191f, 0.768164f, 0.768137f, 0.76811f,
+0.768084f, 0.768057f, 0.76803f, 0.768003f, 0.767977f, 0.76795f, 0.767923f, 0.767896f, 0.76787f, 0.767843f, 0.767816f, 0.767789f, 0.767763f, 0.767736f, 0.767709f, 0.767683f, 0.767656f, 0.767629f, 0.767602f, 0.767576f,
+0.767549f, 0.767522f, 0.767495f, 0.767469f, 0.767442f, 0.767415f, 0.767388f, 0.767362f, 0.767335f, 0.767308f, 0.767281f, 0.767255f, 0.767228f, 0.767201f, 0.767175f, 0.767148f, 0.767121f, 0.767094f, 0.767068f, 0.767041f,
+0.767014f, 0.766987f, 0.766961f, 0.766934f, 0.766907f, 0.766881f, 0.766854f, 0.766827f, 0.7668f, 0.766774f, 0.766747f, 0.76672f, 0.766693f, 0.766667f, 0.76664f, 0.766613f, 0.766587f, 0.76656f, 0.766533f, 0.766506f,
+0.76648f, 0.766453f, 0.766426f, 0.7664f, 0.766373f, 0.766346f, 0.766319f, 0.766293f, 0.766266f, 0.766239f, 0.766213f, 0.766186f, 0.766159f, 0.766132f, 0.766106f, 0.766079f, 0.766052f, 0.766026f, 0.765999f, 0.765972f,
+0.765945f, 0.765919f, 0.765892f, 0.765865f, 0.765839f, 0.765812f, 0.765785f, 0.765759f, 0.765732f, 0.765705f, 0.765678f, 0.765652f, 0.765625f, 0.765598f, 0.765572f, 0.765545f, 0.765518f, 0.765491f, 0.765465f, 0.765438f,
+0.765411f, 0.765385f, 0.765358f, 0.765331f, 0.765305f, 0.765278f, 0.765251f, 0.765225f, 0.765198f, 0.765171f, 0.765144f, 0.765118f, 0.765091f, 0.765064f, 0.765038f, 0.765011f, 0.764984f, 0.764958f, 0.764931f, 0.764904f,
+0.764878f, 0.764851f, 0.764824f, 0.764797f, 0.764771f, 0.764744f, 0.764717f, 0.764691f, 0.764664f, 0.764637f, 0.764611f, 0.764584f, 0.764557f, 0.764531f, 0.764504f, 0.764477f, 0.764451f, 0.764424f, 0.764397f, 0.76437f,
+0.764344f, 0.764317f, 0.76429f, 0.764264f, 0.764237f, 0.76421f, 0.764184f, 0.764157f, 0.76413f, 0.764104f, 0.764077f, 0.76405f, 0.764024f, 0.763997f, 0.76397f, 0.763944f, 0.763917f, 0.76389f, 0.763864f, 0.763837f,
+0.76381f, 0.763784f, 0.763757f, 0.76373f, 0.763704f, 0.763677f, 0.76365f, 0.763624f, 0.763597f, 0.76357f, 0.763544f, 0.763517f, 0.76349f, 0.763464f, 0.763437f, 0.76341f, 0.763384f, 0.763357f, 0.76333f, 0.763304f,
+0.763277f, 0.76325f, 0.763224f, 0.763197f, 0.76317f, 0.763144f, 0.763117f, 0.76309f, 0.763064f, 0.763037f, 0.76301f, 0.762984f, 0.762957f, 0.76293f, 0.762904f, 0.762877f, 0.76285f, 0.762824f, 0.762797f, 0.76277f,
+0.762744f, 0.762717f, 0.762691f, 0.762664f, 0.762637f, 0.762611f, 0.762584f, 0.762557f, 0.762531f, 0.762504f, 0.762477f, 0.762451f, 0.762424f, 0.762397f, 0.762371f, 0.762344f, 0.762317f, 0.762291f, 0.762264f, 0.762237f,
+0.762211f, 0.762184f, 0.762158f, 0.762131f, 0.762104f, 0.762078f, 0.762051f, 0.762024f, 0.761998f, 0.761971f, 0.761944f, 0.761918f, 0.761891f, 0.761865f, 0.761838f, 0.761811f, 0.761785f, 0.761758f, 0.761731f, 0.761705f,
+0.761678f, 0.761651f, 0.761625f, 0.761598f, 0.761572f, 0.761545f, 0.761518f, 0.761492f, 0.761465f, 0.761438f, 0.761412f, 0.761385f, 0.761358f, 0.761332f, 0.761305f, 0.761279f, 0.761252f, 0.761225f, 0.761199f, 0.761172f,
+0.761145f, 0.761119f, 0.761092f, 0.761066f, 0.761039f, 0.761012f, 0.760986f, 0.760959f, 0.760933f, 0.760906f, 0.760879f, 0.760853f, 0.760826f, 0.760799f, 0.760773f, 0.760746f, 0.76072f, 0.760693f, 0.760666f, 0.76064f,
+0.760613f, 0.760586f, 0.76056f, 0.760533f, 0.760507f, 0.76048f, 0.760453f, 0.760427f, 0.7604f, 0.760374f, 0.760347f, 0.76032f, 0.760294f, 0.760267f, 0.760241f, 0.760214f, 0.760187f, 0.760161f, 0.760134f, 0.760107f,
+0.760081f, 0.760054f, 0.760028f, 0.760001f, 0.759974f, 0.759948f, 0.759921f, 0.759895f, 0.759868f, 0.759841f, 0.759815f, 0.759788f, 0.759762f, 0.759735f, 0.759708f, 0.759682f, 0.759655f, 0.759629f, 0.759602f, 0.759575f,
+0.759549f, 0.759522f, 0.759496f, 0.759469f, 0.759442f, 0.759416f, 0.759389f, 0.759363f, 0.759336f, 0.759309f, 0.759283f, 0.759256f, 0.75923f, 0.759203f, 0.759177f, 0.75915f, 0.759123f, 0.759097f, 0.75907f, 0.759044f,
+0.759017f, 0.75899f, 0.758964f, 0.758937f, 0.758911f, 0.758884f, 0.758857f, 0.758831f, 0.758804f, 0.758778f, 0.758751f, 0.758725f, 0.758698f, 0.758671f, 0.758645f, 0.758618f, 0.758592f, 0.758565f, 0.758539f, 0.758512f,
+0.758485f, 0.758459f, 0.758432f, 0.758406f, 0.758379f, 0.758352f, 0.758326f, 0.758299f, 0.758273f, 0.758246f, 0.75822f, 0.758193f, 0.758166f, 0.75814f, 0.758113f, 0.758087f, 0.75806f, 0.758034f, 0.758007f, 0.75798f,
+0.757954f, 0.757927f, 0.757901f, 0.757874f, 0.757848f, 0.757821f, 0.757794f, 0.757768f, 0.757741f, 0.757715f, 0.757688f, 0.757662f, 0.757635f, 0.757609f, 0.757582f, 0.757555f, 0.757529f, 0.757502f, 0.757476f, 0.757449f,
+0.757423f, 0.757396f, 0.757369f, 0.757343f, 0.757316f, 0.75729f, 0.757263f, 0.757237f, 0.75721f, 0.757184f, 0.757157f, 0.75713f, 0.757104f, 0.757077f, 0.757051f, 0.757024f, 0.756998f, 0.756971f, 0.756945f, 0.756918f,
+0.756892f, 0.756865f, 0.756838f, 0.756812f, 0.756785f, 0.756759f, 0.756732f, 0.756706f, 0.756679f, 0.756653f, 0.756626f, 0.756599f, 0.756573f, 0.756546f, 0.75652f, 0.756493f, 0.756467f, 0.75644f, 0.756414f, 0.756387f,
+0.756361f, 0.756334f, 0.756308f, 0.756281f, 0.756254f, 0.756228f, 0.756201f, 0.756175f, 0.756148f, 0.756122f, 0.756095f, 0.756069f, 0.756042f, 0.756016f, 0.755989f, 0.755963f, 0.755936f, 0.755909f, 0.755883f, 0.755856f,
+0.75583f, 0.755803f, 0.755777f, 0.75575f, 0.755724f, 0.755697f, 0.755671f, 0.755644f, 0.755618f, 0.755591f, 0.755565f, 0.755538f, 0.755512f, 0.755485f, 0.755458f, 0.755432f, 0.755405f, 0.755379f, 0.755352f, 0.755326f,
+0.755299f, 0.755273f, 0.755246f, 0.75522f, 0.755193f, 0.755167f, 0.75514f, 0.755114f, 0.755087f, 0.755061f, 0.755034f, 0.755008f, 0.754981f, 0.754955f, 0.754928f, 0.754902f, 0.754875f, 0.754849f, 0.754822f, 0.754795f,
+0.754769f, 0.754742f, 0.754716f, 0.754689f, 0.754663f, 0.754636f, 0.75461f, 0.754583f, 0.754557f, 0.75453f, 0.754504f, 0.754477f, 0.754451f, 0.754424f, 0.754398f, 0.754371f, 0.754345f, 0.754318f, 0.754292f, 0.754265f,
+0.754239f, 0.754212f, 0.754186f, 0.754159f, 0.754133f, 0.754106f, 0.75408f, 0.754053f, 0.754027f, 0.754f, 0.753974f, 0.753947f, 0.753921f, 0.753894f, 0.753868f, 0.753841f, 0.753815f, 0.753788f, 0.753762f, 0.753735f,
+0.753709f, 0.753682f, 0.753656f, 0.753629f, 0.753603f, 0.753576f, 0.75355f, 0.753523f, 0.753497f, 0.75347f, 0.753444f, 0.753417f, 0.753391f, 0.753364f, 0.753338f, 0.753311f, 0.753285f, 0.753259f, 0.753232f, 0.753206f,
+0.753179f, 0.753153f, 0.753126f, 0.7531f, 0.753073f, 0.753047f, 0.75302f, 0.752994f, 0.752967f, 0.752941f, 0.752914f, 0.752888f, 0.752861f, 0.752835f, 0.752808f, 0.752782f, 0.752755f, 0.752729f, 0.752702f, 0.752676f,
+0.752649f, 0.752623f, 0.752596f, 0.75257f, 0.752544f, 0.752517f, 0.752491f, 0.752464f, 0.752438f, 0.752411f, 0.752385f, 0.752358f, 0.752332f, 0.752305f, 0.752279f, 0.752252f, 0.752226f, 0.752199f, 0.752173f, 0.752146f,
+0.75212f, 0.752094f, 0.752067f, 0.752041f, 0.752014f, 0.751988f, 0.751961f, 0.751935f, 0.751908f, 0.751882f, 0.751855f, 0.751829f, 0.751802f, 0.751776f, 0.75175f, 0.751723f, 0.751697f, 0.75167f, 0.751644f, 0.751617f,
+0.751591f, 0.751564f, 0.751538f, 0.751511f, 0.751485f, 0.751459f, 0.751432f, 0.751406f, 0.751379f, 0.751353f, 0.751326f, 0.7513f, 0.751273f, 0.751247f, 0.75122f, 0.751194f, 0.751168f, 0.751141f, 0.751115f, 0.751088f,
+0.751062f, 0.751035f, 0.751009f, 0.750982f, 0.750956f, 0.75093f, 0.750903f, 0.750877f, 0.75085f, 0.750824f, 0.750797f, 0.750771f, 0.750744f, 0.750718f, 0.750692f, 0.750665f, 0.750639f, 0.750612f, 0.750586f, 0.750559f,
+0.750533f, 0.750506f, 0.75048f, 0.750454f, 0.750427f, 0.750401f, 0.750374f, 0.750348f, 0.750321f, 0.750295f, 0.750269f, 0.750242f, 0.750216f, 0.750189f, 0.750163f, 0.750136f, 0.75011f, 0.750083f, 0.750057f, 0.750031f,
+0.750004f, 0.749978f, 0.749951f, 0.749925f, 0.749898f, 0.749872f, 0.749846f, 0.749819f, 0.749793f, 0.749766f, 0.74974f, 0.749714f, 0.749687f, 0.749661f, 0.749634f, 0.749608f, 0.749581f, 0.749555f, 0.749529f, 0.749502f,
+0.749476f, 0.749449f, 0.749423f, 0.749396f, 0.74937f, 0.749344f, 0.749317f, 0.749291f, 0.749264f, 0.749238f, 0.749212f, 0.749185f, 0.749159f, 0.749132f, 0.749106f, 0.749079f, 0.749053f, 0.749027f, 0.749f, 0.748974f,
+0.748947f, 0.748921f, 0.748895f, 0.748868f, 0.748842f, 0.748815f, 0.748789f, 0.748763f, 0.748736f, 0.74871f, 0.748683f, 0.748657f, 0.748631f, 0.748604f, 0.748578f, 0.748551f, 0.748525f, 0.748499f, 0.748472f, 0.748446f,
+0.748419f, 0.748393f, 0.748366f, 0.74834f, 0.748314f, 0.748287f, 0.748261f, 0.748235f, 0.748208f, 0.748182f, 0.748155f, 0.748129f, 0.748103f, 0.748076f, 0.74805f, 0.748023f, 0.747997f, 0.747971f, 0.747944f, 0.747918f,
+0.747891f, 0.747865f, 0.747839f, 0.747812f, 0.747786f, 0.747759f, 0.747733f, 0.747707f, 0.74768f, 0.747654f, 0.747627f, 0.747601f, 0.747575f, 0.747548f, 0.747522f, 0.747496f, 0.747469f, 0.747443f, 0.747416f, 0.74739f,
+0.747364f, 0.747337f, 0.747311f, 0.747284f, 0.747258f, 0.747232f, 0.747205f, 0.747179f, 0.747153f, 0.747126f, 0.7471f, 0.747073f, 0.747047f, 0.747021f, 0.746994f, 0.746968f, 0.746942f, 0.746915f, 0.746889f, 0.746862f,
+0.746836f, 0.74681f, 0.746783f, 0.746757f, 0.746731f, 0.746704f, 0.746678f, 0.746651f, 0.746625f, 0.746599f, 0.746572f, 0.746546f, 0.74652f, 0.746493f, 0.746467f, 0.746441f, 0.746414f, 0.746388f, 0.746361f, 0.746335f,
+0.746309f, 0.746282f, 0.746256f, 0.74623f, 0.746203f, 0.746177f, 0.746151f, 0.746124f, 0.746098f, 0.746071f, 0.746045f, 0.746019f, 0.745992f, 0.745966f, 0.74594f, 0.745913f, 0.745887f, 0.745861f, 0.745834f, 0.745808f,
+0.745782f, 0.745755f, 0.745729f, 0.745702f, 0.745676f, 0.74565f, 0.745623f, 0.745597f, 0.745571f, 0.745544f, 0.745518f, 0.745492f, 0.745465f, 0.745439f, 0.745413f, 0.745386f, 0.74536f, 0.745334f, 0.745307f, 0.745281f,
+0.745255f, 0.745228f, 0.745202f, 0.745175f, 0.745149f, 0.745123f, 0.745096f, 0.74507f, 0.745044f, 0.745017f, 0.744991f, 0.744965f, 0.744938f, 0.744912f, 0.744886f, 0.744859f, 0.744833f, 0.744807f, 0.74478f, 0.744754f,
+0.744728f, 0.744701f, 0.744675f, 0.744649f, 0.744622f, 0.744596f, 0.74457f, 0.744543f, 0.744517f, 0.744491f, 0.744464f, 0.744438f, 0.744412f, 0.744385f, 0.744359f, 0.744333f, 0.744306f, 0.74428f, 0.744254f, 0.744227f,
+0.744201f, 0.744175f, 0.744148f, 0.744122f, 0.744096f, 0.744069f, 0.744043f, 0.744017f, 0.74399f, 0.743964f, 0.743938f, 0.743912f, 0.743885f, 0.743859f, 0.743833f, 0.743806f, 0.74378f, 0.743754f, 0.743727f, 0.743701f,
+0.743675f, 0.743648f, 0.743622f, 0.743596f, 0.743569f, 0.743543f, 0.743517f, 0.74349f, 0.743464f, 0.743438f, 0.743411f, 0.743385f, 0.743359f, 0.743333f, 0.743306f, 0.74328f, 0.743254f, 0.743227f, 0.743201f, 0.743175f,
+0.743148f, 0.743122f, 0.743096f, 0.743069f, 0.743043f, 0.743017f, 0.742991f, 0.742964f, 0.742938f, 0.742912f, 0.742885f, 0.742859f, 0.742833f, 0.742806f, 0.74278f, 0.742754f, 0.742728f, 0.742701f, 0.742675f, 0.742649f,
+0.742622f, 0.742596f, 0.74257f, 0.742543f, 0.742517f, 0.742491f, 0.742465f, 0.742438f, 0.742412f, 0.742386f, 0.742359f, 0.742333f, 0.742307f, 0.74228f, 0.742254f, 0.742228f, 0.742202f, 0.742175f, 0.742149f, 0.742123f,
+0.742096f, 0.74207f, 0.742044f, 0.742018f, 0.741991f, 0.741965f, 0.741939f, 0.741912f, 0.741886f, 0.74186f, 0.741834f, 0.741807f, 0.741781f, 0.741755f, 0.741728f, 0.741702f, 0.741676f, 0.74165f, 0.741623f, 0.741597f,
+0.741571f, 0.741544f, 0.741518f, 0.741492f, 0.741466f, 0.741439f, 0.741413f, 0.741387f, 0.741361f, 0.741334f, 0.741308f, 0.741282f, 0.741255f, 0.741229f, 0.741203f, 0.741177f, 0.74115f, 0.741124f, 0.741098f, 0.741072f,
+0.741045f, 0.741019f, 0.740993f, 0.740966f, 0.74094f, 0.740914f, 0.740888f, 0.740861f, 0.740835f, 0.740809f, 0.740783f, 0.740756f, 0.74073f, 0.740704f, 0.740677f, 0.740651f, 0.740625f, 0.740599f, 0.740572f, 0.740546f,
+0.74052f, 0.740494f, 0.740467f, 0.740441f, 0.740415f, 0.740389f, 0.740362f, 0.740336f, 0.74031f, 0.740284f, 0.740257f, 0.740231f, 0.740205f, 0.740179f, 0.740152f, 0.740126f, 0.7401f, 0.740074f, 0.740047f, 0.740021f,
+0.739995f, 0.739969f, 0.739942f, 0.739916f, 0.73989f, 0.739864f, 0.739837f, 0.739811f, 0.739785f, 0.739759f, 0.739732f, 0.739706f, 0.73968f, 0.739654f, 0.739627f, 0.739601f, 0.739575f, 0.739549f, 0.739522f, 0.739496f,
+0.73947f, 0.739444f, 0.739417f, 0.739391f, 0.739365f, 0.739339f, 0.739312f, 0.739286f, 0.73926f, 0.739234f, 0.739207f, 0.739181f, 0.739155f, 0.739129f, 0.739102f, 0.739076f, 0.73905f, 0.739024f, 0.738998f, 0.738971f,
+0.738945f, 0.738919f, 0.738893f, 0.738866f, 0.73884f, 0.738814f, 0.738788f, 0.738761f, 0.738735f, 0.738709f, 0.738683f, 0.738657f, 0.73863f, 0.738604f, 0.738578f, 0.738552f, 0.738525f, 0.738499f, 0.738473f, 0.738447f,
+0.73842f, 0.738394f, 0.738368f, 0.738342f, 0.738316f, 0.738289f, 0.738263f, 0.738237f, 0.738211f, 0.738184f, 0.738158f, 0.738132f, 0.738106f, 0.73808f, 0.738053f, 0.738027f, 0.738001f, 0.737975f, 0.737949f, 0.737922f,
+0.737896f, 0.73787f, 0.737844f, 0.737817f, 0.737791f, 0.737765f, 0.737739f, 0.737713f, 0.737686f, 0.73766f, 0.737634f, 0.737608f, 0.737582f, 0.737555f, 0.737529f, 0.737503f, 0.737477f, 0.737451f, 0.737424f, 0.737398f,
+0.737372f, 0.737346f, 0.737319f, 0.737293f, 0.737267f, 0.737241f, 0.737215f, 0.737188f, 0.737162f, 0.737136f, 0.73711f, 0.737084f, 0.737057f, 0.737031f, 0.737005f, 0.736979f, 0.736953f, 0.736926f, 0.7369f, 0.736874f,
+0.736848f, 0.736822f, 0.736795f, 0.736769f, 0.736743f, 0.736717f, 0.736691f, 0.736665f, 0.736638f, 0.736612f, 0.736586f, 0.73656f, 0.736534f, 0.736507f, 0.736481f, 0.736455f, 0.736429f, 0.736403f, 0.736376f, 0.73635f,
+0.736324f, 0.736298f, 0.736272f, 0.736245f, 0.736219f, 0.736193f, 0.736167f, 0.736141f, 0.736115f, 0.736088f, 0.736062f, 0.736036f, 0.73601f, 0.735984f, 0.735957f, 0.735931f, 0.735905f, 0.735879f, 0.735853f, 0.735827f,
+0.7358f, 0.735774f, 0.735748f, 0.735722f, 0.735696f, 0.73567f, 0.735643f, 0.735617f, 0.735591f, 0.735565f, 0.735539f, 0.735512f, 0.735486f, 0.73546f, 0.735434f, 0.735408f, 0.735382f, 0.735355f, 0.735329f, 0.735303f,
+0.735277f, 0.735251f, 0.735225f, 0.735198f, 0.735172f, 0.735146f, 0.73512f, 0.735094f, 0.735068f, 0.735041f, 0.735015f, 0.734989f, 0.734963f, 0.734937f, 0.734911f, 0.734884f, 0.734858f, 0.734832f, 0.734806f, 0.73478f,
+0.734754f, 0.734728f, 0.734701f, 0.734675f, 0.734649f, 0.734623f, 0.734597f, 0.734571f, 0.734544f, 0.734518f, 0.734492f, 0.734466f, 0.73444f, 0.734414f, 0.734387f, 0.734361f, 0.734335f, 0.734309f, 0.734283f, 0.734257f,
+0.734231f, 0.734204f, 0.734178f, 0.734152f, 0.734126f, 0.7341f, 0.734074f, 0.734048f, 0.734021f, 0.733995f, 0.733969f, 0.733943f, 0.733917f, 0.733891f, 0.733865f, 0.733838f, 0.733812f, 0.733786f, 0.73376f, 0.733734f,
+0.733708f, 0.733682f, 0.733655f, 0.733629f, 0.733603f, 0.733577f, 0.733551f, 0.733525f, 0.733499f, 0.733472f, 0.733446f, 0.73342f, 0.733394f, 0.733368f, 0.733342f, 0.733316f, 0.733289f, 0.733263f, 0.733237f, 0.733211f,
+0.733185f, 0.733159f, 0.733133f, 0.733107f, 0.73308f, 0.733054f, 0.733028f, 0.733002f, 0.732976f, 0.73295f, 0.732924f, 0.732898f, 0.732871f, 0.732845f, 0.732819f, 0.732793f, 0.732767f, 0.732741f, 0.732715f, 0.732689f,
+0.732662f, 0.732636f, 0.73261f, 0.732584f, 0.732558f, 0.732532f, 0.732506f, 0.73248f, 0.732453f, 0.732427f, 0.732401f, 0.732375f, 0.732349f, 0.732323f, 0.732297f, 0.732271f, 0.732245f, 0.732218f, 0.732192f, 0.732166f,
+0.73214f, 0.732114f, 0.732088f, 0.732062f, 0.732036f, 0.73201f, 0.731983f, 0.731957f, 0.731931f, 0.731905f, 0.731879f, 0.731853f, 0.731827f, 0.731801f, 0.731775f, 0.731748f, 0.731722f, 0.731696f, 0.73167f, 0.731644f,
+0.731618f, 0.731592f, 0.731566f, 0.73154f, 0.731514f, 0.731487f, 0.731461f, 0.731435f, 0.731409f, 0.731383f, 0.731357f, 0.731331f, 0.731305f, 0.731279f, 0.731253f, 0.731226f, 0.7312f, 0.731174f, 0.731148f, 0.731122f,
+0.731096f, 0.73107f, 0.731044f, 0.731018f, 0.730992f, 0.730966f, 0.730939f, 0.730913f, 0.730887f, 0.730861f, 0.730835f, 0.730809f, 0.730783f, 0.730757f, 0.730731f, 0.730705f, 0.730679f, 0.730652f, 0.730626f, 0.7306f,
+0.730574f, 0.730548f, 0.730522f, 0.730496f, 0.73047f, 0.730444f, 0.730418f, 0.730392f, 0.730366f, 0.730339f, 0.730313f, 0.730287f, 0.730261f, 0.730235f, 0.730209f, 0.730183f, 0.730157f, 0.730131f, 0.730105f, 0.730079f,
+0.730053f, 0.730027f, 0.73f, 0.729974f, 0.729948f, 0.729922f, 0.729896f, 0.72987f, 0.729844f, 0.729818f, 0.729792f, 0.729766f, 0.72974f, 0.729714f, 0.729688f, 0.729662f, 0.729635f, 0.729609f, 0.729583f, 0.729557f,
+0.729531f, 0.729505f, 0.729479f, 0.729453f, 0.729427f, 0.729401f, 0.729375f, 0.729349f, 0.729323f, 0.729297f, 0.729271f, 0.729244f, 0.729218f, 0.729192f, 0.729166f, 0.72914f, 0.729114f, 0.729088f, 0.729062f, 0.729036f,
+0.72901f, 0.728984f, 0.728958f, 0.728932f, 0.728906f, 0.72888f, 0.728854f, 0.728828f, 0.728802f, 0.728775f, 0.728749f, 0.728723f, 0.728697f, 0.728671f, 0.728645f, 0.728619f, 0.728593f, 0.728567f, 0.728541f, 0.728515f,
+0.728489f, 0.728463f, 0.728437f, 0.728411f, 0.728385f, 0.728359f, 0.728333f, 0.728307f, 0.728281f, 0.728255f, 0.728228f, 0.728202f, 0.728176f, 0.72815f, 0.728124f, 0.728098f, 0.728072f, 0.728046f, 0.72802f, 0.727994f,
+0.727968f, 0.727942f, 0.727916f, 0.72789f, 0.727864f, 0.727838f, 0.727812f, 0.727786f, 0.72776f, 0.727734f, 0.727708f, 0.727682f, 0.727656f, 0.72763f, 0.727604f, 0.727578f, 0.727552f, 0.727525f, 0.727499f, 0.727473f,
+0.727447f, 0.727421f, 0.727395f, 0.727369f, 0.727343f, 0.727317f, 0.727291f, 0.727265f, 0.727239f, 0.727213f, 0.727187f, 0.727161f, 0.727135f, 0.727109f, 0.727083f, 0.727057f, 0.727031f, 0.727005f, 0.726979f, 0.726953f,
+0.726927f, 0.726901f, 0.726875f, 0.726849f, 0.726823f, 0.726797f, 0.726771f, 0.726745f, 0.726719f, 0.726693f, 0.726667f, 0.726641f, 0.726615f, 0.726589f, 0.726563f, 0.726537f, 0.726511f, 0.726485f, 0.726459f, 0.726433f,
+0.726407f, 0.726381f, 0.726355f, 0.726329f, 0.726303f, 0.726277f, 0.726251f, 0.726225f, 0.726199f, 0.726173f, 0.726147f, 0.726121f, 0.726095f, 0.726069f, 0.726043f, 0.726017f, 0.725991f, 0.725965f, 0.725939f, 0.725913f,
+0.725887f, 0.725861f, 0.725835f, 0.725809f, 0.725783f, 0.725757f, 0.725731f, 0.725705f, 0.725679f, 0.725653f, 0.725627f, 0.725601f, 0.725575f, 0.725549f, 0.725523f, 0.725497f, 0.725471f, 0.725445f, 0.725419f, 0.725393f,
+0.725367f, 0.725341f, 0.725315f, 0.725289f, 0.725263f, 0.725237f, 0.725211f, 0.725185f, 0.725159f, 0.725133f, 0.725107f, 0.725081f, 0.725055f, 0.725029f, 0.725003f, 0.724977f, 0.724951f, 0.724925f, 0.724899f, 0.724873f,
+0.724847f, 0.724821f, 0.724795f, 0.724769f, 0.724743f, 0.724717f, 0.724691f, 0.724665f, 0.724639f, 0.724613f, 0.724587f, 0.724561f, 0.724535f, 0.724509f, 0.724483f, 0.724457f, 0.724431f, 0.724405f, 0.724379f, 0.724353f,
+0.724327f, 0.724301f, 0.724275f, 0.724249f, 0.724223f, 0.724197f, 0.724171f, 0.724146f, 0.72412f, 0.724094f, 0.724068f, 0.724042f, 0.724016f, 0.72399f, 0.723964f, 0.723938f, 0.723912f, 0.723886f, 0.72386f, 0.723834f,
+0.723808f, 0.723782f, 0.723756f, 0.72373f, 0.723704f, 0.723678f, 0.723652f, 0.723626f, 0.7236f, 0.723574f, 0.723548f, 0.723522f, 0.723496f, 0.72347f, 0.723445f, 0.723419f, 0.723393f, 0.723367f, 0.723341f, 0.723315f,
+0.723289f, 0.723263f, 0.723237f, 0.723211f, 0.723185f, 0.723159f, 0.723133f, 0.723107f, 0.723081f, 0.723055f, 0.723029f, 0.723003f, 0.722977f, 0.722951f, 0.722925f, 0.7229f, 0.722874f, 0.722848f, 0.722822f, 0.722796f,
+0.72277f, 0.722744f, 0.722718f, 0.722692f, 0.722666f, 0.72264f, 0.722614f, 0.722588f, 0.722562f, 0.722536f, 0.72251f, 0.722484f, 0.722458f, 0.722433f, 0.722407f, 0.722381f, 0.722355f, 0.722329f, 0.722303f, 0.722277f,
+0.722251f, 0.722225f, 0.722199f, 0.722173f, 0.722147f, 0.722121f, 0.722095f, 0.722069f, 0.722044f, 0.722018f, 0.721992f, 0.721966f, 0.72194f, 0.721914f, 0.721888f, 0.721862f, 0.721836f, 0.72181f, 0.721784f, 0.721758f,
+0.721732f, 0.721706f, 0.721681f, 0.721655f, 0.721629f, 0.721603f, 0.721577f, 0.721551f, 0.721525f, 0.721499f, 0.721473f, 0.721447f, 0.721421f, 0.721395f, 0.721369f, 0.721344f, 0.721318f, 0.721292f, 0.721266f, 0.72124f,
+0.721214f, 0.721188f, 0.721162f, 0.721136f, 0.72111f, 0.721084f, 0.721058f, 0.721033f, 0.721007f, 0.720981f, 0.720955f, 0.720929f, 0.720903f, 0.720877f, 0.720851f, 0.720825f, 0.720799f, 0.720773f, 0.720748f, 0.720722f,
+0.720696f, 0.72067f, 0.720644f, 0.720618f, 0.720592f, 0.720566f, 0.72054f, 0.720514f, 0.720488f, 0.720463f, 0.720437f, 0.720411f, 0.720385f, 0.720359f, 0.720333f, 0.720307f, 0.720281f, 0.720255f, 0.720229f, 0.720204f,
+0.720178f, 0.720152f, 0.720126f, 0.7201f, 0.720074f, 0.720048f, 0.720022f, 0.719996f, 0.71997f, 0.719945f, 0.719919f, 0.719893f, 0.719867f, 0.719841f, 0.719815f, 0.719789f, 0.719763f, 0.719737f, 0.719712f, 0.719686f,
+0.71966f, 0.719634f, 0.719608f, 0.719582f, 0.719556f, 0.71953f, 0.719504f, 0.719479f, 0.719453f, 0.719427f, 0.719401f, 0.719375f, 0.719349f, 0.719323f, 0.719297f, 0.719271f, 0.719246f, 0.71922f, 0.719194f, 0.719168f,
+0.719142f, 0.719116f, 0.71909f, 0.719064f, 0.719039f, 0.719013f, 0.718987f, 0.718961f, 0.718935f, 0.718909f, 0.718883f, 0.718857f, 0.718832f, 0.718806f, 0.71878f, 0.718754f, 0.718728f, 0.718702f, 0.718676f, 0.71865f,
+0.718625f, 0.718599f, 0.718573f, 0.718547f, 0.718521f, 0.718495f, 0.718469f, 0.718444f, 0.718418f, 0.718392f, 0.718366f, 0.71834f, 0.718314f, 0.718288f, 0.718262f, 0.718237f, 0.718211f, 0.718185f, 0.718159f, 0.718133f,
+0.718107f, 0.718081f, 0.718056f, 0.71803f, 0.718004f, 0.717978f, 0.717952f, 0.717926f, 0.7179f, 0.717875f, 0.717849f, 0.717823f, 0.717797f, 0.717771f, 0.717745f, 0.717719f, 0.717694f, 0.717668f, 0.717642f, 0.717616f,
+0.71759f, 0.717564f, 0.717538f, 0.717513f, 0.717487f, 0.717461f, 0.717435f, 0.717409f, 0.717383f, 0.717358f, 0.717332f, 0.717306f, 0.71728f, 0.717254f, 0.717228f, 0.717202f, 0.717177f, 0.717151f, 0.717125f, 0.717099f,
+0.717073f, 0.717047f, 0.717022f, 0.716996f, 0.71697f, 0.716944f, 0.716918f, 0.716892f, 0.716866f, 0.716841f, 0.716815f, 0.716789f, 0.716763f, 0.716737f, 0.716711f, 0.716686f, 0.71666f, 0.716634f, 0.716608f, 0.716582f,
+0.716556f, 0.716531f, 0.716505f, 0.716479f, 0.716453f, 0.716427f, 0.716401f, 0.716376f, 0.71635f, 0.716324f, 0.716298f, 0.716272f, 0.716247f, 0.716221f, 0.716195f, 0.716169f, 0.716143f, 0.716117f, 0.716092f, 0.716066f,
+0.71604f, 0.716014f, 0.715988f, 0.715962f, 0.715937f, 0.715911f, 0.715885f, 0.715859f, 0.715833f, 0.715808f, 0.715782f, 0.715756f, 0.71573f, 0.715704f, 0.715678f, 0.715653f, 0.715627f, 0.715601f, 0.715575f, 0.715549f,
+0.715524f, 0.715498f, 0.715472f, 0.715446f, 0.71542f, 0.715394f, 0.715369f, 0.715343f, 0.715317f, 0.715291f, 0.715265f, 0.71524f, 0.715214f, 0.715188f, 0.715162f, 0.715136f, 0.715111f, 0.715085f, 0.715059f, 0.715033f,
+0.715007f, 0.714982f, 0.714956f, 0.71493f, 0.714904f, 0.714878f, 0.714852f, 0.714827f, 0.714801f, 0.714775f, 0.714749f, 0.714723f, 0.714698f, 0.714672f, 0.714646f, 0.71462f, 0.714594f, 0.714569f, 0.714543f, 0.714517f,
+0.714491f, 0.714466f, 0.71444f, 0.714414f, 0.714388f, 0.714362f, 0.714337f, 0.714311f, 0.714285f, 0.714259f, 0.714233f, 0.714208f, 0.714182f, 0.714156f, 0.71413f, 0.714104f, 0.714079f, 0.714053f, 0.714027f, 0.714001f,
+0.713975f, 0.71395f, 0.713924f, 0.713898f, 0.713872f, 0.713847f, 0.713821f, 0.713795f, 0.713769f, 0.713743f, 0.713718f, 0.713692f, 0.713666f, 0.71364f, 0.713615f, 0.713589f, 0.713563f, 0.713537f, 0.713511f, 0.713486f,
+0.71346f, 0.713434f, 0.713408f, 0.713383f, 0.713357f, 0.713331f, 0.713305f, 0.713279f, 0.713254f, 0.713228f, 0.713202f, 0.713176f, 0.713151f, 0.713125f, 0.713099f, 0.713073f, 0.713047f, 0.713022f, 0.712996f, 0.71297f,
+0.712944f, 0.712919f, 0.712893f, 0.712867f, 0.712841f, 0.712816f, 0.71279f, 0.712764f, 0.712738f, 0.712713f, 0.712687f, 0.712661f, 0.712635f, 0.712609f, 0.712584f, 0.712558f, 0.712532f, 0.712506f, 0.712481f, 0.712455f,
+0.712429f, 0.712403f, 0.712378f, 0.712352f, 0.712326f, 0.7123f, 0.712275f, 0.712249f, 0.712223f, 0.712197f, 0.712172f, 0.712146f, 0.71212f, 0.712094f, 0.712069f, 0.712043f, 0.712017f, 0.711991f, 0.711966f, 0.71194f,
+0.711914f, 0.711888f, 0.711863f, 0.711837f, 0.711811f, 0.711785f, 0.71176f, 0.711734f, 0.711708f, 0.711682f, 0.711657f, 0.711631f, 0.711605f, 0.711579f, 0.711554f, 0.711528f, 0.711502f, 0.711476f, 0.711451f, 0.711425f,
+0.711399f, 0.711373f, 0.711348f, 0.711322f, 0.711296f, 0.71127f, 0.711245f, 0.711219f, 0.711193f, 0.711168f, 0.711142f, 0.711116f, 0.71109f, 0.711065f, 0.711039f, 0.711013f, 0.710987f, 0.710962f, 0.710936f, 0.71091f,
+0.710884f, 0.710859f, 0.710833f, 0.710807f, 0.710782f, 0.710756f, 0.71073f, 0.710704f, 0.710679f, 0.710653f, 0.710627f, 0.710601f, 0.710576f, 0.71055f, 0.710524f, 0.710499f, 0.710473f, 0.710447f, 0.710421f, 0.710396f,
+0.71037f, 0.710344f, 0.710319f, 0.710293f, 0.710267f, 0.710241f, 0.710216f, 0.71019f, 0.710164f, 0.710138f, 0.710113f, 0.710087f, 0.710061f, 0.710036f, 0.71001f, 0.709984f, 0.709958f, 0.709933f, 0.709907f, 0.709881f,
+0.709856f, 0.70983f, 0.709804f, 0.709778f, 0.709753f, 0.709727f, 0.709701f, 0.709676f, 0.70965f, 0.709624f, 0.709599f, 0.709573f, 0.709547f, 0.709521f, 0.709496f, 0.70947f, 0.709444f, 0.709419f, 0.709393f, 0.709367f,
+0.709341f, 0.709316f, 0.70929f, 0.709264f, 0.709239f, 0.709213f, 0.709187f, 0.709162f, 0.709136f, 0.70911f, 0.709084f, 0.709059f, 0.709033f, 0.709007f, 0.708982f, 0.708956f, 0.70893f, 0.708905f, 0.708879f, 0.708853f,
+0.708828f, 0.708802f, 0.708776f, 0.70875f, 0.708725f, 0.708699f, 0.708673f, 0.708648f, 0.708622f, 0.708596f, 0.708571f, 0.708545f, 0.708519f, 0.708494f, 0.708468f, 0.708442f, 0.708416f, 0.708391f, 0.708365f, 0.708339f,
+0.708314f, 0.708288f, 0.708262f, 0.708237f, 0.708211f, 0.708185f, 0.70816f, 0.708134f, 0.708108f, 0.708083f, 0.708057f, 0.708031f, 0.708006f, 0.70798f, 0.707954f, 0.707929f, 0.707903f, 0.707877f, 0.707852f, 0.707826f,
+0.7078f, 0.707774f, 0.707749f, 0.707723f, 0.707697f, 0.707672f, 0.707646f, 0.70762f, 0.707595f, 0.707569f, 0.707543f, 0.707518f, 0.707492f, 0.707466f, 0.707441f, 0.707415f, 0.707389f, 0.707364f, 0.707338f, 0.707312f,
+0.707287f, 0.707261f, 0.707235f, 0.70721f, 0.707184f, 0.707158f, 0.707133f, 0.707107f, 0.707081f, 0.707056f, 0.70703f, 0.707004f, 0.706979f, 0.706953f, 0.706927f, 0.706902f, 0.706876f, 0.706851f, 0.706825f, 0.706799f,
+0.706774f, 0.706748f, 0.706722f, 0.706697f, 0.706671f, 0.706645f, 0.70662f, 0.706594f, 0.706568f, 0.706543f, 0.706517f, 0.706491f, 0.706466f, 0.70644f, 0.706414f, 0.706389f, 0.706363f, 0.706337f, 0.706312f, 0.706286f,
+0.706261f, 0.706235f, 0.706209f, 0.706184f, 0.706158f, 0.706132f, 0.706107f, 0.706081f, 0.706055f, 0.70603f, 0.706004f, 0.705978f, 0.705953f, 0.705927f, 0.705901f, 0.705876f, 0.70585f, 0.705825f, 0.705799f, 0.705773f,
+0.705748f, 0.705722f, 0.705696f, 0.705671f, 0.705645f, 0.705619f, 0.705594f, 0.705568f, 0.705543f, 0.705517f, 0.705491f, 0.705466f, 0.70544f, 0.705414f, 0.705389f, 0.705363f, 0.705338f, 0.705312f, 0.705286f, 0.705261f,
+0.705235f, 0.705209f, 0.705184f, 0.705158f, 0.705132f, 0.705107f, 0.705081f, 0.705056f, 0.70503f, 0.705004f, 0.704979f, 0.704953f, 0.704928f, 0.704902f, 0.704876f, 0.704851f, 0.704825f, 0.704799f, 0.704774f, 0.704748f,
+0.704723f, 0.704697f, 0.704671f, 0.704646f, 0.70462f, 0.704594f, 0.704569f, 0.704543f, 0.704518f, 0.704492f, 0.704466f, 0.704441f, 0.704415f, 0.70439f, 0.704364f, 0.704338f, 0.704313f, 0.704287f, 0.704261f, 0.704236f,
+0.70421f, 0.704185f, 0.704159f, 0.704133f, 0.704108f, 0.704082f, 0.704057f, 0.704031f, 0.704005f, 0.70398f, 0.703954f, 0.703929f, 0.703903f, 0.703877f, 0.703852f, 0.703826f, 0.703801f, 0.703775f, 0.703749f, 0.703724f,
+0.703698f, 0.703673f, 0.703647f, 0.703621f, 0.703596f, 0.70357f, 0.703545f, 0.703519f, 0.703493f, 0.703468f, 0.703442f, 0.703417f, 0.703391f, 0.703365f, 0.70334f, 0.703314f, 0.703289f, 0.703263f, 0.703237f, 0.703212f,
+0.703186f, 0.703161f, 0.703135f, 0.703109f, 0.703084f, 0.703058f, 0.703033f, 0.703007f, 0.702982f, 0.702956f, 0.70293f, 0.702905f, 0.702879f, 0.702854f, 0.702828f, 0.702802f, 0.702777f, 0.702751f, 0.702726f, 0.7027f,
+0.702675f, 0.702649f, 0.702623f, 0.702598f, 0.702572f, 0.702547f, 0.702521f, 0.702495f, 0.70247f, 0.702444f, 0.702419f, 0.702393f, 0.702368f, 0.702342f, 0.702316f, 0.702291f, 0.702265f, 0.70224f, 0.702214f, 0.702189f,
+0.702163f, 0.702137f, 0.702112f, 0.702086f, 0.702061f, 0.702035f, 0.70201f, 0.701984f, 0.701958f, 0.701933f, 0.701907f, 0.701882f, 0.701856f, 0.701831f, 0.701805f, 0.701779f, 0.701754f, 0.701728f, 0.701703f, 0.701677f,
+0.701652f, 0.701626f, 0.701601f, 0.701575f, 0.701549f, 0.701524f, 0.701498f, 0.701473f, 0.701447f, 0.701422f, 0.701396f, 0.70137f, 0.701345f, 0.701319f, 0.701294f, 0.701268f, 0.701243f, 0.701217f, 0.701192f, 0.701166f,
+0.70114f, 0.701115f, 0.701089f, 0.701064f, 0.701038f, 0.701013f, 0.700987f, 0.700962f, 0.700936f, 0.700911f, 0.700885f, 0.700859f, 0.700834f, 0.700808f, 0.700783f, 0.700757f, 0.700732f, 0.700706f, 0.700681f, 0.700655f,
+0.700629f, 0.700604f, 0.700578f, 0.700553f, 0.700527f, 0.700502f, 0.700476f, 0.700451f, 0.700425f, 0.7004f, 0.700374f, 0.700349f, 0.700323f, 0.700297f, 0.700272f, 0.700246f, 0.700221f, 0.700195f, 0.70017f, 0.700144f,
+0.700119f, 0.700093f, 0.700068f, 0.700042f, 0.700017f, 0.699991f, 0.699965f, 0.69994f, 0.699914f, 0.699889f, 0.699863f, 0.699838f, 0.699812f, 0.699787f, 0.699761f, 0.699736f, 0.69971f, 0.699685f, 0.699659f, 0.699634f,
+0.699608f, 0.699583f, 0.699557f, 0.699532f, 0.699506f, 0.69948f, 0.699455f, 0.699429f, 0.699404f, 0.699378f, 0.699353f, 0.699327f, 0.699302f, 0.699276f, 0.699251f, 0.699225f, 0.6992f, 0.699174f, 0.699149f, 0.699123f,
+0.699098f, 0.699072f, 0.699047f, 0.699021f, 0.698996f, 0.69897f, 0.698945f, 0.698919f, 0.698894f, 0.698868f, 0.698843f, 0.698817f, 0.698792f, 0.698766f, 0.69874f, 0.698715f, 0.698689f, 0.698664f, 0.698638f, 0.698613f,
+0.698587f, 0.698562f, 0.698536f, 0.698511f, 0.698485f, 0.69846f, 0.698434f, 0.698409f, 0.698383f, 0.698358f, 0.698332f, 0.698307f, 0.698281f, 0.698256f, 0.69823f, 0.698205f, 0.698179f, 0.698154f, 0.698128f, 0.698103f,
+0.698077f, 0.698052f, 0.698026f, 0.698001f, 0.697975f, 0.69795f, 0.697924f, 0.697899f, 0.697873f, 0.697848f, 0.697822f, 0.697797f, 0.697771f, 0.697746f, 0.69772f, 0.697695f, 0.697669f, 0.697644f, 0.697619f, 0.697593f,
+0.697568f, 0.697542f, 0.697517f, 0.697491f, 0.697466f, 0.69744f, 0.697415f, 0.697389f, 0.697364f, 0.697338f, 0.697313f, 0.697287f, 0.697262f, 0.697236f, 0.697211f, 0.697185f, 0.69716f, 0.697134f, 0.697109f, 0.697083f,
+0.697058f, 0.697032f, 0.697007f, 0.696981f, 0.696956f, 0.69693f, 0.696905f, 0.69688f, 0.696854f, 0.696829f, 0.696803f, 0.696778f, 0.696752f, 0.696727f, 0.696701f, 0.696676f, 0.69665f, 0.696625f, 0.696599f, 0.696574f,
+0.696548f, 0.696523f, 0.696497f, 0.696472f, 0.696446f, 0.696421f, 0.696396f, 0.69637f, 0.696345f, 0.696319f, 0.696294f, 0.696268f, 0.696243f, 0.696217f, 0.696192f, 0.696166f, 0.696141f, 0.696115f, 0.69609f, 0.696065f,
+0.696039f, 0.696014f, 0.695988f, 0.695963f, 0.695937f, 0.695912f, 0.695886f, 0.695861f, 0.695835f, 0.69581f, 0.695784f, 0.695759f, 0.695734f, 0.695708f, 0.695683f, 0.695657f, 0.695632f, 0.695606f, 0.695581f, 0.695555f,
+0.69553f, 0.695504f, 0.695479f, 0.695454f, 0.695428f, 0.695403f, 0.695377f, 0.695352f, 0.695326f, 0.695301f, 0.695275f, 0.69525f, 0.695225f, 0.695199f, 0.695174f, 0.695148f, 0.695123f, 0.695097f, 0.695072f, 0.695046f,
+0.695021f, 0.694996f, 0.69497f, 0.694945f, 0.694919f, 0.694894f, 0.694868f, 0.694843f, 0.694817f, 0.694792f, 0.694767f, 0.694741f, 0.694716f, 0.69469f, 0.694665f, 0.694639f, 0.694614f, 0.694589f, 0.694563f, 0.694538f,
+0.694512f, 0.694487f, 0.694461f, 0.694436f, 0.694411f, 0.694385f, 0.69436f, 0.694334f, 0.694309f, 0.694283f, 0.694258f, 0.694233f, 0.694207f, 0.694182f, 0.694156f, 0.694131f, 0.694105f, 0.69408f, 0.694055f, 0.694029f,
+0.694004f, 0.693978f, 0.693953f, 0.693927f, 0.693902f, 0.693877f, 0.693851f, 0.693826f, 0.6938f, 0.693775f, 0.693749f, 0.693724f, 0.693699f, 0.693673f, 0.693648f, 0.693622f, 0.693597f, 0.693572f, 0.693546f, 0.693521f,
+0.693495f, 0.69347f, 0.693445f, 0.693419f, 0.693394f, 0.693368f, 0.693343f, 0.693317f, 0.693292f, 0.693267f, 0.693241f, 0.693216f, 0.69319f, 0.693165f, 0.69314f, 0.693114f, 0.693089f, 0.693063f, 0.693038f, 0.693013f,
+0.692987f, 0.692962f, 0.692936f, 0.692911f, 0.692886f, 0.69286f, 0.692835f, 0.692809f, 0.692784f, 0.692759f, 0.692733f, 0.692708f, 0.692682f, 0.692657f, 0.692632f, 0.692606f, 0.692581f, 0.692555f, 0.69253f, 0.692505f,
+0.692479f, 0.692454f, 0.692428f, 0.692403f, 0.692378f, 0.692352f, 0.692327f, 0.692301f, 0.692276f, 0.692251f, 0.692225f, 0.6922f, 0.692174f, 0.692149f, 0.692124f, 0.692098f, 0.692073f, 0.692047f, 0.692022f, 0.691997f,
+0.691971f, 0.691946f, 0.691921f, 0.691895f, 0.69187f, 0.691844f, 0.691819f, 0.691794f, 0.691768f, 0.691743f, 0.691717f, 0.691692f, 0.691667f, 0.691641f, 0.691616f, 0.691591f, 0.691565f, 0.69154f, 0.691514f, 0.691489f,
+0.691464f, 0.691438f, 0.691413f, 0.691388f, 0.691362f, 0.691337f, 0.691311f, 0.691286f, 0.691261f, 0.691235f, 0.69121f, 0.691185f, 0.691159f, 0.691134f, 0.691108f, 0.691083f, 0.691058f, 0.691032f, 0.691007f, 0.690982f,
+0.690956f, 0.690931f, 0.690906f, 0.69088f, 0.690855f, 0.690829f, 0.690804f, 0.690779f, 0.690753f, 0.690728f, 0.690703f, 0.690677f, 0.690652f, 0.690627f, 0.690601f, 0.690576f, 0.69055f, 0.690525f, 0.6905f, 0.690474f,
+0.690449f, 0.690424f, 0.690398f, 0.690373f, 0.690348f, 0.690322f, 0.690297f, 0.690272f, 0.690246f, 0.690221f, 0.690195f, 0.69017f, 0.690145f, 0.690119f, 0.690094f, 0.690069f, 0.690043f, 0.690018f, 0.689993f, 0.689967f,
+0.689942f, 0.689917f, 0.689891f, 0.689866f, 0.689841f, 0.689815f, 0.68979f, 0.689765f, 0.689739f, 0.689714f, 0.689688f, 0.689663f, 0.689638f, 0.689612f, 0.689587f, 0.689562f, 0.689536f, 0.689511f, 0.689486f, 0.68946f,
+0.689435f, 0.68941f, 0.689384f, 0.689359f, 0.689334f, 0.689308f, 0.689283f, 0.689258f, 0.689232f, 0.689207f, 0.689182f, 0.689156f, 0.689131f, 0.689106f, 0.68908f, 0.689055f, 0.68903f, 0.689004f, 0.688979f, 0.688954f,
+0.688928f, 0.688903f, 0.688878f, 0.688852f, 0.688827f, 0.688802f, 0.688776f, 0.688751f, 0.688726f, 0.6887f, 0.688675f, 0.68865f, 0.688624f, 0.688599f, 0.688574f, 0.688548f, 0.688523f, 0.688498f, 0.688473f, 0.688447f,
+0.688422f, 0.688397f, 0.688371f, 0.688346f, 0.688321f, 0.688295f, 0.68827f, 0.688245f, 0.688219f, 0.688194f, 0.688169f, 0.688143f, 0.688118f, 0.688093f, 0.688067f, 0.688042f, 0.688017f, 0.687991f, 0.687966f, 0.687941f,
+0.687916f, 0.68789f, 0.687865f, 0.68784f, 0.687814f, 0.687789f, 0.687764f, 0.687738f, 0.687713f, 0.687688f, 0.687662f, 0.687637f, 0.687612f, 0.687587f, 0.687561f, 0.687536f, 0.687511f, 0.687485f, 0.68746f, 0.687435f,
+0.687409f, 0.687384f, 0.687359f, 0.687333f, 0.687308f, 0.687283f, 0.687258f, 0.687232f, 0.687207f, 0.687182f, 0.687156f, 0.687131f, 0.687106f, 0.687081f, 0.687055f, 0.68703f, 0.687005f, 0.686979f, 0.686954f, 0.686929f,
+0.686903f, 0.686878f, 0.686853f, 0.686828f, 0.686802f, 0.686777f, 0.686752f, 0.686726f, 0.686701f, 0.686676f, 0.686651f, 0.686625f, 0.6866f, 0.686575f, 0.686549f, 0.686524f, 0.686499f, 0.686474f, 0.686448f, 0.686423f,
+0.686398f, 0.686372f, 0.686347f, 0.686322f, 0.686297f, 0.686271f, 0.686246f, 0.686221f, 0.686195f, 0.68617f, 0.686145f, 0.68612f, 0.686094f, 0.686069f, 0.686044f, 0.686018f, 0.685993f, 0.685968f, 0.685943f, 0.685917f,
+0.685892f, 0.685867f, 0.685842f, 0.685816f, 0.685791f, 0.685766f, 0.68574f, 0.685715f, 0.68569f, 0.685665f, 0.685639f, 0.685614f, 0.685589f, 0.685564f, 0.685538f, 0.685513f, 0.685488f, 0.685463f, 0.685437f, 0.685412f,
+0.685387f, 0.685361f, 0.685336f, 0.685311f, 0.685286f, 0.68526f, 0.685235f, 0.68521f, 0.685185f, 0.685159f, 0.685134f, 0.685109f, 0.685084f, 0.685058f, 0.685033f, 0.685008f, 0.684983f, 0.684957f, 0.684932f, 0.684907f,
+0.684882f, 0.684856f, 0.684831f, 0.684806f, 0.68478f, 0.684755f, 0.68473f, 0.684705f, 0.684679f, 0.684654f, 0.684629f, 0.684604f, 0.684578f, 0.684553f, 0.684528f, 0.684503f, 0.684477f, 0.684452f, 0.684427f, 0.684402f,
+0.684376f, 0.684351f, 0.684326f, 0.684301f, 0.684276f, 0.68425f, 0.684225f, 0.6842f, 0.684175f, 0.684149f, 0.684124f, 0.684099f, 0.684074f, 0.684048f, 0.684023f, 0.683998f, 0.683973f, 0.683947f, 0.683922f, 0.683897f,
+0.683872f, 0.683846f, 0.683821f, 0.683796f, 0.683771f, 0.683745f, 0.68372f, 0.683695f, 0.68367f, 0.683645f, 0.683619f, 0.683594f, 0.683569f, 0.683544f, 0.683518f, 0.683493f, 0.683468f, 0.683443f, 0.683417f, 0.683392f,
+0.683367f, 0.683342f, 0.683317f, 0.683291f, 0.683266f, 0.683241f, 0.683216f, 0.68319f, 0.683165f, 0.68314f, 0.683115f, 0.68309f, 0.683064f, 0.683039f, 0.683014f, 0.682989f, 0.682963f, 0.682938f, 0.682913f, 0.682888f,
+0.682863f, 0.682837f, 0.682812f, 0.682787f, 0.682762f, 0.682736f, 0.682711f, 0.682686f, 0.682661f, 0.682636f, 0.68261f, 0.682585f, 0.68256f, 0.682535f, 0.68251f, 0.682484f, 0.682459f, 0.682434f, 0.682409f, 0.682383f,
+0.682358f, 0.682333f, 0.682308f, 0.682283f, 0.682257f, 0.682232f, 0.682207f, 0.682182f, 0.682157f, 0.682131f, 0.682106f, 0.682081f, 0.682056f, 0.682031f, 0.682005f, 0.68198f, 0.681955f, 0.68193f, 0.681905f, 0.681879f,
+0.681854f, 0.681829f, 0.681804f, 0.681779f, 0.681753f, 0.681728f, 0.681703f, 0.681678f, 0.681653f, 0.681627f, 0.681602f, 0.681577f, 0.681552f, 0.681527f, 0.681501f, 0.681476f, 0.681451f, 0.681426f, 0.681401f, 0.681375f,
+0.68135f, 0.681325f, 0.6813f, 0.681275f, 0.68125f, 0.681224f, 0.681199f, 0.681174f, 0.681149f, 0.681124f, 0.681098f, 0.681073f, 0.681048f, 0.681023f, 0.680998f, 0.680972f, 0.680947f, 0.680922f, 0.680897f, 0.680872f,
+0.680847f, 0.680821f, 0.680796f, 0.680771f, 0.680746f, 0.680721f, 0.680695f, 0.68067f, 0.680645f, 0.68062f, 0.680595f, 0.68057f, 0.680544f, 0.680519f, 0.680494f, 0.680469f, 0.680444f, 0.680419f, 0.680393f, 0.680368f,
+0.680343f, 0.680318f, 0.680293f, 0.680268f, 0.680242f, 0.680217f, 0.680192f, 0.680167f, 0.680142f, 0.680117f, 0.680091f, 0.680066f, 0.680041f, 0.680016f, 0.679991f, 0.679966f, 0.67994f, 0.679915f, 0.67989f, 0.679865f,
+0.67984f, 0.679815f, 0.679789f, 0.679764f, 0.679739f, 0.679714f, 0.679689f, 0.679664f, 0.679638f, 0.679613f, 0.679588f, 0.679563f, 0.679538f, 0.679513f, 0.679487f, 0.679462f, 0.679437f, 0.679412f, 0.679387f, 0.679362f,
+0.679337f, 0.679311f, 0.679286f, 0.679261f, 0.679236f, 0.679211f, 0.679186f, 0.67916f, 0.679135f, 0.67911f, 0.679085f, 0.67906f, 0.679035f, 0.67901f, 0.678984f, 0.678959f, 0.678934f, 0.678909f, 0.678884f, 0.678859f,
+0.678834f, 0.678808f, 0.678783f, 0.678758f, 0.678733f, 0.678708f, 0.678683f, 0.678658f, 0.678632f, 0.678607f, 0.678582f, 0.678557f, 0.678532f, 0.678507f, 0.678482f, 0.678456f, 0.678431f, 0.678406f, 0.678381f, 0.678356f,
+0.678331f, 0.678306f, 0.678281f, 0.678255f, 0.67823f, 0.678205f, 0.67818f, 0.678155f, 0.67813f, 0.678105f, 0.678079f, 0.678054f, 0.678029f, 0.678004f, 0.677979f, 0.677954f, 0.677929f, 0.677904f, 0.677878f, 0.677853f,
+0.677828f, 0.677803f, 0.677778f, 0.677753f, 0.677728f, 0.677703f, 0.677677f, 0.677652f, 0.677627f, 0.677602f, 0.677577f, 0.677552f, 0.677527f, 0.677502f, 0.677476f, 0.677451f, 0.677426f, 0.677401f, 0.677376f, 0.677351f,
+0.677326f, 0.677301f, 0.677276f, 0.67725f, 0.677225f, 0.6772f, 0.677175f, 0.67715f, 0.677125f, 0.6771f, 0.677075f, 0.67705f, 0.677024f, 0.676999f, 0.676974f, 0.676949f, 0.676924f, 0.676899f, 0.676874f, 0.676849f,
+0.676824f, 0.676798f, 0.676773f, 0.676748f, 0.676723f, 0.676698f, 0.676673f, 0.676648f, 0.676623f, 0.676598f, 0.676573f, 0.676547f, 0.676522f, 0.676497f, 0.676472f, 0.676447f, 0.676422f, 0.676397f, 0.676372f, 0.676347f,
+0.676322f, 0.676296f, 0.676271f, 0.676246f, 0.676221f, 0.676196f, 0.676171f, 0.676146f, 0.676121f, 0.676096f, 0.676071f, 0.676045f, 0.67602f, 0.675995f, 0.67597f, 0.675945f, 0.67592f, 0.675895f, 0.67587f, 0.675845f,
+0.67582f, 0.675795f, 0.675769f, 0.675744f, 0.675719f, 0.675694f, 0.675669f, 0.675644f, 0.675619f, 0.675594f, 0.675569f, 0.675544f, 0.675519f, 0.675494f, 0.675468f, 0.675443f, 0.675418f, 0.675393f, 0.675368f, 0.675343f,
+0.675318f, 0.675293f, 0.675268f, 0.675243f, 0.675218f, 0.675193f, 0.675168f, 0.675142f, 0.675117f, 0.675092f, 0.675067f, 0.675042f, 0.675017f, 0.674992f, 0.674967f, 0.674942f, 0.674917f, 0.674892f, 0.674867f, 0.674842f,
+0.674817f, 0.674791f, 0.674766f, 0.674741f, 0.674716f, 0.674691f, 0.674666f, 0.674641f, 0.674616f, 0.674591f, 0.674566f, 0.674541f, 0.674516f, 0.674491f, 0.674466f, 0.674441f, 0.674415f, 0.67439f, 0.674365f, 0.67434f,
+0.674315f, 0.67429f, 0.674265f, 0.67424f, 0.674215f, 0.67419f, 0.674165f, 0.67414f, 0.674115f, 0.67409f, 0.674065f, 0.67404f, 0.674015f, 0.673989f, 0.673964f, 0.673939f, 0.673914f, 0.673889f, 0.673864f, 0.673839f,
+0.673814f, 0.673789f, 0.673764f, 0.673739f, 0.673714f, 0.673689f, 0.673664f, 0.673639f, 0.673614f, 0.673589f, 0.673564f, 0.673539f, 0.673514f, 0.673489f, 0.673463f, 0.673438f, 0.673413f, 0.673388f, 0.673363f, 0.673338f,
+0.673313f, 0.673288f, 0.673263f, 0.673238f, 0.673213f, 0.673188f, 0.673163f, 0.673138f, 0.673113f, 0.673088f, 0.673063f, 0.673038f, 0.673013f, 0.672988f, 0.672963f, 0.672938f, 0.672913f, 0.672888f, 0.672863f, 0.672837f,
+0.672812f, 0.672787f, 0.672762f, 0.672737f, 0.672712f, 0.672687f, 0.672662f, 0.672637f, 0.672612f, 0.672587f, 0.672562f, 0.672537f, 0.672512f, 0.672487f, 0.672462f, 0.672437f, 0.672412f, 0.672387f, 0.672362f, 0.672337f,
+0.672312f, 0.672287f, 0.672262f, 0.672237f, 0.672212f, 0.672187f, 0.672162f, 0.672137f, 0.672112f, 0.672087f, 0.672062f, 0.672037f, 0.672012f, 0.671987f, 0.671962f, 0.671937f, 0.671912f, 0.671887f, 0.671862f, 0.671837f,
+0.671812f, 0.671787f, 0.671762f, 0.671737f, 0.671712f, 0.671686f, 0.671661f, 0.671636f, 0.671611f, 0.671586f, 0.671561f, 0.671536f, 0.671511f, 0.671486f, 0.671461f, 0.671436f, 0.671411f, 0.671386f, 0.671361f, 0.671336f,
+0.671311f, 0.671286f, 0.671261f, 0.671236f, 0.671211f, 0.671186f, 0.671161f, 0.671136f, 0.671111f, 0.671086f, 0.671061f, 0.671036f, 0.671011f, 0.670986f, 0.670961f, 0.670936f, 0.670911f, 0.670886f, 0.670861f, 0.670836f,
+0.670811f, 0.670786f, 0.670761f, 0.670736f, 0.670711f, 0.670686f, 0.670661f, 0.670636f, 0.670611f, 0.670586f, 0.670561f, 0.670536f, 0.670511f, 0.670486f, 0.670462f, 0.670437f, 0.670412f, 0.670387f, 0.670362f, 0.670337f,
+0.670312f, 0.670287f, 0.670262f, 0.670237f, 0.670212f, 0.670187f, 0.670162f, 0.670137f, 0.670112f, 0.670087f, 0.670062f, 0.670037f, 0.670012f, 0.669987f, 0.669962f, 0.669937f, 0.669912f, 0.669887f, 0.669862f, 0.669837f,
+0.669812f, 0.669787f, 0.669762f, 0.669737f, 0.669712f, 0.669687f, 0.669662f, 0.669637f, 0.669612f, 0.669587f, 0.669562f, 0.669537f, 0.669512f, 0.669487f, 0.669462f, 0.669437f, 0.669412f, 0.669387f, 0.669362f, 0.669338f,
+0.669313f, 0.669288f, 0.669263f, 0.669238f, 0.669213f, 0.669188f, 0.669163f, 0.669138f, 0.669113f, 0.669088f, 0.669063f, 0.669038f, 0.669013f, 0.668988f, 0.668963f, 0.668938f, 0.668913f, 0.668888f, 0.668863f, 0.668838f,
+0.668813f, 0.668788f, 0.668763f, 0.668738f, 0.668713f, 0.668689f, 0.668664f, 0.668639f, 0.668614f, 0.668589f, 0.668564f, 0.668539f, 0.668514f, 0.668489f, 0.668464f, 0.668439f, 0.668414f, 0.668389f, 0.668364f, 0.668339f,
+0.668314f, 0.668289f, 0.668264f, 0.668239f, 0.668214f, 0.668189f, 0.668165f, 0.66814f, 0.668115f, 0.66809f, 0.668065f, 0.66804f, 0.668015f, 0.66799f, 0.667965f, 0.66794f, 0.667915f, 0.66789f, 0.667865f, 0.66784f,
+0.667815f, 0.66779f, 0.667765f, 0.667741f, 0.667716f, 0.667691f, 0.667666f, 0.667641f, 0.667616f, 0.667591f, 0.667566f, 0.667541f, 0.667516f, 0.667491f, 0.667466f, 0.667441f, 0.667416f, 0.667391f, 0.667367f, 0.667342f,
+0.667317f, 0.667292f, 0.667267f, 0.667242f, 0.667217f, 0.667192f, 0.667167f, 0.667142f, 0.667117f, 0.667092f, 0.667067f, 0.667042f, 0.667018f, 0.666993f, 0.666968f, 0.666943f, 0.666918f, 0.666893f, 0.666868f, 0.666843f,
+0.666818f, 0.666793f, 0.666768f, 0.666743f, 0.666718f, 0.666694f, 0.666669f, 0.666644f, 0.666619f, 0.666594f, 0.666569f, 0.666544f, 0.666519f, 0.666494f, 0.666469f, 0.666444f, 0.66642f, 0.666395f, 0.66637f, 0.666345f,
+0.66632f, 0.666295f, 0.66627f, 0.666245f, 0.66622f, 0.666195f, 0.66617f, 0.666145f, 0.666121f, 0.666096f, 0.666071f, 0.666046f, 0.666021f, 0.665996f, 0.665971f, 0.665946f, 0.665921f, 0.665896f, 0.665872f, 0.665847f,
+0.665822f, 0.665797f, 0.665772f, 0.665747f, 0.665722f, 0.665697f, 0.665672f, 0.665647f, 0.665623f, 0.665598f, 0.665573f, 0.665548f, 0.665523f, 0.665498f, 0.665473f, 0.665448f, 0.665423f, 0.665398f, 0.665374f, 0.665349f,
+0.665324f, 0.665299f, 0.665274f, 0.665249f, 0.665224f, 0.665199f, 0.665174f, 0.66515f, 0.665125f, 0.6651f, 0.665075f, 0.66505f, 0.665025f, 0.665f, 0.664975f, 0.66495f, 0.664926f, 0.664901f, 0.664876f, 0.664851f,
+0.664826f, 0.664801f, 0.664776f, 0.664751f, 0.664727f, 0.664702f, 0.664677f, 0.664652f, 0.664627f, 0.664602f, 0.664577f, 0.664552f, 0.664527f, 0.664503f, 0.664478f, 0.664453f, 0.664428f, 0.664403f, 0.664378f, 0.664353f,
+0.664328f, 0.664304f, 0.664279f, 0.664254f, 0.664229f, 0.664204f, 0.664179f, 0.664154f, 0.664129f, 0.664105f, 0.66408f, 0.664055f, 0.66403f, 0.664005f, 0.66398f, 0.663955f, 0.663931f, 0.663906f, 0.663881f, 0.663856f,
+0.663831f, 0.663806f, 0.663781f, 0.663756f, 0.663732f, 0.663707f, 0.663682f, 0.663657f, 0.663632f, 0.663607f, 0.663582f, 0.663558f, 0.663533f, 0.663508f, 0.663483f, 0.663458f, 0.663433f, 0.663408f, 0.663384f, 0.663359f,
+0.663334f, 0.663309f, 0.663284f, 0.663259f, 0.663234f, 0.66321f, 0.663185f, 0.66316f, 0.663135f, 0.66311f, 0.663085f, 0.663061f, 0.663036f, 0.663011f, 0.662986f, 0.662961f, 0.662936f, 0.662911f, 0.662887f, 0.662862f,
+0.662837f, 0.662812f, 0.662787f, 0.662762f, 0.662738f, 0.662713f, 0.662688f, 0.662663f, 0.662638f, 0.662613f, 0.662588f, 0.662564f, 0.662539f, 0.662514f, 0.662489f, 0.662464f, 0.662439f, 0.662415f, 0.66239f, 0.662365f,
+0.66234f, 0.662315f, 0.66229f, 0.662266f, 0.662241f, 0.662216f, 0.662191f, 0.662166f, 0.662141f, 0.662117f, 0.662092f, 0.662067f, 0.662042f, 0.662017f, 0.661992f, 0.661968f, 0.661943f, 0.661918f, 0.661893f, 0.661868f,
+0.661843f, 0.661819f, 0.661794f, 0.661769f, 0.661744f, 0.661719f, 0.661694f, 0.66167f, 0.661645f, 0.66162f, 0.661595f, 0.66157f, 0.661546f, 0.661521f, 0.661496f, 0.661471f, 0.661446f, 0.661421f, 0.661397f, 0.661372f,
+0.661347f, 0.661322f, 0.661297f, 0.661273f, 0.661248f, 0.661223f, 0.661198f, 0.661173f, 0.661148f, 0.661124f, 0.661099f, 0.661074f, 0.661049f, 0.661024f, 0.661f, 0.660975f, 0.66095f, 0.660925f, 0.6609f, 0.660876f,
+0.660851f, 0.660826f, 0.660801f, 0.660776f, 0.660751f, 0.660727f, 0.660702f, 0.660677f, 0.660652f, 0.660627f, 0.660603f, 0.660578f, 0.660553f, 0.660528f, 0.660503f, 0.660479f, 0.660454f, 0.660429f, 0.660404f, 0.660379f,
+0.660355f, 0.66033f, 0.660305f, 0.66028f, 0.660255f, 0.660231f, 0.660206f, 0.660181f, 0.660156f, 0.660131f, 0.660107f, 0.660082f, 0.660057f, 0.660032f, 0.660007f, 0.659983f, 0.659958f, 0.659933f, 0.659908f, 0.659884f,
+0.659859f, 0.659834f, 0.659809f, 0.659784f, 0.65976f, 0.659735f, 0.65971f, 0.659685f, 0.65966f, 0.659636f, 0.659611f, 0.659586f, 0.659561f, 0.659537f, 0.659512f, 0.659487f, 0.659462f, 0.659437f, 0.659413f, 0.659388f,
+0.659363f, 0.659338f, 0.659313f, 0.659289f, 0.659264f, 0.659239f, 0.659214f, 0.65919f, 0.659165f, 0.65914f, 0.659115f, 0.65909f, 0.659066f, 0.659041f, 0.659016f, 0.658991f, 0.658967f, 0.658942f, 0.658917f, 0.658892f,
+0.658868f, 0.658843f, 0.658818f, 0.658793f, 0.658768f, 0.658744f, 0.658719f, 0.658694f, 0.658669f, 0.658645f, 0.65862f, 0.658595f, 0.65857f, 0.658546f, 0.658521f, 0.658496f, 0.658471f, 0.658446f, 0.658422f, 0.658397f,
+0.658372f, 0.658347f, 0.658323f, 0.658298f, 0.658273f, 0.658248f, 0.658224f, 0.658199f, 0.658174f, 0.658149f, 0.658125f, 0.6581f, 0.658075f, 0.65805f, 0.658026f, 0.658001f, 0.657976f, 0.657951f, 0.657927f, 0.657902f,
+0.657877f, 0.657852f, 0.657828f, 0.657803f, 0.657778f, 0.657753f, 0.657729f, 0.657704f, 0.657679f, 0.657654f, 0.65763f, 0.657605f, 0.65758f, 0.657555f, 0.657531f, 0.657506f, 0.657481f, 0.657456f, 0.657432f, 0.657407f,
+0.657382f, 0.657357f, 0.657333f, 0.657308f, 0.657283f, 0.657258f, 0.657234f, 0.657209f, 0.657184f, 0.657159f, 0.657135f, 0.65711f, 0.657085f, 0.65706f, 0.657036f, 0.657011f, 0.656986f, 0.656962f, 0.656937f, 0.656912f,
+0.656887f, 0.656863f, 0.656838f, 0.656813f, 0.656788f, 0.656764f, 0.656739f, 0.656714f, 0.656689f, 0.656665f, 0.65664f, 0.656615f, 0.656591f, 0.656566f, 0.656541f, 0.656516f, 0.656492f, 0.656467f, 0.656442f, 0.656417f,
+0.656393f, 0.656368f, 0.656343f, 0.656319f, 0.656294f, 0.656269f, 0.656244f, 0.65622f, 0.656195f, 0.65617f, 0.656145f, 0.656121f, 0.656096f, 0.656071f, 0.656047f, 0.656022f, 0.655997f, 0.655972f, 0.655948f, 0.655923f,
+0.655898f, 0.655874f, 0.655849f, 0.655824f, 0.655799f, 0.655775f, 0.65575f, 0.655725f, 0.655701f, 0.655676f, 0.655651f, 0.655626f, 0.655602f, 0.655577f, 0.655552f, 0.655528f, 0.655503f, 0.655478f, 0.655454f, 0.655429f,
+0.655404f, 0.655379f, 0.655355f, 0.65533f, 0.655305f, 0.655281f, 0.655256f, 0.655231f, 0.655206f, 0.655182f, 0.655157f, 0.655132f, 0.655108f, 0.655083f, 0.655058f, 0.655034f, 0.655009f, 0.654984f, 0.654959f, 0.654935f,
+0.65491f, 0.654885f, 0.654861f, 0.654836f, 0.654811f, 0.654787f, 0.654762f, 0.654737f, 0.654713f, 0.654688f, 0.654663f, 0.654638f, 0.654614f, 0.654589f, 0.654564f, 0.65454f, 0.654515f, 0.65449f, 0.654466f, 0.654441f,
+0.654416f, 0.654392f, 0.654367f, 0.654342f, 0.654317f, 0.654293f, 0.654268f, 0.654243f, 0.654219f, 0.654194f, 0.654169f, 0.654145f, 0.65412f, 0.654095f, 0.654071f, 0.654046f, 0.654021f, 0.653997f, 0.653972f, 0.653947f,
+0.653923f, 0.653898f, 0.653873f, 0.653849f, 0.653824f, 0.653799f, 0.653775f, 0.65375f, 0.653725f, 0.6537f, 0.653676f, 0.653651f, 0.653626f, 0.653602f, 0.653577f, 0.653552f, 0.653528f, 0.653503f, 0.653478f, 0.653454f,
+0.653429f, 0.653404f, 0.65338f, 0.653355f, 0.65333f, 0.653306f, 0.653281f, 0.653256f, 0.653232f, 0.653207f, 0.653182f, 0.653158f, 0.653133f, 0.653108f, 0.653084f, 0.653059f, 0.653034f, 0.65301f, 0.652985f, 0.65296f,
+0.652936f, 0.652911f, 0.652886f, 0.652862f, 0.652837f, 0.652813f, 0.652788f, 0.652763f, 0.652739f, 0.652714f, 0.652689f, 0.652665f, 0.65264f, 0.652615f, 0.652591f, 0.652566f, 0.652541f, 0.652517f, 0.652492f, 0.652467f,
+0.652443f, 0.652418f, 0.652393f, 0.652369f, 0.652344f, 0.652319f, 0.652295f, 0.65227f, 0.652246f, 0.652221f, 0.652196f, 0.652172f, 0.652147f, 0.652122f, 0.652098f, 0.652073f, 0.652048f, 0.652024f, 0.651999f, 0.651974f,
+0.65195f, 0.651925f, 0.651901f, 0.651876f, 0.651851f, 0.651827f, 0.651802f, 0.651777f, 0.651753f, 0.651728f, 0.651703f, 0.651679f, 0.651654f, 0.65163f, 0.651605f, 0.65158f, 0.651556f, 0.651531f, 0.651506f, 0.651482f,
+0.651457f, 0.651432f, 0.651408f, 0.651383f, 0.651359f, 0.651334f, 0.651309f, 0.651285f, 0.65126f, 0.651235f, 0.651211f, 0.651186f, 0.651162f, 0.651137f, 0.651112f, 0.651088f, 0.651063f, 0.651038f, 0.651014f, 0.650989f,
+0.650965f, 0.65094f, 0.650915f, 0.650891f, 0.650866f, 0.650841f, 0.650817f, 0.650792f, 0.650768f, 0.650743f, 0.650718f, 0.650694f, 0.650669f, 0.650644f, 0.65062f, 0.650595f, 0.650571f, 0.650546f, 0.650521f, 0.650497f,
+0.650472f, 0.650448f, 0.650423f, 0.650398f, 0.650374f, 0.650349f, 0.650325f, 0.6503f, 0.650275f, 0.650251f, 0.650226f, 0.650201f, 0.650177f, 0.650152f, 0.650128f, 0.650103f, 0.650078f, 0.650054f, 0.650029f, 0.650005f,
+0.64998f, 0.649955f, 0.649931f, 0.649906f, 0.649882f, 0.649857f, 0.649832f, 0.649808f, 0.649783f, 0.649759f, 0.649734f, 0.649709f, 0.649685f, 0.64966f, 0.649636f, 0.649611f, 0.649586f, 0.649562f, 0.649537f, 0.649513f,
+0.649488f, 0.649463f, 0.649439f, 0.649414f, 0.64939f, 0.649365f, 0.64934f, 0.649316f, 0.649291f, 0.649267f, 0.649242f, 0.649218f, 0.649193f, 0.649168f, 0.649144f, 0.649119f, 0.649095f, 0.64907f, 0.649045f, 0.649021f,
+0.648996f, 0.648972f, 0.648947f, 0.648922f, 0.648898f, 0.648873f, 0.648849f, 0.648824f, 0.6488f, 0.648775f, 0.64875f, 0.648726f, 0.648701f, 0.648677f, 0.648652f, 0.648628f, 0.648603f, 0.648578f, 0.648554f, 0.648529f,
+0.648505f, 0.64848f, 0.648455f, 0.648431f, 0.648406f, 0.648382f, 0.648357f, 0.648333f, 0.648308f, 0.648283f, 0.648259f, 0.648234f, 0.64821f, 0.648185f, 0.648161f, 0.648136f, 0.648111f, 0.648087f, 0.648062f, 0.648038f,
+0.648013f, 0.647989f, 0.647964f, 0.64794f, 0.647915f, 0.64789f, 0.647866f, 0.647841f, 0.647817f, 0.647792f, 0.647768f, 0.647743f, 0.647718f, 0.647694f, 0.647669f, 0.647645f, 0.64762f, 0.647596f, 0.647571f, 0.647547f,
+0.647522f, 0.647497f, 0.647473f, 0.647448f, 0.647424f, 0.647399f, 0.647375f, 0.64735f, 0.647326f, 0.647301f, 0.647276f, 0.647252f, 0.647227f, 0.647203f, 0.647178f, 0.647154f, 0.647129f, 0.647105f, 0.64708f, 0.647055f,
+0.647031f, 0.647006f, 0.646982f, 0.646957f, 0.646933f, 0.646908f, 0.646884f, 0.646859f, 0.646835f, 0.64681f, 0.646785f, 0.646761f, 0.646736f, 0.646712f, 0.646687f, 0.646663f, 0.646638f, 0.646614f, 0.646589f, 0.646565f,
+0.64654f, 0.646516f, 0.646491f, 0.646466f, 0.646442f, 0.646417f, 0.646393f, 0.646368f, 0.646344f, 0.646319f, 0.646295f, 0.64627f, 0.646246f, 0.646221f, 0.646197f, 0.646172f, 0.646148f, 0.646123f, 0.646098f, 0.646074f,
+0.646049f, 0.646025f, 0.646f, 0.645976f, 0.645951f, 0.645927f, 0.645902f, 0.645878f, 0.645853f, 0.645829f, 0.645804f, 0.64578f, 0.645755f, 0.645731f, 0.645706f, 0.645681f, 0.645657f, 0.645632f, 0.645608f, 0.645583f,
+0.645559f, 0.645534f, 0.64551f, 0.645485f, 0.645461f, 0.645436f, 0.645412f, 0.645387f, 0.645363f, 0.645338f, 0.645314f, 0.645289f, 0.645265f, 0.64524f, 0.645216f, 0.645191f, 0.645167f, 0.645142f, 0.645118f, 0.645093f,
+0.645069f, 0.645044f, 0.64502f, 0.644995f, 0.644971f, 0.644946f, 0.644922f, 0.644897f, 0.644873f, 0.644848f, 0.644824f, 0.644799f, 0.644774f, 0.64475f, 0.644725f, 0.644701f, 0.644676f, 0.644652f, 0.644627f, 0.644603f,
+0.644578f, 0.644554f, 0.644529f, 0.644505f, 0.64448f, 0.644456f, 0.644431f, 0.644407f, 0.644382f, 0.644358f, 0.644333f, 0.644309f, 0.644284f, 0.64426f, 0.644236f, 0.644211f, 0.644187f, 0.644162f, 0.644138f, 0.644113f,
+0.644089f, 0.644064f, 0.64404f, 0.644015f, 0.643991f, 0.643966f, 0.643942f, 0.643917f, 0.643893f, 0.643868f, 0.643844f, 0.643819f, 0.643795f, 0.64377f, 0.643746f, 0.643721f, 0.643697f, 0.643672f, 0.643648f, 0.643623f,
+0.643599f, 0.643574f, 0.64355f, 0.643525f, 0.643501f, 0.643476f, 0.643452f, 0.643427f, 0.643403f, 0.643378f, 0.643354f, 0.64333f, 0.643305f, 0.643281f, 0.643256f, 0.643232f, 0.643207f, 0.643183f, 0.643158f, 0.643134f,
+0.643109f, 0.643085f, 0.64306f, 0.643036f, 0.643011f, 0.642987f, 0.642962f, 0.642938f, 0.642913f, 0.642889f, 0.642865f, 0.64284f, 0.642816f, 0.642791f, 0.642767f, 0.642742f, 0.642718f, 0.642693f, 0.642669f, 0.642644f,
+0.64262f, 0.642595f, 0.642571f, 0.642546f, 0.642522f, 0.642498f, 0.642473f, 0.642449f, 0.642424f, 0.6424f, 0.642375f, 0.642351f, 0.642326f, 0.642302f, 0.642277f, 0.642253f, 0.642228f, 0.642204f, 0.64218f, 0.642155f,
+0.642131f, 0.642106f, 0.642082f, 0.642057f, 0.642033f, 0.642008f, 0.641984f, 0.64196f, 0.641935f, 0.641911f, 0.641886f, 0.641862f, 0.641837f, 0.641813f, 0.641788f, 0.641764f, 0.641739f, 0.641715f, 0.641691f, 0.641666f,
+0.641642f, 0.641617f, 0.641593f, 0.641568f, 0.641544f, 0.641519f, 0.641495f, 0.641471f, 0.641446f, 0.641422f, 0.641397f, 0.641373f, 0.641348f, 0.641324f, 0.641299f, 0.641275f, 0.641251f, 0.641226f, 0.641202f, 0.641177f,
+0.641153f, 0.641128f, 0.641104f, 0.64108f, 0.641055f, 0.641031f, 0.641006f, 0.640982f, 0.640957f, 0.640933f, 0.640909f, 0.640884f, 0.64086f, 0.640835f, 0.640811f, 0.640786f, 0.640762f, 0.640738f, 0.640713f, 0.640689f,
+0.640664f, 0.64064f, 0.640615f, 0.640591f, 0.640567f, 0.640542f, 0.640518f, 0.640493f, 0.640469f, 0.640444f, 0.64042f, 0.640396f, 0.640371f, 0.640347f, 0.640322f, 0.640298f, 0.640273f, 0.640249f, 0.640225f, 0.6402f,
+0.640176f, 0.640151f, 0.640127f, 0.640103f, 0.640078f, 0.640054f, 0.640029f, 0.640005f, 0.63998f, 0.639956f, 0.639932f, 0.639907f, 0.639883f, 0.639858f, 0.639834f, 0.63981f, 0.639785f, 0.639761f, 0.639736f, 0.639712f,
+0.639688f, 0.639663f, 0.639639f, 0.639614f, 0.63959f, 0.639566f, 0.639541f, 0.639517f, 0.639492f, 0.639468f, 0.639443f, 0.639419f, 0.639395f, 0.63937f, 0.639346f, 0.639321f, 0.639297f, 0.639273f, 0.639248f, 0.639224f,
+0.639199f, 0.639175f, 0.639151f, 0.639126f, 0.639102f, 0.639077f, 0.639053f, 0.639029f, 0.639004f, 0.63898f, 0.638956f, 0.638931f, 0.638907f, 0.638882f, 0.638858f, 0.638834f, 0.638809f, 0.638785f, 0.63876f, 0.638736f,
+0.638712f, 0.638687f, 0.638663f, 0.638638f, 0.638614f, 0.63859f, 0.638565f, 0.638541f, 0.638516f, 0.638492f, 0.638468f, 0.638443f, 0.638419f, 0.638395f, 0.63837f, 0.638346f, 0.638321f, 0.638297f, 0.638273f, 0.638248f,
+0.638224f, 0.6382f, 0.638175f, 0.638151f, 0.638126f, 0.638102f, 0.638078f, 0.638053f, 0.638029f, 0.638004f, 0.63798f, 0.637956f, 0.637931f, 0.637907f, 0.637883f, 0.637858f, 0.637834f, 0.637809f, 0.637785f, 0.637761f,
+0.637736f, 0.637712f, 0.637688f, 0.637663f, 0.637639f, 0.637615f, 0.63759f, 0.637566f, 0.637541f, 0.637517f, 0.637493f, 0.637468f, 0.637444f, 0.63742f, 0.637395f, 0.637371f, 0.637347f, 0.637322f, 0.637298f, 0.637273f,
+0.637249f, 0.637225f, 0.6372f, 0.637176f, 0.637152f, 0.637127f, 0.637103f, 0.637079f, 0.637054f, 0.63703f, 0.637005f, 0.636981f, 0.636957f, 0.636932f, 0.636908f, 0.636884f, 0.636859f, 0.636835f, 0.636811f, 0.636786f,
+0.636762f, 0.636738f, 0.636713f, 0.636689f, 0.636665f, 0.63664f, 0.636616f, 0.636591f, 0.636567f, 0.636543f, 0.636518f, 0.636494f, 0.63647f, 0.636445f, 0.636421f, 0.636397f, 0.636372f, 0.636348f, 0.636324f, 0.636299f,
+0.636275f, 0.636251f, 0.636226f, 0.636202f, 0.636178f, 0.636153f, 0.636129f, 0.636105f, 0.63608f, 0.636056f, 0.636032f, 0.636007f, 0.635983f, 0.635959f, 0.635934f, 0.63591f, 0.635886f, 0.635861f, 0.635837f, 0.635813f,
+0.635788f, 0.635764f, 0.63574f, 0.635715f, 0.635691f, 0.635667f, 0.635642f, 0.635618f, 0.635594f, 0.635569f, 0.635545f, 0.635521f, 0.635496f, 0.635472f, 0.635448f, 0.635423f, 0.635399f, 0.635375f, 0.63535f, 0.635326f,
+0.635302f, 0.635277f, 0.635253f, 0.635229f, 0.635204f, 0.63518f, 0.635156f, 0.635131f, 0.635107f, 0.635083f, 0.635058f, 0.635034f, 0.63501f, 0.634985f, 0.634961f, 0.634937f, 0.634912f, 0.634888f, 0.634864f, 0.63484f,
+0.634815f, 0.634791f, 0.634767f, 0.634742f, 0.634718f, 0.634694f, 0.634669f, 0.634645f, 0.634621f, 0.634596f, 0.634572f, 0.634548f, 0.634523f, 0.634499f, 0.634475f, 0.634451f, 0.634426f, 0.634402f, 0.634378f, 0.634353f,
+0.634329f, 0.634305f, 0.63428f, 0.634256f, 0.634232f, 0.634208f, 0.634183f, 0.634159f, 0.634135f, 0.63411f, 0.634086f, 0.634062f, 0.634037f, 0.634013f, 0.633989f, 0.633964f, 0.63394f, 0.633916f, 0.633892f, 0.633867f,
+0.633843f, 0.633819f, 0.633794f, 0.63377f, 0.633746f, 0.633722f, 0.633697f, 0.633673f, 0.633649f, 0.633624f, 0.6336f, 0.633576f, 0.633551f, 0.633527f, 0.633503f, 0.633479f, 0.633454f, 0.63343f, 0.633406f, 0.633381f,
+0.633357f, 0.633333f, 0.633309f, 0.633284f, 0.63326f, 0.633236f, 0.633211f, 0.633187f, 0.633163f, 0.633139f, 0.633114f, 0.63309f, 0.633066f, 0.633041f, 0.633017f, 0.632993f, 0.632969f, 0.632944f, 0.63292f, 0.632896f,
+0.632872f, 0.632847f, 0.632823f, 0.632799f, 0.632774f, 0.63275f, 0.632726f, 0.632702f, 0.632677f, 0.632653f, 0.632629f, 0.632604f, 0.63258f, 0.632556f, 0.632532f, 0.632507f, 0.632483f, 0.632459f, 0.632435f, 0.63241f,
+0.632386f, 0.632362f, 0.632338f, 0.632313f, 0.632289f, 0.632265f, 0.63224f, 0.632216f, 0.632192f, 0.632168f, 0.632143f, 0.632119f, 0.632095f, 0.632071f, 0.632046f, 0.632022f, 0.631998f, 0.631974f, 0.631949f, 0.631925f,
+0.631901f, 0.631877f, 0.631852f, 0.631828f, 0.631804f, 0.631779f, 0.631755f, 0.631731f, 0.631707f, 0.631682f, 0.631658f, 0.631634f, 0.63161f, 0.631585f, 0.631561f, 0.631537f, 0.631513f, 0.631488f, 0.631464f, 0.63144f,
+0.631416f, 0.631391f, 0.631367f, 0.631343f, 0.631319f, 0.631294f, 0.63127f, 0.631246f, 0.631222f, 0.631197f, 0.631173f, 0.631149f, 0.631125f, 0.6311f, 0.631076f, 0.631052f, 0.631028f, 0.631004f, 0.630979f, 0.630955f,
+0.630931f, 0.630907f, 0.630882f, 0.630858f, 0.630834f, 0.63081f, 0.630785f, 0.630761f, 0.630737f, 0.630713f, 0.630688f, 0.630664f, 0.63064f, 0.630616f, 0.630591f, 0.630567f, 0.630543f, 0.630519f, 0.630495f, 0.63047f,
+0.630446f, 0.630422f, 0.630398f, 0.630373f, 0.630349f, 0.630325f, 0.630301f, 0.630276f, 0.630252f, 0.630228f, 0.630204f, 0.63018f, 0.630155f, 0.630131f, 0.630107f, 0.630083f, 0.630058f, 0.630034f, 0.63001f, 0.629986f,
+0.629962f, 0.629937f, 0.629913f, 0.629889f, 0.629865f, 0.62984f, 0.629816f, 0.629792f, 0.629768f, 0.629744f, 0.629719f, 0.629695f, 0.629671f, 0.629647f, 0.629622f, 0.629598f, 0.629574f, 0.62955f, 0.629526f, 0.629501f,
+0.629477f, 0.629453f, 0.629429f, 0.629405f, 0.62938f, 0.629356f, 0.629332f, 0.629308f, 0.629284f, 0.629259f, 0.629235f, 0.629211f, 0.629187f, 0.629162f, 0.629138f, 0.629114f, 0.62909f, 0.629066f, 0.629041f, 0.629017f,
+0.628993f, 0.628969f, 0.628945f, 0.62892f, 0.628896f, 0.628872f, 0.628848f, 0.628824f, 0.628799f, 0.628775f, 0.628751f, 0.628727f, 0.628703f, 0.628678f, 0.628654f, 0.62863f, 0.628606f, 0.628582f, 0.628557f, 0.628533f,
+0.628509f, 0.628485f, 0.628461f, 0.628436f, 0.628412f, 0.628388f, 0.628364f, 0.62834f, 0.628316f, 0.628291f, 0.628267f, 0.628243f, 0.628219f, 0.628195f, 0.62817f, 0.628146f, 0.628122f, 0.628098f, 0.628074f, 0.628049f,
+0.628025f, 0.628001f, 0.627977f, 0.627953f, 0.627929f, 0.627904f, 0.62788f, 0.627856f, 0.627832f, 0.627808f, 0.627783f, 0.627759f, 0.627735f, 0.627711f, 0.627687f, 0.627663f, 0.627638f, 0.627614f, 0.62759f, 0.627566f,
+0.627542f, 0.627518f, 0.627493f, 0.627469f, 0.627445f, 0.627421f, 0.627397f, 0.627372f, 0.627348f, 0.627324f, 0.6273f, 0.627276f, 0.627252f, 0.627227f, 0.627203f, 0.627179f, 0.627155f, 0.627131f, 0.627107f, 0.627082f,
+0.627058f, 0.627034f, 0.62701f, 0.626986f, 0.626962f, 0.626937f, 0.626913f, 0.626889f, 0.626865f, 0.626841f, 0.626817f, 0.626792f, 0.626768f, 0.626744f, 0.62672f, 0.626696f, 0.626672f, 0.626648f, 0.626623f, 0.626599f,
+0.626575f, 0.626551f, 0.626527f, 0.626503f, 0.626478f, 0.626454f, 0.62643f, 0.626406f, 0.626382f, 0.626358f, 0.626334f, 0.626309f, 0.626285f, 0.626261f, 0.626237f, 0.626213f, 0.626189f, 0.626164f, 0.62614f, 0.626116f,
+0.626092f, 0.626068f, 0.626044f, 0.62602f, 0.625995f, 0.625971f, 0.625947f, 0.625923f, 0.625899f, 0.625875f, 0.625851f, 0.625826f, 0.625802f, 0.625778f, 0.625754f, 0.62573f, 0.625706f, 0.625682f, 0.625657f, 0.625633f,
+0.625609f, 0.625585f, 0.625561f, 0.625537f, 0.625513f, 0.625488f, 0.625464f, 0.62544f, 0.625416f, 0.625392f, 0.625368f, 0.625344f, 0.62532f, 0.625295f, 0.625271f, 0.625247f, 0.625223f, 0.625199f, 0.625175f, 0.625151f,
+0.625126f, 0.625102f, 0.625078f, 0.625054f, 0.62503f, 0.625006f, 0.624982f, 0.624958f, 0.624933f, 0.624909f, 0.624885f, 0.624861f, 0.624837f, 0.624813f, 0.624789f, 0.624765f, 0.62474f, 0.624716f, 0.624692f, 0.624668f,
+0.624644f, 0.62462f, 0.624596f, 0.624572f, 0.624548f, 0.624523f, 0.624499f, 0.624475f, 0.624451f, 0.624427f, 0.624403f, 0.624379f, 0.624355f, 0.624331f, 0.624306f, 0.624282f, 0.624258f, 0.624234f, 0.62421f, 0.624186f,
+0.624162f, 0.624138f, 0.624114f, 0.624089f, 0.624065f, 0.624041f, 0.624017f, 0.623993f, 0.623969f, 0.623945f, 0.623921f, 0.623897f, 0.623872f, 0.623848f, 0.623824f, 0.6238f, 0.623776f, 0.623752f, 0.623728f, 0.623704f,
+0.62368f, 0.623656f, 0.623631f, 0.623607f, 0.623583f, 0.623559f, 0.623535f, 0.623511f, 0.623487f, 0.623463f, 0.623439f, 0.623415f, 0.62339f, 0.623366f, 0.623342f, 0.623318f, 0.623294f, 0.62327f, 0.623246f, 0.623222f,
+0.623198f, 0.623174f, 0.62315f, 0.623125f, 0.623101f, 0.623077f, 0.623053f, 0.623029f, 0.623005f, 0.622981f, 0.622957f, 0.622933f, 0.622909f, 0.622885f, 0.62286f, 0.622836f, 0.622812f, 0.622788f, 0.622764f, 0.62274f,
+0.622716f, 0.622692f, 0.622668f, 0.622644f, 0.62262f, 0.622596f, 0.622571f, 0.622547f, 0.622523f, 0.622499f, 0.622475f, 0.622451f, 0.622427f, 0.622403f, 0.622379f, 0.622355f, 0.622331f, 0.622307f, 0.622283f, 0.622258f,
+0.622234f, 0.62221f, 0.622186f, 0.622162f, 0.622138f, 0.622114f, 0.62209f, 0.622066f, 0.622042f, 0.622018f, 0.621994f, 0.62197f, 0.621946f, 0.621921f, 0.621897f, 0.621873f, 0.621849f, 0.621825f, 0.621801f, 0.621777f,
+0.621753f, 0.621729f, 0.621705f, 0.621681f, 0.621657f, 0.621633f, 0.621609f, 0.621585f, 0.621561f, 0.621536f, 0.621512f, 0.621488f, 0.621464f, 0.62144f, 0.621416f, 0.621392f, 0.621368f, 0.621344f, 0.62132f, 0.621296f,
+0.621272f, 0.621248f, 0.621224f, 0.6212f, 0.621176f, 0.621152f, 0.621128f, 0.621103f, 0.621079f, 0.621055f, 0.621031f, 0.621007f, 0.620983f, 0.620959f, 0.620935f, 0.620911f, 0.620887f, 0.620863f, 0.620839f, 0.620815f,
+0.620791f, 0.620767f, 0.620743f, 0.620719f, 0.620695f, 0.620671f, 0.620647f, 0.620623f, 0.620599f, 0.620574f, 0.62055f, 0.620526f, 0.620502f, 0.620478f, 0.620454f, 0.62043f, 0.620406f, 0.620382f, 0.620358f, 0.620334f,
+0.62031f, 0.620286f, 0.620262f, 0.620238f, 0.620214f, 0.62019f, 0.620166f, 0.620142f, 0.620118f, 0.620094f, 0.62007f, 0.620046f, 0.620022f, 0.619998f, 0.619974f, 0.61995f, 0.619926f, 0.619902f, 0.619878f, 0.619853f,
+0.619829f, 0.619805f, 0.619781f, 0.619757f, 0.619733f, 0.619709f, 0.619685f, 0.619661f, 0.619637f, 0.619613f, 0.619589f, 0.619565f, 0.619541f, 0.619517f, 0.619493f, 0.619469f, 0.619445f, 0.619421f, 0.619397f, 0.619373f,
+0.619349f, 0.619325f, 0.619301f, 0.619277f, 0.619253f, 0.619229f, 0.619205f, 0.619181f, 0.619157f, 0.619133f, 0.619109f, 0.619085f, 0.619061f, 0.619037f, 0.619013f, 0.618989f, 0.618965f, 0.618941f, 0.618917f, 0.618893f,
+0.618869f, 0.618845f, 0.618821f, 0.618797f, 0.618773f, 0.618749f, 0.618725f, 0.618701f, 0.618677f, 0.618653f, 0.618629f, 0.618605f, 0.618581f, 0.618557f, 0.618533f, 0.618509f, 0.618485f, 0.618461f, 0.618437f, 0.618413f,
+0.618389f, 0.618365f, 0.618341f, 0.618317f, 0.618293f, 0.618269f, 0.618245f, 0.618221f, 0.618197f, 0.618173f, 0.618149f, 0.618125f, 0.618101f, 0.618077f, 0.618053f, 0.618029f, 0.618005f, 0.617981f, 0.617957f, 0.617933f,
+0.617909f, 0.617885f, 0.617861f, 0.617837f, 0.617813f, 0.617789f, 0.617765f, 0.617741f, 0.617717f, 0.617693f, 0.617669f, 0.617645f, 0.617621f, 0.617597f, 0.617573f, 0.617549f, 0.617525f, 0.617501f, 0.617477f, 0.617453f,
+0.617429f, 0.617405f, 0.617381f, 0.617357f, 0.617333f, 0.617309f, 0.617285f, 0.617261f, 0.617237f, 0.617213f, 0.617189f, 0.617165f, 0.617141f, 0.617117f, 0.617093f, 0.61707f, 0.617046f, 0.617022f, 0.616998f, 0.616974f,
+0.61695f, 0.616926f, 0.616902f, 0.616878f, 0.616854f, 0.61683f, 0.616806f, 0.616782f, 0.616758f, 0.616734f, 0.61671f, 0.616686f, 0.616662f, 0.616638f, 0.616614f, 0.61659f, 0.616566f, 0.616542f, 0.616518f, 0.616494f,
+0.61647f, 0.616446f, 0.616422f, 0.616398f, 0.616374f, 0.616351f, 0.616327f, 0.616303f, 0.616279f, 0.616255f, 0.616231f, 0.616207f, 0.616183f, 0.616159f, 0.616135f, 0.616111f, 0.616087f, 0.616063f, 0.616039f, 0.616015f,
+0.615991f, 0.615967f, 0.615943f, 0.615919f, 0.615895f, 0.615871f, 0.615848f, 0.615824f, 0.6158f, 0.615776f, 0.615752f, 0.615728f, 0.615704f, 0.61568f, 0.615656f, 0.615632f, 0.615608f, 0.615584f, 0.61556f, 0.615536f,
+0.615512f, 0.615488f, 0.615464f, 0.61544f, 0.615417f, 0.615393f, 0.615369f, 0.615345f, 0.615321f, 0.615297f, 0.615273f, 0.615249f, 0.615225f, 0.615201f, 0.615177f, 0.615153f, 0.615129f, 0.615105f, 0.615081f, 0.615057f,
+0.615034f, 0.61501f, 0.614986f, 0.614962f, 0.614938f, 0.614914f, 0.61489f, 0.614866f, 0.614842f, 0.614818f, 0.614794f, 0.61477f, 0.614746f, 0.614722f, 0.614698f, 0.614675f, 0.614651f, 0.614627f, 0.614603f, 0.614579f,
+0.614555f, 0.614531f, 0.614507f, 0.614483f, 0.614459f, 0.614435f, 0.614411f, 0.614387f, 0.614364f, 0.61434f, 0.614316f, 0.614292f, 0.614268f, 0.614244f, 0.61422f, 0.614196f, 0.614172f, 0.614148f, 0.614124f, 0.6141f,
+0.614077f, 0.614053f, 0.614029f, 0.614005f, 0.613981f, 0.613957f, 0.613933f, 0.613909f, 0.613885f, 0.613861f, 0.613837f, 0.613814f, 0.61379f, 0.613766f, 0.613742f, 0.613718f, 0.613694f, 0.61367f, 0.613646f, 0.613622f,
+0.613598f, 0.613574f, 0.613551f, 0.613527f, 0.613503f, 0.613479f, 0.613455f, 0.613431f, 0.613407f, 0.613383f, 0.613359f, 0.613335f, 0.613312f, 0.613288f, 0.613264f, 0.61324f, 0.613216f, 0.613192f, 0.613168f, 0.613144f,
+0.61312f, 0.613096f, 0.613073f, 0.613049f, 0.613025f, 0.613001f, 0.612977f, 0.612953f, 0.612929f, 0.612905f, 0.612881f, 0.612858f, 0.612834f, 0.61281f, 0.612786f, 0.612762f, 0.612738f, 0.612714f, 0.61269f, 0.612666f,
+0.612643f, 0.612619f, 0.612595f, 0.612571f, 0.612547f, 0.612523f, 0.612499f, 0.612475f, 0.612451f, 0.612428f, 0.612404f, 0.61238f, 0.612356f, 0.612332f, 0.612308f, 0.612284f, 0.61226f, 0.612237f, 0.612213f, 0.612189f,
+0.612165f, 0.612141f, 0.612117f, 0.612093f, 0.612069f, 0.612046f, 0.612022f, 0.611998f, 0.611974f, 0.61195f, 0.611926f, 0.611902f, 0.611878f, 0.611855f, 0.611831f, 0.611807f, 0.611783f, 0.611759f, 0.611735f, 0.611711f,
+0.611687f, 0.611664f, 0.61164f, 0.611616f, 0.611592f, 0.611568f, 0.611544f, 0.61152f, 0.611497f, 0.611473f, 0.611449f, 0.611425f, 0.611401f, 0.611377f, 0.611353f, 0.611329f, 0.611306f, 0.611282f, 0.611258f, 0.611234f,
+0.61121f, 0.611186f, 0.611162f, 0.611139f, 0.611115f, 0.611091f, 0.611067f, 0.611043f, 0.611019f, 0.610995f, 0.610972f, 0.610948f, 0.610924f, 0.6109f, 0.610876f, 0.610852f, 0.610828f, 0.610805f, 0.610781f, 0.610757f,
+0.610733f, 0.610709f, 0.610685f, 0.610662f, 0.610638f, 0.610614f, 0.61059f, 0.610566f, 0.610542f, 0.610518f, 0.610495f, 0.610471f, 0.610447f, 0.610423f, 0.610399f, 0.610375f, 0.610352f, 0.610328f, 0.610304f, 0.61028f,
+0.610256f, 0.610232f, 0.610209f, 0.610185f, 0.610161f, 0.610137f, 0.610113f, 0.610089f, 0.610065f, 0.610042f, 0.610018f, 0.609994f, 0.60997f, 0.609946f, 0.609922f, 0.609899f, 0.609875f, 0.609851f, 0.609827f, 0.609803f,
+0.609779f, 0.609756f, 0.609732f, 0.609708f, 0.609684f, 0.60966f, 0.609637f, 0.609613f, 0.609589f, 0.609565f, 0.609541f, 0.609517f, 0.609494f, 0.60947f, 0.609446f, 0.609422f, 0.609398f, 0.609374f, 0.609351f, 0.609327f,
+0.609303f, 0.609279f, 0.609255f, 0.609232f, 0.609208f, 0.609184f, 0.60916f, 0.609136f, 0.609112f, 0.609089f, 0.609065f, 0.609041f, 0.609017f, 0.608993f, 0.60897f, 0.608946f, 0.608922f, 0.608898f, 0.608874f, 0.60885f,
+0.608827f, 0.608803f, 0.608779f, 0.608755f, 0.608731f, 0.608708f, 0.608684f, 0.60866f, 0.608636f, 0.608612f, 0.608589f, 0.608565f, 0.608541f, 0.608517f, 0.608493f, 0.60847f, 0.608446f, 0.608422f, 0.608398f, 0.608374f,
+0.60835f, 0.608327f, 0.608303f, 0.608279f, 0.608255f, 0.608231f, 0.608208f, 0.608184f, 0.60816f, 0.608136f, 0.608112f, 0.608089f, 0.608065f, 0.608041f, 0.608017f, 0.607994f, 0.60797f, 0.607946f, 0.607922f, 0.607898f,
+0.607875f, 0.607851f, 0.607827f, 0.607803f, 0.607779f, 0.607756f, 0.607732f, 0.607708f, 0.607684f, 0.60766f, 0.607637f, 0.607613f, 0.607589f, 0.607565f, 0.607541f, 0.607518f, 0.607494f, 0.60747f, 0.607446f, 0.607423f,
+0.607399f, 0.607375f, 0.607351f, 0.607327f, 0.607304f, 0.60728f, 0.607256f, 0.607232f, 0.607208f, 0.607185f, 0.607161f, 0.607137f, 0.607113f, 0.60709f, 0.607066f, 0.607042f, 0.607018f, 0.606994f, 0.606971f, 0.606947f,
+0.606923f, 0.606899f, 0.606876f, 0.606852f, 0.606828f, 0.606804f, 0.606781f, 0.606757f, 0.606733f, 0.606709f, 0.606685f, 0.606662f, 0.606638f, 0.606614f, 0.60659f, 0.606567f, 0.606543f, 0.606519f, 0.606495f, 0.606472f,
+0.606448f, 0.606424f, 0.6064f, 0.606376f, 0.606353f, 0.606329f, 0.606305f, 0.606281f, 0.606258f, 0.606234f, 0.60621f, 0.606186f, 0.606163f, 0.606139f, 0.606115f, 0.606091f, 0.606068f, 0.606044f, 0.60602f, 0.605996f,
+0.605973f, 0.605949f, 0.605925f, 0.605901f, 0.605878f, 0.605854f, 0.60583f, 0.605806f, 0.605783f, 0.605759f, 0.605735f, 0.605711f, 0.605688f, 0.605664f, 0.60564f, 0.605616f, 0.605593f, 0.605569f, 0.605545f, 0.605521f,
+0.605498f, 0.605474f, 0.60545f, 0.605426f, 0.605403f, 0.605379f, 0.605355f, 0.605331f, 0.605308f, 0.605284f, 0.60526f, 0.605236f, 0.605213f, 0.605189f, 0.605165f, 0.605141f, 0.605118f, 0.605094f, 0.60507f, 0.605046f,
+0.605023f, 0.604999f, 0.604975f, 0.604951f, 0.604928f, 0.604904f, 0.60488f, 0.604857f, 0.604833f, 0.604809f, 0.604785f, 0.604762f, 0.604738f, 0.604714f, 0.60469f, 0.604667f, 0.604643f, 0.604619f, 0.604595f, 0.604572f,
+0.604548f, 0.604524f, 0.604501f, 0.604477f, 0.604453f, 0.604429f, 0.604406f, 0.604382f, 0.604358f, 0.604334f, 0.604311f, 0.604287f, 0.604263f, 0.60424f, 0.604216f, 0.604192f, 0.604168f, 0.604145f, 0.604121f, 0.604097f,
+0.604074f, 0.60405f, 0.604026f, 0.604002f, 0.603979f, 0.603955f, 0.603931f, 0.603908f, 0.603884f, 0.60386f, 0.603836f, 0.603813f, 0.603789f, 0.603765f, 0.603742f, 0.603718f, 0.603694f, 0.60367f, 0.603647f, 0.603623f,
+0.603599f, 0.603576f, 0.603552f, 0.603528f, 0.603504f, 0.603481f, 0.603457f, 0.603433f, 0.60341f, 0.603386f, 0.603362f, 0.603338f, 0.603315f, 0.603291f, 0.603267f, 0.603244f, 0.60322f, 0.603196f, 0.603173f, 0.603149f,
+0.603125f, 0.603101f, 0.603078f, 0.603054f, 0.60303f, 0.603007f, 0.602983f, 0.602959f, 0.602936f, 0.602912f, 0.602888f, 0.602864f, 0.602841f, 0.602817f, 0.602793f, 0.60277f, 0.602746f, 0.602722f, 0.602699f, 0.602675f,
+0.602651f, 0.602628f, 0.602604f, 0.60258f, 0.602556f, 0.602533f, 0.602509f, 0.602485f, 0.602462f, 0.602438f, 0.602414f, 0.602391f, 0.602367f, 0.602343f, 0.60232f, 0.602296f, 0.602272f, 0.602249f, 0.602225f, 0.602201f,
+0.602178f, 0.602154f, 0.60213f, 0.602106f, 0.602083f, 0.602059f, 0.602035f, 0.602012f, 0.601988f, 0.601964f, 0.601941f, 0.601917f, 0.601893f, 0.60187f, 0.601846f, 0.601822f, 0.601799f, 0.601775f, 0.601751f, 0.601728f,
+0.601704f, 0.60168f, 0.601657f, 0.601633f, 0.601609f, 0.601586f, 0.601562f, 0.601538f, 0.601515f, 0.601491f, 0.601467f, 0.601444f, 0.60142f, 0.601396f, 0.601373f, 0.601349f, 0.601325f, 0.601302f, 0.601278f, 0.601254f,
+0.601231f, 0.601207f, 0.601183f, 0.60116f, 0.601136f, 0.601112f, 0.601089f, 0.601065f, 0.601041f, 0.601018f, 0.600994f, 0.60097f, 0.600947f, 0.600923f, 0.600899f, 0.600876f, 0.600852f, 0.600828f, 0.600805f, 0.600781f,
+0.600757f, 0.600734f, 0.60071f, 0.600686f, 0.600663f, 0.600639f, 0.600616f, 0.600592f, 0.600568f, 0.600545f, 0.600521f, 0.600497f, 0.600474f, 0.60045f, 0.600426f, 0.600403f, 0.600379f, 0.600355f, 0.600332f, 0.600308f,
+0.600284f, 0.600261f, 0.600237f, 0.600214f, 0.60019f, 0.600166f, 0.600143f, 0.600119f, 0.600095f, 0.600072f, 0.600048f, 0.600024f, 0.600001f, 0.599977f, 0.599953f, 0.59993f, 0.599906f, 0.599883f, 0.599859f, 0.599835f,
+0.599812f, 0.599788f, 0.599764f, 0.599741f, 0.599717f, 0.599694f, 0.59967f, 0.599646f, 0.599623f, 0.599599f, 0.599575f, 0.599552f, 0.599528f, 0.599504f, 0.599481f, 0.599457f, 0.599434f, 0.59941f, 0.599386f, 0.599363f,
+0.599339f, 0.599315f, 0.599292f, 0.599268f, 0.599245f, 0.599221f, 0.599197f, 0.599174f, 0.59915f, 0.599126f, 0.599103f, 0.599079f, 0.599056f, 0.599032f, 0.599008f, 0.598985f, 0.598961f, 0.598937f, 0.598914f, 0.59889f,
+0.598867f, 0.598843f, 0.598819f, 0.598796f, 0.598772f, 0.598749f, 0.598725f, 0.598701f, 0.598678f, 0.598654f, 0.598631f, 0.598607f, 0.598583f, 0.59856f, 0.598536f, 0.598512f, 0.598489f, 0.598465f, 0.598442f, 0.598418f,
+0.598394f, 0.598371f, 0.598347f, 0.598324f, 0.5983f, 0.598276f, 0.598253f, 0.598229f, 0.598206f, 0.598182f, 0.598158f, 0.598135f, 0.598111f, 0.598088f, 0.598064f, 0.59804f, 0.598017f, 0.597993f, 0.59797f, 0.597946f,
+0.597922f, 0.597899f, 0.597875f, 0.597852f, 0.597828f, 0.597804f, 0.597781f, 0.597757f, 0.597734f, 0.59771f, 0.597686f, 0.597663f, 0.597639f, 0.597616f, 0.597592f, 0.597568f, 0.597545f, 0.597521f, 0.597498f, 0.597474f,
+0.59745f, 0.597427f, 0.597403f, 0.59738f, 0.597356f, 0.597333f, 0.597309f, 0.597285f, 0.597262f, 0.597238f, 0.597215f, 0.597191f, 0.597167f, 0.597144f, 0.59712f, 0.597097f, 0.597073f, 0.59705f, 0.597026f, 0.597002f,
+0.596979f, 0.596955f, 0.596932f, 0.596908f, 0.596885f, 0.596861f, 0.596837f, 0.596814f, 0.59679f, 0.596767f, 0.596743f, 0.596719f, 0.596696f, 0.596672f, 0.596649f, 0.596625f, 0.596602f, 0.596578f, 0.596554f, 0.596531f,
+0.596507f, 0.596484f, 0.59646f, 0.596437f, 0.596413f, 0.596389f, 0.596366f, 0.596342f, 0.596319f, 0.596295f, 0.596272f, 0.596248f, 0.596225f, 0.596201f, 0.596177f, 0.596154f, 0.59613f, 0.596107f, 0.596083f, 0.59606f,
+0.596036f, 0.596012f, 0.595989f, 0.595965f, 0.595942f, 0.595918f, 0.595895f, 0.595871f, 0.595848f, 0.595824f, 0.5958f, 0.595777f, 0.595753f, 0.59573f, 0.595706f, 0.595683f, 0.595659f, 0.595636f, 0.595612f, 0.595588f,
+0.595565f, 0.595541f, 0.595518f, 0.595494f, 0.595471f, 0.595447f, 0.595424f, 0.5954f, 0.595377f, 0.595353f, 0.595329f, 0.595306f, 0.595282f, 0.595259f, 0.595235f, 0.595212f, 0.595188f, 0.595165f, 0.595141f, 0.595118f,
+0.595094f, 0.59507f, 0.595047f, 0.595023f, 0.595f, 0.594976f, 0.594953f, 0.594929f, 0.594906f, 0.594882f, 0.594859f, 0.594835f, 0.594811f, 0.594788f, 0.594764f, 0.594741f, 0.594717f, 0.594694f, 0.59467f, 0.594647f,
+0.594623f, 0.5946f, 0.594576f, 0.594553f, 0.594529f, 0.594506f, 0.594482f, 0.594459f, 0.594435f, 0.594411f, 0.594388f, 0.594364f, 0.594341f, 0.594317f, 0.594294f, 0.59427f, 0.594247f, 0.594223f, 0.5942f, 0.594176f,
+0.594153f, 0.594129f, 0.594106f, 0.594082f, 0.594059f, 0.594035f, 0.594012f, 0.593988f, 0.593964f, 0.593941f, 0.593917f, 0.593894f, 0.59387f, 0.593847f, 0.593823f, 0.5938f, 0.593776f, 0.593753f, 0.593729f, 0.593706f,
+0.593682f, 0.593659f, 0.593635f, 0.593612f, 0.593588f, 0.593565f, 0.593541f, 0.593518f, 0.593494f, 0.593471f, 0.593447f, 0.593424f, 0.5934f, 0.593377f, 0.593353f, 0.59333f, 0.593306f, 0.593283f, 0.593259f, 0.593236f,
+0.593212f, 0.593189f, 0.593165f, 0.593142f, 0.593118f, 0.593095f, 0.593071f, 0.593048f, 0.593024f, 0.593001f, 0.592977f, 0.592954f, 0.59293f, 0.592907f, 0.592883f, 0.59286f, 0.592836f, 0.592813f, 0.592789f, 0.592766f,
+0.592742f, 0.592719f, 0.592695f, 0.592672f, 0.592648f, 0.592625f, 0.592601f, 0.592578f, 0.592554f, 0.592531f, 0.592507f, 0.592484f, 0.59246f, 0.592437f, 0.592413f, 0.59239f, 0.592366f, 0.592343f, 0.592319f, 0.592296f,
+0.592272f, 0.592249f, 0.592225f, 0.592202f, 0.592178f, 0.592155f, 0.592131f, 0.592108f, 0.592084f, 0.592061f, 0.592037f, 0.592014f, 0.59199f, 0.591967f, 0.591944f, 0.59192f, 0.591897f, 0.591873f, 0.59185f, 0.591826f,
+0.591803f, 0.591779f, 0.591756f, 0.591732f, 0.591709f, 0.591685f, 0.591662f, 0.591638f, 0.591615f, 0.591591f, 0.591568f, 0.591544f, 0.591521f, 0.591497f, 0.591474f, 0.591451f, 0.591427f, 0.591404f, 0.59138f, 0.591357f,
+0.591333f, 0.59131f, 0.591286f, 0.591263f, 0.591239f, 0.591216f, 0.591192f, 0.591169f, 0.591145f, 0.591122f, 0.591099f, 0.591075f, 0.591052f, 0.591028f, 0.591005f, 0.590981f, 0.590958f, 0.590934f, 0.590911f, 0.590887f,
+0.590864f, 0.590841f, 0.590817f, 0.590794f, 0.59077f, 0.590747f, 0.590723f, 0.5907f, 0.590676f, 0.590653f, 0.590629f, 0.590606f, 0.590582f, 0.590559f, 0.590536f, 0.590512f, 0.590489f, 0.590465f, 0.590442f, 0.590418f,
+0.590395f, 0.590371f, 0.590348f, 0.590325f, 0.590301f, 0.590278f, 0.590254f, 0.590231f, 0.590207f, 0.590184f, 0.59016f, 0.590137f, 0.590114f, 0.59009f, 0.590067f, 0.590043f, 0.59002f, 0.589996f, 0.589973f, 0.589949f,
+0.589926f, 0.589903f, 0.589879f, 0.589856f, 0.589832f, 0.589809f, 0.589785f, 0.589762f, 0.589739f, 0.589715f, 0.589692f, 0.589668f, 0.589645f, 0.589621f, 0.589598f, 0.589574f, 0.589551f, 0.589528f, 0.589504f, 0.589481f,
+0.589457f, 0.589434f, 0.58941f, 0.589387f, 0.589364f, 0.58934f, 0.589317f, 0.589293f, 0.58927f, 0.589246f, 0.589223f, 0.5892f, 0.589176f, 0.589153f, 0.589129f, 0.589106f, 0.589082f, 0.589059f, 0.589036f, 0.589012f,
+0.588989f, 0.588965f, 0.588942f, 0.588919f, 0.588895f, 0.588872f, 0.588848f, 0.588825f, 0.588801f, 0.588778f, 0.588755f, 0.588731f, 0.588708f, 0.588684f, 0.588661f, 0.588638f, 0.588614f, 0.588591f, 0.588567f, 0.588544f,
+0.58852f, 0.588497f, 0.588474f, 0.58845f, 0.588427f, 0.588403f, 0.58838f, 0.588357f, 0.588333f, 0.58831f, 0.588286f, 0.588263f, 0.58824f, 0.588216f, 0.588193f, 0.588169f, 0.588146f, 0.588123f, 0.588099f, 0.588076f,
+0.588052f, 0.588029f, 0.588006f, 0.587982f, 0.587959f, 0.587935f, 0.587912f, 0.587889f, 0.587865f, 0.587842f, 0.587818f, 0.587795f, 0.587772f, 0.587748f, 0.587725f, 0.587701f, 0.587678f, 0.587655f, 0.587631f, 0.587608f,
+0.587584f, 0.587561f, 0.587538f, 0.587514f, 0.587491f, 0.587467f, 0.587444f, 0.587421f, 0.587397f, 0.587374f, 0.58735f, 0.587327f, 0.587304f, 0.58728f, 0.587257f, 0.587234f, 0.58721f, 0.587187f, 0.587163f, 0.58714f,
+0.587117f, 0.587093f, 0.58707f, 0.587046f, 0.587023f, 0.587f, 0.586976f, 0.586953f, 0.58693f, 0.586906f, 0.586883f, 0.586859f, 0.586836f, 0.586813f, 0.586789f, 0.586766f, 0.586743f, 0.586719f, 0.586696f, 0.586672f,
+0.586649f, 0.586626f, 0.586602f, 0.586579f, 0.586556f, 0.586532f, 0.586509f, 0.586485f, 0.586462f, 0.586439f, 0.586415f, 0.586392f, 0.586369f, 0.586345f, 0.586322f, 0.586298f, 0.586275f, 0.586252f, 0.586228f, 0.586205f,
+0.586182f, 0.586158f, 0.586135f, 0.586112f, 0.586088f, 0.586065f, 0.586041f, 0.586018f, 0.585995f, 0.585971f, 0.585948f, 0.585925f, 0.585901f, 0.585878f, 0.585855f, 0.585831f, 0.585808f, 0.585785f, 0.585761f, 0.585738f,
+0.585714f, 0.585691f, 0.585668f, 0.585644f, 0.585621f, 0.585598f, 0.585574f, 0.585551f, 0.585528f, 0.585504f, 0.585481f, 0.585458f, 0.585434f, 0.585411f, 0.585387f, 0.585364f, 0.585341f, 0.585317f, 0.585294f, 0.585271f,
+0.585247f, 0.585224f, 0.585201f, 0.585177f, 0.585154f, 0.585131f, 0.585107f, 0.585084f, 0.585061f, 0.585037f, 0.585014f, 0.584991f, 0.584967f, 0.584944f, 0.584921f, 0.584897f, 0.584874f, 0.584851f, 0.584827f, 0.584804f,
+0.584781f, 0.584757f, 0.584734f, 0.584711f, 0.584687f, 0.584664f, 0.584641f, 0.584617f, 0.584594f, 0.584571f, 0.584547f, 0.584524f, 0.584501f, 0.584477f, 0.584454f, 0.584431f, 0.584407f, 0.584384f, 0.584361f, 0.584337f,
+0.584314f, 0.584291f, 0.584267f, 0.584244f, 0.584221f, 0.584197f, 0.584174f, 0.584151f, 0.584127f, 0.584104f, 0.584081f, 0.584057f, 0.584034f, 0.584011f, 0.583987f, 0.583964f, 0.583941f, 0.583917f, 0.583894f, 0.583871f,
+0.583847f, 0.583824f, 0.583801f, 0.583778f, 0.583754f, 0.583731f, 0.583708f, 0.583684f, 0.583661f, 0.583638f, 0.583614f, 0.583591f, 0.583568f, 0.583544f, 0.583521f, 0.583498f, 0.583474f, 0.583451f, 0.583428f, 0.583405f,
+0.583381f, 0.583358f, 0.583335f, 0.583311f, 0.583288f, 0.583265f, 0.583241f, 0.583218f, 0.583195f, 0.583171f, 0.583148f, 0.583125f, 0.583102f, 0.583078f, 0.583055f, 0.583032f, 0.583008f, 0.582985f, 0.582962f, 0.582938f,
+0.582915f, 0.582892f, 0.582869f, 0.582845f, 0.582822f, 0.582799f, 0.582775f, 0.582752f, 0.582729f, 0.582705f, 0.582682f, 0.582659f, 0.582636f, 0.582612f, 0.582589f, 0.582566f, 0.582542f, 0.582519f, 0.582496f, 0.582472f,
+0.582449f, 0.582426f, 0.582403f, 0.582379f, 0.582356f, 0.582333f, 0.582309f, 0.582286f, 0.582263f, 0.58224f, 0.582216f, 0.582193f, 0.58217f, 0.582146f, 0.582123f, 0.5821f, 0.582077f, 0.582053f, 0.58203f, 0.582007f,
+0.581983f, 0.58196f, 0.581937f, 0.581914f, 0.58189f, 0.581867f, 0.581844f, 0.581821f, 0.581797f, 0.581774f, 0.581751f, 0.581727f, 0.581704f, 0.581681f, 0.581658f, 0.581634f, 0.581611f, 0.581588f, 0.581564f, 0.581541f,
+0.581518f, 0.581495f, 0.581471f, 0.581448f, 0.581425f, 0.581402f, 0.581378f, 0.581355f, 0.581332f, 0.581309f, 0.581285f, 0.581262f, 0.581239f, 0.581215f, 0.581192f, 0.581169f, 0.581146f, 0.581122f, 0.581099f, 0.581076f,
+0.581053f, 0.581029f, 0.581006f, 0.580983f, 0.58096f, 0.580936f, 0.580913f, 0.58089f, 0.580867f, 0.580843f, 0.58082f, 0.580797f, 0.580773f, 0.58075f, 0.580727f, 0.580704f, 0.58068f, 0.580657f, 0.580634f, 0.580611f,
+0.580587f, 0.580564f, 0.580541f, 0.580518f, 0.580494f, 0.580471f, 0.580448f, 0.580425f, 0.580401f, 0.580378f, 0.580355f, 0.580332f, 0.580308f, 0.580285f, 0.580262f, 0.580239f, 0.580215f, 0.580192f, 0.580169f, 0.580146f,
+0.580122f, 0.580099f, 0.580076f, 0.580053f, 0.58003f, 0.580006f, 0.579983f, 0.57996f, 0.579937f, 0.579913f, 0.57989f, 0.579867f, 0.579844f, 0.57982f, 0.579797f, 0.579774f, 0.579751f, 0.579727f, 0.579704f, 0.579681f,
+0.579658f, 0.579634f, 0.579611f, 0.579588f, 0.579565f, 0.579542f, 0.579518f, 0.579495f, 0.579472f, 0.579449f, 0.579425f, 0.579402f, 0.579379f, 0.579356f, 0.579332f, 0.579309f, 0.579286f, 0.579263f, 0.57924f, 0.579216f,
+0.579193f, 0.57917f, 0.579147f, 0.579123f, 0.5791f, 0.579077f, 0.579054f, 0.579031f, 0.579007f, 0.578984f, 0.578961f, 0.578938f, 0.578914f, 0.578891f, 0.578868f, 0.578845f, 0.578822f, 0.578798f, 0.578775f, 0.578752f,
+0.578729f, 0.578705f, 0.578682f, 0.578659f, 0.578636f, 0.578613f, 0.578589f, 0.578566f, 0.578543f, 0.57852f, 0.578497f, 0.578473f, 0.57845f, 0.578427f, 0.578404f, 0.57838f, 0.578357f, 0.578334f, 0.578311f, 0.578288f,
+0.578264f, 0.578241f, 0.578218f, 0.578195f, 0.578172f, 0.578148f, 0.578125f, 0.578102f, 0.578079f, 0.578056f, 0.578032f, 0.578009f, 0.577986f, 0.577963f, 0.57794f, 0.577916f, 0.577893f, 0.57787f, 0.577847f, 0.577824f,
+0.5778f, 0.577777f, 0.577754f, 0.577731f, 0.577708f, 0.577684f, 0.577661f, 0.577638f, 0.577615f, 0.577592f, 0.577568f, 0.577545f, 0.577522f, 0.577499f, 0.577476f, 0.577452f, 0.577429f, 0.577406f, 0.577383f, 0.57736f,
+0.577337f, 0.577313f, 0.57729f, 0.577267f, 0.577244f, 0.577221f, 0.577197f, 0.577174f, 0.577151f, 0.577128f, 0.577105f, 0.577082f, 0.577058f, 0.577035f, 0.577012f, 0.576989f, 0.576966f, 0.576942f, 0.576919f, 0.576896f,
+0.576873f, 0.57685f, 0.576827f, 0.576803f, 0.57678f, 0.576757f, 0.576734f, 0.576711f, 0.576687f, 0.576664f, 0.576641f, 0.576618f, 0.576595f, 0.576572f, 0.576548f, 0.576525f, 0.576502f, 0.576479f, 0.576456f, 0.576433f,
+0.576409f, 0.576386f, 0.576363f, 0.57634f, 0.576317f, 0.576294f, 0.57627f, 0.576247f, 0.576224f, 0.576201f, 0.576178f, 0.576155f, 0.576131f, 0.576108f, 0.576085f, 0.576062f, 0.576039f, 0.576016f, 0.575992f, 0.575969f,
+0.575946f, 0.575923f, 0.5759f, 0.575877f, 0.575853f, 0.57583f, 0.575807f, 0.575784f, 0.575761f, 0.575738f, 0.575715f, 0.575691f, 0.575668f, 0.575645f, 0.575622f, 0.575599f, 0.575576f, 0.575552f, 0.575529f, 0.575506f,
+0.575483f, 0.57546f, 0.575437f, 0.575414f, 0.57539f, 0.575367f, 0.575344f, 0.575321f, 0.575298f, 0.575275f, 0.575252f, 0.575228f, 0.575205f, 0.575182f, 0.575159f, 0.575136f, 0.575113f, 0.57509f, 0.575066f, 0.575043f,
+0.57502f, 0.574997f, 0.574974f, 0.574951f, 0.574928f, 0.574904f, 0.574881f, 0.574858f, 0.574835f, 0.574812f, 0.574789f, 0.574766f, 0.574742f, 0.574719f, 0.574696f, 0.574673f, 0.57465f, 0.574627f, 0.574604f, 0.57458f,
+0.574557f, 0.574534f, 0.574511f, 0.574488f, 0.574465f, 0.574442f, 0.574419f, 0.574395f, 0.574372f, 0.574349f, 0.574326f, 0.574303f, 0.57428f, 0.574257f, 0.574234f, 0.57421f, 0.574187f, 0.574164f, 0.574141f, 0.574118f,
+0.574095f, 0.574072f, 0.574049f, 0.574025f, 0.574002f, 0.573979f, 0.573956f, 0.573933f, 0.57391f, 0.573887f, 0.573864f, 0.57384f, 0.573817f, 0.573794f, 0.573771f, 0.573748f, 0.573725f, 0.573702f, 0.573679f, 0.573656f,
+0.573632f, 0.573609f, 0.573586f, 0.573563f, 0.57354f, 0.573517f, 0.573494f, 0.573471f, 0.573448f, 0.573424f, 0.573401f, 0.573378f, 0.573355f, 0.573332f, 0.573309f, 0.573286f, 0.573263f, 0.57324f, 0.573216f, 0.573193f,
+0.57317f, 0.573147f, 0.573124f, 0.573101f, 0.573078f, 0.573055f, 0.573032f, 0.573009f, 0.572985f, 0.572962f, 0.572939f, 0.572916f, 0.572893f, 0.57287f, 0.572847f, 0.572824f, 0.572801f, 0.572778f, 0.572754f, 0.572731f,
+0.572708f, 0.572685f, 0.572662f, 0.572639f, 0.572616f, 0.572593f, 0.57257f, 0.572547f, 0.572524f, 0.5725f, 0.572477f, 0.572454f, 0.572431f, 0.572408f, 0.572385f, 0.572362f, 0.572339f, 0.572316f, 0.572293f, 0.57227f,
+0.572246f, 0.572223f, 0.5722f, 0.572177f, 0.572154f, 0.572131f, 0.572108f, 0.572085f, 0.572062f, 0.572039f, 0.572016f, 0.571993f, 0.571969f, 0.571946f, 0.571923f, 0.5719f, 0.571877f, 0.571854f, 0.571831f, 0.571808f,
+0.571785f, 0.571762f, 0.571739f, 0.571716f, 0.571693f, 0.571669f, 0.571646f, 0.571623f, 0.5716f, 0.571577f, 0.571554f, 0.571531f, 0.571508f, 0.571485f, 0.571462f, 0.571439f, 0.571416f, 0.571393f, 0.57137f, 0.571346f,
+0.571323f, 0.5713f, 0.571277f, 0.571254f, 0.571231f, 0.571208f, 0.571185f, 0.571162f, 0.571139f, 0.571116f, 0.571093f, 0.57107f, 0.571047f, 0.571024f, 0.571001f, 0.570977f, 0.570954f, 0.570931f, 0.570908f, 0.570885f,
+0.570862f, 0.570839f, 0.570816f, 0.570793f, 0.57077f, 0.570747f, 0.570724f, 0.570701f, 0.570678f, 0.570655f, 0.570632f, 0.570609f, 0.570585f, 0.570562f, 0.570539f, 0.570516f, 0.570493f, 0.57047f, 0.570447f, 0.570424f,
+0.570401f, 0.570378f, 0.570355f, 0.570332f, 0.570309f, 0.570286f, 0.570263f, 0.57024f, 0.570217f, 0.570194f, 0.570171f, 0.570148f, 0.570125f, 0.570101f, 0.570078f, 0.570055f, 0.570032f, 0.570009f, 0.569986f, 0.569963f,
+0.56994f, 0.569917f, 0.569894f, 0.569871f, 0.569848f, 0.569825f, 0.569802f, 0.569779f, 0.569756f, 0.569733f, 0.56971f, 0.569687f, 0.569664f, 0.569641f, 0.569618f, 0.569595f, 0.569572f, 0.569549f, 0.569526f, 0.569503f,
+0.56948f, 0.569456f, 0.569433f, 0.56941f, 0.569387f, 0.569364f, 0.569341f, 0.569318f, 0.569295f, 0.569272f, 0.569249f, 0.569226f, 0.569203f, 0.56918f, 0.569157f, 0.569134f, 0.569111f, 0.569088f, 0.569065f, 0.569042f,
+0.569019f, 0.568996f, 0.568973f, 0.56895f, 0.568927f, 0.568904f, 0.568881f, 0.568858f, 0.568835f, 0.568812f, 0.568789f, 0.568766f, 0.568743f, 0.56872f, 0.568697f, 0.568674f, 0.568651f, 0.568628f, 0.568605f, 0.568582f,
+0.568559f, 0.568536f, 0.568513f, 0.56849f, 0.568467f, 0.568444f, 0.568421f, 0.568398f, 0.568375f, 0.568352f, 0.568329f, 0.568306f, 0.568283f, 0.56826f, 0.568237f, 0.568214f, 0.568191f, 0.568168f, 0.568145f, 0.568122f,
+0.568099f, 0.568076f, 0.568053f, 0.56803f, 0.568007f, 0.567984f, 0.567961f, 0.567938f, 0.567915f, 0.567892f, 0.567869f, 0.567846f, 0.567823f, 0.5678f, 0.567777f, 0.567754f, 0.567731f, 0.567708f, 0.567685f, 0.567662f,
+0.567639f, 0.567616f, 0.567593f, 0.56757f, 0.567547f, 0.567524f, 0.567501f, 0.567478f, 0.567455f, 0.567432f, 0.567409f, 0.567386f, 0.567363f, 0.56734f, 0.567317f, 0.567294f, 0.567271f, 0.567248f, 0.567225f, 0.567202f,
+0.567179f, 0.567156f, 0.567133f, 0.56711f, 0.567087f, 0.567064f, 0.567041f, 0.567018f, 0.566995f, 0.566972f, 0.566949f, 0.566926f, 0.566903f, 0.56688f, 0.566857f, 0.566834f, 0.566811f, 0.566788f, 0.566765f, 0.566742f,
+0.566719f, 0.566696f, 0.566673f, 0.56665f, 0.566627f, 0.566604f, 0.566581f, 0.566559f, 0.566536f, 0.566513f, 0.56649f, 0.566467f, 0.566444f, 0.566421f, 0.566398f, 0.566375f, 0.566352f, 0.566329f, 0.566306f, 0.566283f,
+0.56626f, 0.566237f, 0.566214f, 0.566191f, 0.566168f, 0.566145f, 0.566122f, 0.566099f, 0.566076f, 0.566053f, 0.56603f, 0.566007f, 0.565984f, 0.565961f, 0.565938f, 0.565916f, 0.565893f, 0.56587f, 0.565847f, 0.565824f,
+0.565801f, 0.565778f, 0.565755f, 0.565732f, 0.565709f, 0.565686f, 0.565663f, 0.56564f, 0.565617f, 0.565594f, 0.565571f, 0.565548f, 0.565525f, 0.565502f, 0.565479f, 0.565456f, 0.565434f, 0.565411f, 0.565388f, 0.565365f,
+0.565342f, 0.565319f, 0.565296f, 0.565273f, 0.56525f, 0.565227f, 0.565204f, 0.565181f, 0.565158f, 0.565135f, 0.565112f, 0.565089f, 0.565066f, 0.565043f, 0.565021f, 0.564998f, 0.564975f, 0.564952f, 0.564929f, 0.564906f,
+0.564883f, 0.56486f, 0.564837f, 0.564814f, 0.564791f, 0.564768f, 0.564745f, 0.564722f, 0.564699f, 0.564676f, 0.564654f, 0.564631f, 0.564608f, 0.564585f, 0.564562f, 0.564539f, 0.564516f, 0.564493f, 0.56447f, 0.564447f,
+0.564424f, 0.564401f, 0.564378f, 0.564355f, 0.564333f, 0.56431f, 0.564287f, 0.564264f, 0.564241f, 0.564218f, 0.564195f, 0.564172f, 0.564149f, 0.564126f, 0.564103f, 0.56408f, 0.564057f, 0.564035f, 0.564012f, 0.563989f,
+0.563966f, 0.563943f, 0.56392f, 0.563897f, 0.563874f, 0.563851f, 0.563828f, 0.563805f, 0.563782f, 0.56376f, 0.563737f, 0.563714f, 0.563691f, 0.563668f, 0.563645f, 0.563622f, 0.563599f, 0.563576f, 0.563553f, 0.56353f,
+0.563508f, 0.563485f, 0.563462f, 0.563439f, 0.563416f, 0.563393f, 0.56337f, 0.563347f, 0.563324f, 0.563301f, 0.563278f, 0.563256f, 0.563233f, 0.56321f, 0.563187f, 0.563164f, 0.563141f, 0.563118f, 0.563095f, 0.563072f,
+0.563049f, 0.563027f, 0.563004f, 0.562981f, 0.562958f, 0.562935f, 0.562912f, 0.562889f, 0.562866f, 0.562843f, 0.56282f, 0.562798f, 0.562775f, 0.562752f, 0.562729f, 0.562706f, 0.562683f, 0.56266f, 0.562637f, 0.562614f,
+0.562592f, 0.562569f, 0.562546f, 0.562523f, 0.5625f, 0.562477f, 0.562454f, 0.562431f, 0.562408f, 0.562386f, 0.562363f, 0.56234f, 0.562317f, 0.562294f, 0.562271f, 0.562248f, 0.562225f, 0.562202f, 0.56218f, 0.562157f,
+0.562134f, 0.562111f, 0.562088f, 0.562065f, 0.562042f, 0.562019f, 0.561997f, 0.561974f, 0.561951f, 0.561928f, 0.561905f, 0.561882f, 0.561859f, 0.561836f, 0.561814f, 0.561791f, 0.561768f, 0.561745f, 0.561722f, 0.561699f,
+0.561676f, 0.561653f, 0.561631f, 0.561608f, 0.561585f, 0.561562f, 0.561539f, 0.561516f, 0.561493f, 0.561471f, 0.561448f, 0.561425f, 0.561402f, 0.561379f, 0.561356f, 0.561333f, 0.56131f, 0.561288f, 0.561265f, 0.561242f,
+0.561219f, 0.561196f, 0.561173f, 0.56115f, 0.561128f, 0.561105f, 0.561082f, 0.561059f, 0.561036f, 0.561013f, 0.56099f, 0.560968f, 0.560945f, 0.560922f, 0.560899f, 0.560876f, 0.560853f, 0.56083f, 0.560808f, 0.560785f,
+0.560762f, 0.560739f, 0.560716f, 0.560693f, 0.56067f, 0.560648f, 0.560625f, 0.560602f, 0.560579f, 0.560556f, 0.560533f, 0.56051f, 0.560488f, 0.560465f, 0.560442f, 0.560419f, 0.560396f, 0.560373f, 0.560351f, 0.560328f,
+0.560305f, 0.560282f, 0.560259f, 0.560236f, 0.560214f, 0.560191f, 0.560168f, 0.560145f, 0.560122f, 0.560099f, 0.560076f, 0.560054f, 0.560031f, 0.560008f, 0.559985f, 0.559962f, 0.559939f, 0.559917f, 0.559894f, 0.559871f,
+0.559848f, 0.559825f, 0.559802f, 0.55978f, 0.559757f, 0.559734f, 0.559711f, 0.559688f, 0.559665f, 0.559643f, 0.55962f, 0.559597f, 0.559574f, 0.559551f, 0.559528f, 0.559506f, 0.559483f, 0.55946f, 0.559437f, 0.559414f,
+0.559392f, 0.559369f, 0.559346f, 0.559323f, 0.5593f, 0.559277f, 0.559255f, 0.559232f, 0.559209f, 0.559186f, 0.559163f, 0.55914f, 0.559118f, 0.559095f, 0.559072f, 0.559049f, 0.559026f, 0.559004f, 0.558981f, 0.558958f,
+0.558935f, 0.558912f, 0.558889f, 0.558867f, 0.558844f, 0.558821f, 0.558798f, 0.558775f, 0.558753f, 0.55873f, 0.558707f, 0.558684f, 0.558661f, 0.558639f, 0.558616f, 0.558593f, 0.55857f, 0.558547f, 0.558525f, 0.558502f,
+0.558479f, 0.558456f, 0.558433f, 0.55841f, 0.558388f, 0.558365f, 0.558342f, 0.558319f, 0.558296f, 0.558274f, 0.558251f, 0.558228f, 0.558205f, 0.558182f, 0.55816f, 0.558137f, 0.558114f, 0.558091f, 0.558068f, 0.558046f,
+0.558023f, 0.558f, 0.557977f, 0.557954f, 0.557932f, 0.557909f, 0.557886f, 0.557863f, 0.557841f, 0.557818f, 0.557795f, 0.557772f, 0.557749f, 0.557727f, 0.557704f, 0.557681f, 0.557658f, 0.557635f, 0.557613f, 0.55759f,
+0.557567f, 0.557544f, 0.557521f, 0.557499f, 0.557476f, 0.557453f, 0.55743f, 0.557408f, 0.557385f, 0.557362f, 0.557339f, 0.557316f, 0.557294f, 0.557271f, 0.557248f, 0.557225f, 0.557202f, 0.55718f, 0.557157f, 0.557134f,
+0.557111f, 0.557089f, 0.557066f, 0.557043f, 0.55702f, 0.556997f, 0.556975f, 0.556952f, 0.556929f, 0.556906f, 0.556884f, 0.556861f, 0.556838f, 0.556815f, 0.556793f, 0.55677f, 0.556747f, 0.556724f, 0.556701f, 0.556679f,
+0.556656f, 0.556633f, 0.55661f, 0.556588f, 0.556565f, 0.556542f, 0.556519f, 0.556497f, 0.556474f, 0.556451f, 0.556428f, 0.556405f, 0.556383f, 0.55636f, 0.556337f, 0.556314f, 0.556292f, 0.556269f, 0.556246f, 0.556223f,
+0.556201f, 0.556178f, 0.556155f, 0.556132f, 0.55611f, 0.556087f, 0.556064f, 0.556041f, 0.556019f, 0.555996f, 0.555973f, 0.55595f, 0.555928f, 0.555905f, 0.555882f, 0.555859f, 0.555837f, 0.555814f, 0.555791f, 0.555768f,
+0.555745f, 0.555723f, 0.5557f, 0.555677f, 0.555654f, 0.555632f, 0.555609f, 0.555586f, 0.555564f, 0.555541f, 0.555518f, 0.555495f, 0.555473f, 0.55545f, 0.555427f, 0.555404f, 0.555382f, 0.555359f, 0.555336f, 0.555313f,
+0.555291f, 0.555268f, 0.555245f, 0.555222f, 0.5552f, 0.555177f, 0.555154f, 0.555131f, 0.555109f, 0.555086f, 0.555063f, 0.55504f, 0.555018f, 0.554995f, 0.554972f, 0.55495f, 0.554927f, 0.554904f, 0.554881f, 0.554859f,
+0.554836f, 0.554813f, 0.55479f, 0.554768f, 0.554745f, 0.554722f, 0.554699f, 0.554677f, 0.554654f, 0.554631f, 0.554609f, 0.554586f, 0.554563f, 0.55454f, 0.554518f, 0.554495f, 0.554472f, 0.554449f, 0.554427f, 0.554404f,
+0.554381f, 0.554359f, 0.554336f, 0.554313f, 0.55429f, 0.554268f, 0.554245f, 0.554222f, 0.5542f, 0.554177f, 0.554154f, 0.554131f, 0.554109f, 0.554086f, 0.554063f, 0.554041f, 0.554018f, 0.553995f, 0.553972f, 0.55395f,
+0.553927f, 0.553904f, 0.553882f, 0.553859f, 0.553836f, 0.553813f, 0.553791f, 0.553768f, 0.553745f, 0.553723f, 0.5537f, 0.553677f, 0.553654f, 0.553632f, 0.553609f, 0.553586f, 0.553564f, 0.553541f, 0.553518f, 0.553495f,
+0.553473f, 0.55345f, 0.553427f, 0.553405f, 0.553382f, 0.553359f, 0.553337f, 0.553314f, 0.553291f, 0.553268f, 0.553246f, 0.553223f, 0.5532f, 0.553178f, 0.553155f, 0.553132f, 0.55311f, 0.553087f, 0.553064f, 0.553042f,
+0.553019f, 0.552996f, 0.552973f, 0.552951f, 0.552928f, 0.552905f, 0.552883f, 0.55286f, 0.552837f, 0.552815f, 0.552792f, 0.552769f, 0.552747f, 0.552724f, 0.552701f, 0.552678f, 0.552656f, 0.552633f, 0.55261f, 0.552588f,
+0.552565f, 0.552542f, 0.55252f, 0.552497f, 0.552474f, 0.552452f, 0.552429f, 0.552406f, 0.552384f, 0.552361f, 0.552338f, 0.552316f, 0.552293f, 0.55227f, 0.552247f, 0.552225f, 0.552202f, 0.552179f, 0.552157f, 0.552134f,
+0.552111f, 0.552089f, 0.552066f, 0.552043f, 0.552021f, 0.551998f, 0.551975f, 0.551953f, 0.55193f, 0.551907f, 0.551885f, 0.551862f, 0.551839f, 0.551817f, 0.551794f, 0.551771f, 0.551749f, 0.551726f, 0.551703f, 0.551681f,
+0.551658f, 0.551635f, 0.551613f, 0.55159f, 0.551567f, 0.551545f, 0.551522f, 0.551499f, 0.551477f, 0.551454f, 0.551431f, 0.551409f, 0.551386f, 0.551363f, 0.551341f, 0.551318f, 0.551295f, 0.551273f, 0.55125f, 0.551227f,
+0.551205f, 0.551182f, 0.551159f, 0.551137f, 0.551114f, 0.551091f, 0.551069f, 0.551046f, 0.551023f, 0.551001f, 0.550978f, 0.550956f, 0.550933f, 0.55091f, 0.550888f, 0.550865f, 0.550842f, 0.55082f, 0.550797f, 0.550774f,
+0.550752f, 0.550729f, 0.550706f, 0.550684f, 0.550661f, 0.550638f, 0.550616f, 0.550593f, 0.550571f, 0.550548f, 0.550525f, 0.550503f, 0.55048f, 0.550457f, 0.550435f, 0.550412f, 0.550389f, 0.550367f, 0.550344f, 0.550321f,
+0.550299f, 0.550276f, 0.550254f, 0.550231f, 0.550208f, 0.550186f, 0.550163f, 0.55014f, 0.550118f, 0.550095f, 0.550072f, 0.55005f, 0.550027f, 0.550005f, 0.549982f, 0.549959f, 0.549937f, 0.549914f, 0.549891f, 0.549869f,
+0.549846f, 0.549824f, 0.549801f, 0.549778f, 0.549756f, 0.549733f, 0.54971f, 0.549688f, 0.549665f, 0.549643f, 0.54962f, 0.549597f, 0.549575f, 0.549552f, 0.549529f, 0.549507f, 0.549484f, 0.549462f, 0.549439f, 0.549416f,
+0.549394f, 0.549371f, 0.549348f, 0.549326f, 0.549303f, 0.549281f, 0.549258f, 0.549235f, 0.549213f, 0.54919f, 0.549167f, 0.549145f, 0.549122f, 0.5491f, 0.549077f, 0.549054f, 0.549032f, 0.549009f, 0.548987f, 0.548964f,
+0.548941f, 0.548919f, 0.548896f, 0.548874f, 0.548851f, 0.548828f, 0.548806f, 0.548783f, 0.54876f, 0.548738f, 0.548715f, 0.548693f, 0.54867f, 0.548647f, 0.548625f, 0.548602f, 0.54858f, 0.548557f, 0.548534f, 0.548512f,
+0.548489f, 0.548467f, 0.548444f, 0.548421f, 0.548399f, 0.548376f, 0.548354f, 0.548331f, 0.548308f, 0.548286f, 0.548263f, 0.548241f, 0.548218f, 0.548195f, 0.548173f, 0.54815f, 0.548128f, 0.548105f, 0.548082f, 0.54806f,
+0.548037f, 0.548015f, 0.547992f, 0.54797f, 0.547947f, 0.547924f, 0.547902f, 0.547879f, 0.547857f, 0.547834f, 0.547811f, 0.547789f, 0.547766f, 0.547744f, 0.547721f, 0.547698f, 0.547676f, 0.547653f, 0.547631f, 0.547608f,
+0.547586f, 0.547563f, 0.54754f, 0.547518f, 0.547495f, 0.547473f, 0.54745f, 0.547427f, 0.547405f, 0.547382f, 0.54736f, 0.547337f, 0.547315f, 0.547292f, 0.547269f, 0.547247f, 0.547224f, 0.547202f, 0.547179f, 0.547157f,
+0.547134f, 0.547111f, 0.547089f, 0.547066f, 0.547044f, 0.547021f, 0.546999f, 0.546976f, 0.546953f, 0.546931f, 0.546908f, 0.546886f, 0.546863f, 0.546841f, 0.546818f, 0.546795f, 0.546773f, 0.54675f, 0.546728f, 0.546705f,
+0.546683f, 0.54666f, 0.546637f, 0.546615f, 0.546592f, 0.54657f, 0.546547f, 0.546525f, 0.546502f, 0.54648f, 0.546457f, 0.546434f, 0.546412f, 0.546389f, 0.546367f, 0.546344f, 0.546322f, 0.546299f, 0.546277f, 0.546254f,
+0.546231f, 0.546209f, 0.546186f, 0.546164f, 0.546141f, 0.546119f, 0.546096f, 0.546074f, 0.546051f, 0.546028f, 0.546006f, 0.545983f, 0.545961f, 0.545938f, 0.545916f, 0.545893f, 0.545871f, 0.545848f, 0.545826f, 0.545803f,
+0.54578f, 0.545758f, 0.545735f, 0.545713f, 0.54569f, 0.545668f, 0.545645f, 0.545623f, 0.5456f, 0.545578f, 0.545555f, 0.545532f, 0.54551f, 0.545487f, 0.545465f, 0.545442f, 0.54542f, 0.545397f, 0.545375f, 0.545352f,
+0.54533f, 0.545307f, 0.545285f, 0.545262f, 0.545239f, 0.545217f, 0.545194f, 0.545172f, 0.545149f, 0.545127f, 0.545104f, 0.545082f, 0.545059f, 0.545037f, 0.545014f, 0.544992f, 0.544969f, 0.544947f, 0.544924f, 0.544902f,
+0.544879f, 0.544856f, 0.544834f, 0.544811f, 0.544789f, 0.544766f, 0.544744f, 0.544721f, 0.544699f, 0.544676f, 0.544654f, 0.544631f, 0.544609f, 0.544586f, 0.544564f, 0.544541f, 0.544519f, 0.544496f, 0.544474f, 0.544451f,
+0.544429f, 0.544406f, 0.544383f, 0.544361f, 0.544338f, 0.544316f, 0.544293f, 0.544271f, 0.544248f, 0.544226f, 0.544203f, 0.544181f, 0.544158f, 0.544136f, 0.544113f, 0.544091f, 0.544068f, 0.544046f, 0.544023f, 0.544001f,
+0.543978f, 0.543956f, 0.543933f, 0.543911f, 0.543888f, 0.543866f, 0.543843f, 0.543821f, 0.543798f, 0.543776f, 0.543753f, 0.543731f, 0.543708f, 0.543686f, 0.543663f, 0.543641f, 0.543618f, 0.543596f, 0.543573f, 0.543551f,
+0.543528f, 0.543506f, 0.543483f, 0.543461f, 0.543438f, 0.543416f, 0.543393f, 0.543371f, 0.543348f, 0.543326f, 0.543303f, 0.543281f, 0.543258f, 0.543236f, 0.543213f, 0.543191f, 0.543168f, 0.543146f, 0.543123f, 0.543101f,
+0.543078f, 0.543056f, 0.543033f, 0.543011f, 0.542988f, 0.542966f, 0.542943f, 0.542921f, 0.542898f, 0.542876f, 0.542853f, 0.542831f, 0.542808f, 0.542786f, 0.542764f, 0.542741f, 0.542719f, 0.542696f, 0.542674f, 0.542651f,
+0.542629f, 0.542606f, 0.542584f, 0.542561f, 0.542539f, 0.542516f, 0.542494f, 0.542471f, 0.542449f, 0.542426f, 0.542404f, 0.542381f, 0.542359f, 0.542336f, 0.542314f, 0.542291f, 0.542269f, 0.542247f, 0.542224f, 0.542202f,
+0.542179f, 0.542157f, 0.542134f, 0.542112f, 0.542089f, 0.542067f, 0.542044f, 0.542022f, 0.541999f, 0.541977f, 0.541954f, 0.541932f, 0.541909f, 0.541887f, 0.541865f, 0.541842f, 0.54182f, 0.541797f, 0.541775f, 0.541752f,
+0.54173f, 0.541707f, 0.541685f, 0.541662f, 0.54164f, 0.541617f, 0.541595f, 0.541573f, 0.54155f, 0.541528f, 0.541505f, 0.541483f, 0.54146f, 0.541438f, 0.541415f, 0.541393f, 0.54137f, 0.541348f, 0.541326f, 0.541303f,
+0.541281f, 0.541258f, 0.541236f, 0.541213f, 0.541191f, 0.541168f, 0.541146f, 0.541123f, 0.541101f, 0.541079f, 0.541056f, 0.541034f, 0.541011f, 0.540989f, 0.540966f, 0.540944f, 0.540921f, 0.540899f, 0.540877f, 0.540854f,
+0.540832f, 0.540809f, 0.540787f, 0.540764f, 0.540742f, 0.540719f, 0.540697f, 0.540675f, 0.540652f, 0.54063f, 0.540607f, 0.540585f, 0.540562f, 0.54054f, 0.540518f, 0.540495f, 0.540473f, 0.54045f, 0.540428f, 0.540405f,
+0.540383f, 0.54036f, 0.540338f, 0.540316f, 0.540293f, 0.540271f, 0.540248f, 0.540226f, 0.540203f, 0.540181f, 0.540159f, 0.540136f, 0.540114f, 0.540091f, 0.540069f, 0.540046f, 0.540024f, 0.540002f, 0.539979f, 0.539957f,
+0.539934f, 0.539912f, 0.539889f, 0.539867f, 0.539845f, 0.539822f, 0.5398f, 0.539777f, 0.539755f, 0.539733f, 0.53971f, 0.539688f, 0.539665f, 0.539643f, 0.53962f, 0.539598f, 0.539576f, 0.539553f, 0.539531f, 0.539508f,
+0.539486f, 0.539464f, 0.539441f, 0.539419f, 0.539396f, 0.539374f, 0.539351f, 0.539329f, 0.539307f, 0.539284f, 0.539262f, 0.539239f, 0.539217f, 0.539195f, 0.539172f, 0.53915f, 0.539127f, 0.539105f, 0.539083f, 0.53906f,
+0.539038f, 0.539015f, 0.538993f, 0.538971f, 0.538948f, 0.538926f, 0.538903f, 0.538881f, 0.538859f, 0.538836f, 0.538814f, 0.538791f, 0.538769f, 0.538747f, 0.538724f, 0.538702f, 0.538679f, 0.538657f, 0.538635f, 0.538612f,
+0.53859f, 0.538567f, 0.538545f, 0.538523f, 0.5385f, 0.538478f, 0.538455f, 0.538433f, 0.538411f, 0.538388f, 0.538366f, 0.538343f, 0.538321f, 0.538299f, 0.538276f, 0.538254f, 0.538231f, 0.538209f, 0.538187f, 0.538164f,
+0.538142f, 0.538119f, 0.538097f, 0.538075f, 0.538052f, 0.53803f, 0.538008f, 0.537985f, 0.537963f, 0.53794f, 0.537918f, 0.537896f, 0.537873f, 0.537851f, 0.537829f, 0.537806f, 0.537784f, 0.537761f, 0.537739f, 0.537717f,
+0.537694f, 0.537672f, 0.537649f, 0.537627f, 0.537605f, 0.537582f, 0.53756f, 0.537538f, 0.537515f, 0.537493f, 0.53747f, 0.537448f, 0.537426f, 0.537403f, 0.537381f, 0.537359f, 0.537336f, 0.537314f, 0.537292f, 0.537269f,
+0.537247f, 0.537224f, 0.537202f, 0.53718f, 0.537157f, 0.537135f, 0.537113f, 0.53709f, 0.537068f, 0.537045f, 0.537023f, 0.537001f, 0.536978f, 0.536956f, 0.536934f, 0.536911f, 0.536889f, 0.536867f, 0.536844f, 0.536822f,
+0.536799f, 0.536777f, 0.536755f, 0.536732f, 0.53671f, 0.536688f, 0.536665f, 0.536643f, 0.536621f, 0.536598f, 0.536576f, 0.536554f, 0.536531f, 0.536509f, 0.536487f, 0.536464f, 0.536442f, 0.536419f, 0.536397f, 0.536375f,
+0.536352f, 0.53633f, 0.536308f, 0.536285f, 0.536263f, 0.536241f, 0.536218f, 0.536196f, 0.536174f, 0.536151f, 0.536129f, 0.536107f, 0.536084f, 0.536062f, 0.53604f, 0.536017f, 0.535995f, 0.535973f, 0.53595f, 0.535928f,
+0.535905f, 0.535883f, 0.535861f, 0.535838f, 0.535816f, 0.535794f, 0.535771f, 0.535749f, 0.535727f, 0.535704f, 0.535682f, 0.53566f, 0.535637f, 0.535615f, 0.535593f, 0.53557f, 0.535548f, 0.535526f, 0.535503f, 0.535481f,
+0.535459f, 0.535436f, 0.535414f, 0.535392f, 0.535369f, 0.535347f, 0.535325f, 0.535302f, 0.53528f, 0.535258f, 0.535235f, 0.535213f, 0.535191f, 0.535169f, 0.535146f, 0.535124f, 0.535102f, 0.535079f, 0.535057f, 0.535035f,
+0.535012f, 0.53499f, 0.534968f, 0.534945f, 0.534923f, 0.534901f, 0.534878f, 0.534856f, 0.534834f, 0.534811f, 0.534789f, 0.534767f, 0.534744f, 0.534722f, 0.5347f, 0.534677f, 0.534655f, 0.534633f, 0.534611f, 0.534588f,
+0.534566f, 0.534544f, 0.534521f, 0.534499f, 0.534477f, 0.534454f, 0.534432f, 0.53441f, 0.534387f, 0.534365f, 0.534343f, 0.53432f, 0.534298f, 0.534276f, 0.534254f, 0.534231f, 0.534209f, 0.534187f, 0.534164f, 0.534142f,
+0.53412f, 0.534097f, 0.534075f, 0.534053f, 0.534031f, 0.534008f, 0.533986f, 0.533964f, 0.533941f, 0.533919f, 0.533897f, 0.533874f, 0.533852f, 0.53383f, 0.533808f, 0.533785f, 0.533763f, 0.533741f, 0.533718f, 0.533696f,
+0.533674f, 0.533651f, 0.533629f, 0.533607f, 0.533585f, 0.533562f, 0.53354f, 0.533518f, 0.533495f, 0.533473f, 0.533451f, 0.533429f, 0.533406f, 0.533384f, 0.533362f, 0.533339f, 0.533317f, 0.533295f, 0.533273f, 0.53325f,
+0.533228f, 0.533206f, 0.533183f, 0.533161f, 0.533139f, 0.533117f, 0.533094f, 0.533072f, 0.53305f, 0.533027f, 0.533005f, 0.532983f, 0.532961f, 0.532938f, 0.532916f, 0.532894f, 0.532871f, 0.532849f, 0.532827f, 0.532805f,
+0.532782f, 0.53276f, 0.532738f, 0.532716f, 0.532693f, 0.532671f, 0.532649f, 0.532626f, 0.532604f, 0.532582f, 0.53256f, 0.532537f, 0.532515f, 0.532493f, 0.532471f, 0.532448f, 0.532426f, 0.532404f, 0.532381f, 0.532359f,
+0.532337f, 0.532315f, 0.532292f, 0.53227f, 0.532248f, 0.532226f, 0.532203f, 0.532181f, 0.532159f, 0.532137f, 0.532114f, 0.532092f, 0.53207f, 0.532048f, 0.532025f, 0.532003f, 0.531981f, 0.531959f, 0.531936f, 0.531914f,
+0.531892f, 0.531869f, 0.531847f, 0.531825f, 0.531803f, 0.53178f, 0.531758f, 0.531736f, 0.531714f, 0.531691f, 0.531669f, 0.531647f, 0.531625f, 0.531602f, 0.53158f, 0.531558f, 0.531536f, 0.531513f, 0.531491f, 0.531469f,
+0.531447f, 0.531424f, 0.531402f, 0.53138f, 0.531358f, 0.531335f, 0.531313f, 0.531291f, 0.531269f, 0.531246f, 0.531224f, 0.531202f, 0.53118f, 0.531158f, 0.531135f, 0.531113f, 0.531091f, 0.531069f, 0.531046f, 0.531024f,
+0.531002f, 0.53098f, 0.530957f, 0.530935f, 0.530913f, 0.530891f, 0.530868f, 0.530846f, 0.530824f, 0.530802f, 0.530779f, 0.530757f, 0.530735f, 0.530713f, 0.530691f, 0.530668f, 0.530646f, 0.530624f, 0.530602f, 0.530579f,
+0.530557f, 0.530535f, 0.530513f, 0.53049f, 0.530468f, 0.530446f, 0.530424f, 0.530402f, 0.530379f, 0.530357f, 0.530335f, 0.530313f, 0.53029f, 0.530268f, 0.530246f, 0.530224f, 0.530202f, 0.530179f, 0.530157f, 0.530135f,
+0.530113f, 0.53009f, 0.530068f, 0.530046f, 0.530024f, 0.530002f, 0.529979f, 0.529957f, 0.529935f, 0.529913f, 0.529891f, 0.529868f, 0.529846f, 0.529824f, 0.529802f, 0.529779f, 0.529757f, 0.529735f, 0.529713f, 0.529691f,
+0.529668f, 0.529646f, 0.529624f, 0.529602f, 0.52958f, 0.529557f, 0.529535f, 0.529513f, 0.529491f, 0.529469f, 0.529446f, 0.529424f, 0.529402f, 0.52938f, 0.529357f, 0.529335f, 0.529313f, 0.529291f, 0.529269f, 0.529246f,
+0.529224f, 0.529202f, 0.52918f, 0.529158f, 0.529135f, 0.529113f, 0.529091f, 0.529069f, 0.529047f, 0.529024f, 0.529002f, 0.52898f, 0.528958f, 0.528936f, 0.528914f, 0.528891f, 0.528869f, 0.528847f, 0.528825f, 0.528803f,
+0.52878f, 0.528758f, 0.528736f, 0.528714f, 0.528692f, 0.528669f, 0.528647f, 0.528625f, 0.528603f, 0.528581f, 0.528558f, 0.528536f, 0.528514f, 0.528492f, 0.52847f, 0.528448f, 0.528425f, 0.528403f, 0.528381f, 0.528359f,
+0.528337f, 0.528314f, 0.528292f, 0.52827f, 0.528248f, 0.528226f, 0.528204f, 0.528181f, 0.528159f, 0.528137f, 0.528115f, 0.528093f, 0.52807f, 0.528048f, 0.528026f, 0.528004f, 0.527982f, 0.52796f, 0.527937f, 0.527915f,
+0.527893f, 0.527871f, 0.527849f, 0.527827f, 0.527804f, 0.527782f, 0.52776f, 0.527738f, 0.527716f, 0.527694f, 0.527671f, 0.527649f, 0.527627f, 0.527605f, 0.527583f, 0.527561f, 0.527538f, 0.527516f, 0.527494f, 0.527472f,
+0.52745f, 0.527428f, 0.527405f, 0.527383f, 0.527361f, 0.527339f, 0.527317f, 0.527295f, 0.527272f, 0.52725f, 0.527228f, 0.527206f, 0.527184f, 0.527162f, 0.527139f, 0.527117f, 0.527095f, 0.527073f, 0.527051f, 0.527029f,
+0.527007f, 0.526984f, 0.526962f, 0.52694f, 0.526918f, 0.526896f, 0.526874f, 0.526851f, 0.526829f, 0.526807f, 0.526785f, 0.526763f, 0.526741f, 0.526719f, 0.526696f, 0.526674f, 0.526652f, 0.52663f, 0.526608f, 0.526586f,
+0.526564f, 0.526541f, 0.526519f, 0.526497f, 0.526475f, 0.526453f, 0.526431f, 0.526409f, 0.526386f, 0.526364f, 0.526342f, 0.52632f, 0.526298f, 0.526276f, 0.526254f, 0.526231f, 0.526209f, 0.526187f, 0.526165f, 0.526143f,
+0.526121f, 0.526099f, 0.526076f, 0.526054f, 0.526032f, 0.52601f, 0.525988f, 0.525966f, 0.525944f, 0.525922f, 0.525899f, 0.525877f, 0.525855f, 0.525833f, 0.525811f, 0.525789f, 0.525767f, 0.525744f, 0.525722f, 0.5257f,
+0.525678f, 0.525656f, 0.525634f, 0.525612f, 0.52559f, 0.525567f, 0.525545f, 0.525523f, 0.525501f, 0.525479f, 0.525457f, 0.525435f, 0.525413f, 0.52539f, 0.525368f, 0.525346f, 0.525324f, 0.525302f, 0.52528f, 0.525258f,
+0.525236f, 0.525214f, 0.525191f, 0.525169f, 0.525147f, 0.525125f, 0.525103f, 0.525081f, 0.525059f, 0.525037f, 0.525015f, 0.524992f, 0.52497f, 0.524948f, 0.524926f, 0.524904f, 0.524882f, 0.52486f, 0.524838f, 0.524816f,
+0.524793f, 0.524771f, 0.524749f, 0.524727f, 0.524705f, 0.524683f, 0.524661f, 0.524639f, 0.524617f, 0.524594f, 0.524572f, 0.52455f, 0.524528f, 0.524506f, 0.524484f, 0.524462f, 0.52444f, 0.524418f, 0.524396f, 0.524373f,
+0.524351f, 0.524329f, 0.524307f, 0.524285f, 0.524263f, 0.524241f, 0.524219f, 0.524197f, 0.524175f, 0.524152f, 0.52413f, 0.524108f, 0.524086f, 0.524064f, 0.524042f, 0.52402f, 0.523998f, 0.523976f, 0.523954f, 0.523932f,
+0.523909f, 0.523887f, 0.523865f, 0.523843f, 0.523821f, 0.523799f, 0.523777f, 0.523755f, 0.523733f, 0.523711f, 0.523689f, 0.523667f, 0.523644f, 0.523622f, 0.5236f, 0.523578f, 0.523556f, 0.523534f, 0.523512f, 0.52349f,
+0.523468f, 0.523446f, 0.523424f, 0.523402f, 0.523379f, 0.523357f, 0.523335f, 0.523313f, 0.523291f, 0.523269f, 0.523247f, 0.523225f, 0.523203f, 0.523181f, 0.523159f, 0.523137f, 0.523115f, 0.523093f, 0.52307f, 0.523048f,
+0.523026f, 0.523004f, 0.522982f, 0.52296f, 0.522938f, 0.522916f, 0.522894f, 0.522872f, 0.52285f, 0.522828f, 0.522806f, 0.522784f, 0.522761f, 0.522739f, 0.522717f, 0.522695f, 0.522673f, 0.522651f, 0.522629f, 0.522607f,
+0.522585f, 0.522563f, 0.522541f, 0.522519f, 0.522497f, 0.522475f, 0.522453f, 0.522431f, 0.522409f, 0.522386f, 0.522364f, 0.522342f, 0.52232f, 0.522298f, 0.522276f, 0.522254f, 0.522232f, 0.52221f, 0.522188f, 0.522166f,
+0.522144f, 0.522122f, 0.5221f, 0.522078f, 0.522056f, 0.522034f, 0.522012f, 0.521989f, 0.521967f, 0.521945f, 0.521923f, 0.521901f, 0.521879f, 0.521857f, 0.521835f, 0.521813f, 0.521791f, 0.521769f, 0.521747f, 0.521725f,
+0.521703f, 0.521681f, 0.521659f, 0.521637f, 0.521615f, 0.521593f, 0.521571f, 0.521549f, 0.521527f, 0.521505f, 0.521482f, 0.52146f, 0.521438f, 0.521416f, 0.521394f, 0.521372f, 0.52135f, 0.521328f, 0.521306f, 0.521284f,
+0.521262f, 0.52124f, 0.521218f, 0.521196f, 0.521174f, 0.521152f, 0.52113f, 0.521108f, 0.521086f, 0.521064f, 0.521042f, 0.52102f, 0.520998f, 0.520976f, 0.520954f, 0.520932f, 0.52091f, 0.520888f, 0.520866f, 0.520844f,
+0.520822f, 0.5208f, 0.520778f, 0.520756f, 0.520733f, 0.520711f, 0.520689f, 0.520667f, 0.520645f, 0.520623f, 0.520601f, 0.520579f, 0.520557f, 0.520535f, 0.520513f, 0.520491f, 0.520469f, 0.520447f, 0.520425f, 0.520403f,
+0.520381f, 0.520359f, 0.520337f, 0.520315f, 0.520293f, 0.520271f, 0.520249f, 0.520227f, 0.520205f, 0.520183f, 0.520161f, 0.520139f, 0.520117f, 0.520095f, 0.520073f, 0.520051f, 0.520029f, 0.520007f, 0.519985f, 0.519963f,
+0.519941f, 0.519919f, 0.519897f, 0.519875f, 0.519853f, 0.519831f, 0.519809f, 0.519787f, 0.519765f, 0.519743f, 0.519721f, 0.519699f, 0.519677f, 0.519655f, 0.519633f, 0.519611f, 0.519589f, 0.519567f, 0.519545f, 0.519523f,
+0.519501f, 0.519479f, 0.519457f, 0.519435f, 0.519413f, 0.519391f, 0.519369f, 0.519347f, 0.519325f, 0.519303f, 0.519281f, 0.519259f, 0.519237f, 0.519215f, 0.519193f, 0.519171f, 0.519149f, 0.519127f, 0.519105f, 0.519083f,
+0.519061f, 0.519039f, 0.519017f, 0.518995f, 0.518973f, 0.518951f, 0.518929f, 0.518907f, 0.518885f, 0.518863f, 0.518841f, 0.518819f, 0.518797f, 0.518775f, 0.518753f, 0.518731f, 0.518709f, 0.518687f, 0.518665f, 0.518643f,
+0.518622f, 0.5186f, 0.518578f, 0.518556f, 0.518534f, 0.518512f, 0.51849f, 0.518468f, 0.518446f, 0.518424f, 0.518402f, 0.51838f, 0.518358f, 0.518336f, 0.518314f, 0.518292f, 0.51827f, 0.518248f, 0.518226f, 0.518204f,
+0.518182f, 0.51816f, 0.518138f, 0.518116f, 0.518094f, 0.518072f, 0.51805f, 0.518028f, 0.518006f, 0.517984f, 0.517962f, 0.51794f, 0.517918f, 0.517897f, 0.517875f, 0.517853f, 0.517831f, 0.517809f, 0.517787f, 0.517765f,
+0.517743f, 0.517721f, 0.517699f, 0.517677f, 0.517655f, 0.517633f, 0.517611f, 0.517589f, 0.517567f, 0.517545f, 0.517523f, 0.517501f, 0.517479f, 0.517457f, 0.517435f, 0.517413f, 0.517392f, 0.51737f, 0.517348f, 0.517326f,
+0.517304f, 0.517282f, 0.51726f, 0.517238f, 0.517216f, 0.517194f, 0.517172f, 0.51715f, 0.517128f, 0.517106f, 0.517084f, 0.517062f, 0.51704f, 0.517018f, 0.516996f, 0.516975f, 0.516953f, 0.516931f, 0.516909f, 0.516887f,
+0.516865f, 0.516843f, 0.516821f, 0.516799f, 0.516777f, 0.516755f, 0.516733f, 0.516711f, 0.516689f, 0.516667f, 0.516645f, 0.516623f, 0.516602f, 0.51658f, 0.516558f, 0.516536f, 0.516514f, 0.516492f, 0.51647f, 0.516448f,
+0.516426f, 0.516404f, 0.516382f, 0.51636f, 0.516338f, 0.516316f, 0.516295f, 0.516273f, 0.516251f, 0.516229f, 0.516207f, 0.516185f, 0.516163f, 0.516141f, 0.516119f, 0.516097f, 0.516075f, 0.516053f, 0.516031f, 0.51601f,
+0.515988f, 0.515966f, 0.515944f, 0.515922f, 0.5159f, 0.515878f, 0.515856f, 0.515834f, 0.515812f, 0.51579f, 0.515768f, 0.515746f, 0.515725f, 0.515703f, 0.515681f, 0.515659f, 0.515637f, 0.515615f, 0.515593f, 0.515571f,
+0.515549f, 0.515527f, 0.515505f, 0.515484f, 0.515462f, 0.51544f, 0.515418f, 0.515396f, 0.515374f, 0.515352f, 0.51533f, 0.515308f, 0.515286f, 0.515264f, 0.515243f, 0.515221f, 0.515199f, 0.515177f, 0.515155f, 0.515133f,
+0.515111f, 0.515089f, 0.515067f, 0.515045f, 0.515023f, 0.515002f, 0.51498f, 0.514958f, 0.514936f, 0.514914f, 0.514892f, 0.51487f, 0.514848f, 0.514826f, 0.514804f, 0.514783f, 0.514761f, 0.514739f, 0.514717f, 0.514695f,
+0.514673f, 0.514651f, 0.514629f, 0.514607f, 0.514586f, 0.514564f, 0.514542f, 0.51452f, 0.514498f, 0.514476f, 0.514454f, 0.514432f, 0.51441f, 0.514389f, 0.514367f, 0.514345f, 0.514323f, 0.514301f, 0.514279f, 0.514257f,
+0.514235f, 0.514213f, 0.514192f, 0.51417f, 0.514148f, 0.514126f, 0.514104f, 0.514082f, 0.51406f, 0.514038f, 0.514017f, 0.513995f, 0.513973f, 0.513951f, 0.513929f, 0.513907f, 0.513885f, 0.513863f, 0.513842f, 0.51382f,
+0.513798f, 0.513776f, 0.513754f, 0.513732f, 0.51371f, 0.513688f, 0.513667f, 0.513645f, 0.513623f, 0.513601f, 0.513579f, 0.513557f, 0.513535f, 0.513513f, 0.513492f, 0.51347f, 0.513448f, 0.513426f, 0.513404f, 0.513382f,
+0.51336f, 0.513338f, 0.513317f, 0.513295f, 0.513273f, 0.513251f, 0.513229f, 0.513207f, 0.513185f, 0.513164f, 0.513142f, 0.51312f, 0.513098f, 0.513076f, 0.513054f, 0.513032f, 0.513011f, 0.512989f, 0.512967f, 0.512945f,
+0.512923f, 0.512901f, 0.512879f, 0.512858f, 0.512836f, 0.512814f, 0.512792f, 0.51277f, 0.512748f, 0.512726f, 0.512705f, 0.512683f, 0.512661f, 0.512639f, 0.512617f, 0.512595f, 0.512573f, 0.512552f, 0.51253f, 0.512508f,
+0.512486f, 0.512464f, 0.512442f, 0.512421f, 0.512399f, 0.512377f, 0.512355f, 0.512333f, 0.512311f, 0.51229f, 0.512268f, 0.512246f, 0.512224f, 0.512202f, 0.51218f, 0.512158f, 0.512137f, 0.512115f, 0.512093f, 0.512071f,
+0.512049f, 0.512027f, 0.512006f, 0.511984f, 0.511962f, 0.51194f, 0.511918f, 0.511896f, 0.511875f, 0.511853f, 0.511831f, 0.511809f, 0.511787f, 0.511765f, 0.511744f, 0.511722f, 0.5117f, 0.511678f, 0.511656f, 0.511634f,
+0.511613f, 0.511591f, 0.511569f, 0.511547f, 0.511525f, 0.511503f, 0.511482f, 0.51146f, 0.511438f, 0.511416f, 0.511394f, 0.511373f, 0.511351f, 0.511329f, 0.511307f, 0.511285f, 0.511263f, 0.511242f, 0.51122f, 0.511198f,
+0.511176f, 0.511154f, 0.511132f, 0.511111f, 0.511089f, 0.511067f, 0.511045f, 0.511023f, 0.511002f, 0.51098f, 0.510958f, 0.510936f, 0.510914f, 0.510893f, 0.510871f, 0.510849f, 0.510827f, 0.510805f, 0.510783f, 0.510762f,
+0.51074f, 0.510718f, 0.510696f, 0.510674f, 0.510653f, 0.510631f, 0.510609f, 0.510587f, 0.510565f, 0.510544f, 0.510522f, 0.5105f, 0.510478f, 0.510456f, 0.510435f, 0.510413f, 0.510391f, 0.510369f, 0.510347f, 0.510326f,
+0.510304f, 0.510282f, 0.51026f, 0.510238f, 0.510217f, 0.510195f, 0.510173f, 0.510151f, 0.510129f, 0.510108f, 0.510086f, 0.510064f, 0.510042f, 0.51002f, 0.509999f, 0.509977f, 0.509955f, 0.509933f, 0.509911f, 0.50989f,
+0.509868f, 0.509846f, 0.509824f, 0.509802f, 0.509781f, 0.509759f, 0.509737f, 0.509715f, 0.509694f, 0.509672f, 0.50965f, 0.509628f, 0.509606f, 0.509585f, 0.509563f, 0.509541f, 0.509519f, 0.509497f, 0.509476f, 0.509454f,
+0.509432f, 0.50941f, 0.509389f, 0.509367f, 0.509345f, 0.509323f, 0.509301f, 0.50928f, 0.509258f, 0.509236f, 0.509214f, 0.509193f, 0.509171f, 0.509149f, 0.509127f, 0.509105f, 0.509084f, 0.509062f, 0.50904f, 0.509018f,
+0.508997f, 0.508975f, 0.508953f, 0.508931f, 0.508909f, 0.508888f, 0.508866f, 0.508844f, 0.508822f, 0.508801f, 0.508779f, 0.508757f, 0.508735f, 0.508714f, 0.508692f, 0.50867f, 0.508648f, 0.508626f, 0.508605f, 0.508583f,
+0.508561f, 0.508539f, 0.508518f, 0.508496f, 0.508474f, 0.508452f, 0.508431f, 0.508409f, 0.508387f, 0.508365f, 0.508344f, 0.508322f, 0.5083f, 0.508278f, 0.508257f, 0.508235f, 0.508213f, 0.508191f, 0.50817f, 0.508148f,
+0.508126f, 0.508104f, 0.508083f, 0.508061f, 0.508039f, 0.508017f, 0.507996f, 0.507974f, 0.507952f, 0.50793f, 0.507909f, 0.507887f, 0.507865f, 0.507843f, 0.507822f, 0.5078f, 0.507778f, 0.507756f, 0.507735f, 0.507713f,
+0.507691f, 0.507669f, 0.507648f, 0.507626f, 0.507604f, 0.507582f, 0.507561f, 0.507539f, 0.507517f, 0.507495f, 0.507474f, 0.507452f, 0.50743f, 0.507408f, 0.507387f, 0.507365f, 0.507343f, 0.507321f, 0.5073f, 0.507278f,
+0.507256f, 0.507235f, 0.507213f, 0.507191f, 0.507169f, 0.507148f, 0.507126f, 0.507104f, 0.507082f, 0.507061f, 0.507039f, 0.507017f, 0.506995f, 0.506974f, 0.506952f, 0.50693f, 0.506909f, 0.506887f, 0.506865f, 0.506843f,
+0.506822f, 0.5068f, 0.506778f, 0.506756f, 0.506735f, 0.506713f, 0.506691f, 0.50667f, 0.506648f, 0.506626f, 0.506604f, 0.506583f, 0.506561f, 0.506539f, 0.506518f, 0.506496f, 0.506474f, 0.506452f, 0.506431f, 0.506409f,
+0.506387f, 0.506365f, 0.506344f, 0.506322f, 0.5063f, 0.506279f, 0.506257f, 0.506235f, 0.506213f, 0.506192f, 0.50617f, 0.506148f, 0.506127f, 0.506105f, 0.506083f, 0.506062f, 0.50604f, 0.506018f, 0.505996f, 0.505975f,
+0.505953f, 0.505931f, 0.50591f, 0.505888f, 0.505866f, 0.505844f, 0.505823f, 0.505801f, 0.505779f, 0.505758f, 0.505736f, 0.505714f, 0.505693f, 0.505671f, 0.505649f, 0.505627f, 0.505606f, 0.505584f, 0.505562f, 0.505541f,
+0.505519f, 0.505497f, 0.505476f, 0.505454f, 0.505432f, 0.50541f, 0.505389f, 0.505367f, 0.505345f, 0.505324f, 0.505302f, 0.50528f, 0.505259f, 0.505237f, 0.505215f, 0.505194f, 0.505172f, 0.50515f, 0.505128f, 0.505107f,
+0.505085f, 0.505063f, 0.505042f, 0.50502f, 0.504998f, 0.504977f, 0.504955f, 0.504933f, 0.504912f, 0.50489f, 0.504868f, 0.504847f, 0.504825f, 0.504803f, 0.504781f, 0.50476f, 0.504738f, 0.504716f, 0.504695f, 0.504673f,
+0.504651f, 0.50463f, 0.504608f, 0.504586f, 0.504565f, 0.504543f, 0.504521f, 0.5045f, 0.504478f, 0.504456f, 0.504435f, 0.504413f, 0.504391f, 0.50437f, 0.504348f, 0.504326f, 0.504305f, 0.504283f, 0.504261f, 0.50424f,
+0.504218f, 0.504196f, 0.504175f, 0.504153f, 0.504131f, 0.50411f, 0.504088f, 0.504066f, 0.504045f, 0.504023f, 0.504001f, 0.50398f, 0.503958f, 0.503936f, 0.503915f, 0.503893f, 0.503871f, 0.50385f, 0.503828f, 0.503806f,
+0.503785f, 0.503763f, 0.503741f, 0.50372f, 0.503698f, 0.503676f, 0.503655f, 0.503633f, 0.503611f, 0.50359f, 0.503568f, 0.503546f, 0.503525f, 0.503503f, 0.503481f, 0.50346f, 0.503438f, 0.503416f, 0.503395f, 0.503373f,
+0.503351f, 0.50333f, 0.503308f, 0.503286f, 0.503265f, 0.503243f, 0.503222f, 0.5032f, 0.503178f, 0.503157f, 0.503135f, 0.503113f, 0.503092f, 0.50307f, 0.503048f, 0.503027f, 0.503005f, 0.502983f, 0.502962f, 0.50294f,
+0.502919f, 0.502897f, 0.502875f, 0.502854f, 0.502832f, 0.50281f, 0.502789f, 0.502767f, 0.502745f, 0.502724f, 0.502702f, 0.50268f, 0.502659f, 0.502637f, 0.502616f, 0.502594f, 0.502572f, 0.502551f, 0.502529f, 0.502507f,
+0.502486f, 0.502464f, 0.502443f, 0.502421f, 0.502399f, 0.502378f, 0.502356f, 0.502334f, 0.502313f, 0.502291f, 0.502269f, 0.502248f, 0.502226f, 0.502205f, 0.502183f, 0.502161f, 0.50214f, 0.502118f, 0.502096f, 0.502075f,
+0.502053f, 0.502032f, 0.50201f, 0.501988f, 0.501967f, 0.501945f, 0.501923f, 0.501902f, 0.50188f, 0.501859f, 0.501837f, 0.501815f, 0.501794f, 0.501772f, 0.501751f, 0.501729f, 0.501707f, 0.501686f, 0.501664f, 0.501642f,
+0.501621f, 0.501599f, 0.501578f, 0.501556f, 0.501534f, 0.501513f, 0.501491f, 0.50147f, 0.501448f, 0.501426f, 0.501405f, 0.501383f, 0.501361f, 0.50134f, 0.501318f, 0.501297f, 0.501275f, 0.501253f, 0.501232f, 0.50121f,
+0.501189f, 0.501167f, 0.501145f, 0.501124f, 0.501102f, 0.501081f, 0.501059f, 0.501037f, 0.501016f, 0.500994f, 0.500973f, 0.500951f, 0.500929f, 0.500908f, 0.500886f, 0.500865f, 0.500843f, 0.500821f, 0.5008f, 0.500778f,
+0.500757f, 0.500735f, 0.500713f, 0.500692f, 0.50067f, 0.500649f, 0.500627f, 0.500605f, 0.500584f, 0.500562f, 0.500541f, 0.500519f, 0.500498f, 0.500476f, 0.500454f, 0.500433f, 0.500411f, 0.50039f, 0.500368f, 0.500346f,
+0.500325f, 0.500303f, 0.500282f, 0.50026f, 0.500238f, 0.500217f, 0.500195f, 0.500174f, 0.500152f, 0.500131f, 0.500109f, 0.500087f, 0.500066f, 0.500044f, 0.500023f, 0.500001f, 0.499979f, 0.499958f, 0.499936f, 0.499915f,
+0.499893f, 0.499872f, 0.49985f, 0.499828f, 0.499807f, 0.499785f, 0.499764f, 0.499742f, 0.499721f, 0.499699f, 0.499677f, 0.499656f, 0.499634f, 0.499613f, 0.499591f, 0.49957f, 0.499548f, 0.499526f, 0.499505f, 0.499483f,
+0.499462f, 0.49944f, 0.499419f, 0.499397f, 0.499375f, 0.499354f, 0.499332f, 0.499311f, 0.499289f, 0.499268f, 0.499246f, 0.499225f, 0.499203f, 0.499181f, 0.49916f, 0.499138f, 0.499117f, 0.499095f, 0.499074f, 0.499052f,
+0.49903f, 0.499009f, 0.498987f, 0.498966f, 0.498944f, 0.498923f, 0.498901f, 0.49888f, 0.498858f, 0.498836f, 0.498815f, 0.498793f, 0.498772f, 0.49875f, 0.498729f, 0.498707f, 0.498686f, 0.498664f, 0.498643f, 0.498621f,
+0.498599f, 0.498578f, 0.498556f, 0.498535f, 0.498513f, 0.498492f, 0.49847f, 0.498449f, 0.498427f, 0.498405f, 0.498384f, 0.498362f, 0.498341f, 0.498319f, 0.498298f, 0.498276f, 0.498255f, 0.498233f, 0.498212f, 0.49819f,
+0.498169f, 0.498147f, 0.498125f, 0.498104f, 0.498082f, 0.498061f, 0.498039f, 0.498018f, 0.497996f, 0.497975f, 0.497953f, 0.497932f, 0.49791f, 0.497889f, 0.497867f, 0.497845f, 0.497824f, 0.497802f, 0.497781f, 0.497759f,
+0.497738f, 0.497716f, 0.497695f, 0.497673f, 0.497652f, 0.49763f, 0.497609f, 0.497587f, 0.497566f, 0.497544f, 0.497523f, 0.497501f, 0.497479f, 0.497458f, 0.497436f, 0.497415f, 0.497393f, 0.497372f, 0.49735f, 0.497329f,
+0.497307f, 0.497286f, 0.497264f, 0.497243f, 0.497221f, 0.4972f, 0.497178f, 0.497157f, 0.497135f, 0.497114f, 0.497092f, 0.497071f, 0.497049f, 0.497028f, 0.497006f, 0.496985f, 0.496963f, 0.496942f, 0.49692f, 0.496899f,
+0.496877f, 0.496855f, 0.496834f, 0.496812f, 0.496791f, 0.496769f, 0.496748f, 0.496726f, 0.496705f, 0.496683f, 0.496662f, 0.49664f, 0.496619f, 0.496597f, 0.496576f, 0.496554f, 0.496533f, 0.496511f, 0.49649f, 0.496468f,
+0.496447f, 0.496425f, 0.496404f, 0.496382f, 0.496361f, 0.496339f, 0.496318f, 0.496296f, 0.496275f, 0.496253f, 0.496232f, 0.49621f, 0.496189f, 0.496167f, 0.496146f, 0.496124f, 0.496103f, 0.496081f, 0.49606f, 0.496038f,
+0.496017f, 0.495995f, 0.495974f, 0.495952f, 0.495931f, 0.495909f, 0.495888f, 0.495866f, 0.495845f, 0.495823f, 0.495802f, 0.49578f, 0.495759f, 0.495738f, 0.495716f, 0.495695f, 0.495673f, 0.495652f, 0.49563f, 0.495609f,
+0.495587f, 0.495566f, 0.495544f, 0.495523f, 0.495501f, 0.49548f, 0.495458f, 0.495437f, 0.495415f, 0.495394f, 0.495372f, 0.495351f, 0.495329f, 0.495308f, 0.495286f, 0.495265f, 0.495243f, 0.495222f, 0.4952f, 0.495179f,
+0.495158f, 0.495136f, 0.495115f, 0.495093f, 0.495072f, 0.49505f, 0.495029f, 0.495007f, 0.494986f, 0.494964f, 0.494943f, 0.494921f, 0.4949f, 0.494878f, 0.494857f, 0.494835f, 0.494814f, 0.494793f, 0.494771f, 0.49475f,
+0.494728f, 0.494707f, 0.494685f, 0.494664f, 0.494642f, 0.494621f, 0.494599f, 0.494578f, 0.494556f, 0.494535f, 0.494514f, 0.494492f, 0.494471f, 0.494449f, 0.494428f, 0.494406f, 0.494385f, 0.494363f, 0.494342f, 0.49432f,
+0.494299f, 0.494277f, 0.494256f, 0.494235f, 0.494213f, 0.494192f, 0.49417f, 0.494149f, 0.494127f, 0.494106f, 0.494084f, 0.494063f, 0.494042f, 0.49402f, 0.493999f, 0.493977f, 0.493956f, 0.493934f, 0.493913f, 0.493891f,
+0.49387f, 0.493848f, 0.493827f, 0.493806f, 0.493784f, 0.493763f, 0.493741f, 0.49372f, 0.493698f, 0.493677f, 0.493655f, 0.493634f, 0.493613f, 0.493591f, 0.49357f, 0.493548f, 0.493527f, 0.493505f, 0.493484f, 0.493463f,
+0.493441f, 0.49342f, 0.493398f, 0.493377f, 0.493355f, 0.493334f, 0.493312f, 0.493291f, 0.49327f, 0.493248f, 0.493227f, 0.493205f, 0.493184f, 0.493162f, 0.493141f, 0.49312f, 0.493098f, 0.493077f, 0.493055f, 0.493034f,
+0.493012f, 0.492991f, 0.49297f, 0.492948f, 0.492927f, 0.492905f, 0.492884f, 0.492862f, 0.492841f, 0.49282f, 0.492798f, 0.492777f, 0.492755f, 0.492734f, 0.492712f, 0.492691f, 0.49267f, 0.492648f, 0.492627f, 0.492605f,
+0.492584f, 0.492563f, 0.492541f, 0.49252f, 0.492498f, 0.492477f, 0.492455f, 0.492434f, 0.492413f, 0.492391f, 0.49237f, 0.492348f, 0.492327f, 0.492306f, 0.492284f, 0.492263f, 0.492241f, 0.49222f, 0.492199f, 0.492177f,
+0.492156f, 0.492134f, 0.492113f, 0.492091f, 0.49207f, 0.492049f, 0.492027f, 0.492006f, 0.491984f, 0.491963f, 0.491942f, 0.49192f, 0.491899f, 0.491877f, 0.491856f, 0.491835f, 0.491813f, 0.491792f, 0.49177f, 0.491749f,
+0.491728f, 0.491706f, 0.491685f, 0.491663f, 0.491642f, 0.491621f, 0.491599f, 0.491578f, 0.491556f, 0.491535f, 0.491514f, 0.491492f, 0.491471f, 0.491449f, 0.491428f, 0.491407f, 0.491385f, 0.491364f, 0.491342f, 0.491321f,
+0.4913f, 0.491278f, 0.491257f, 0.491236f, 0.491214f, 0.491193f, 0.491171f, 0.49115f, 0.491129f, 0.491107f, 0.491086f, 0.491064f, 0.491043f, 0.491022f, 0.491f, 0.490979f, 0.490957f, 0.490936f, 0.490915f, 0.490893f,
+0.490872f, 0.490851f, 0.490829f, 0.490808f, 0.490786f, 0.490765f, 0.490744f, 0.490722f, 0.490701f, 0.49068f, 0.490658f, 0.490637f, 0.490615f, 0.490594f, 0.490573f, 0.490551f, 0.49053f, 0.490509f, 0.490487f, 0.490466f,
+0.490444f, 0.490423f, 0.490402f, 0.49038f, 0.490359f, 0.490338f, 0.490316f, 0.490295f, 0.490273f, 0.490252f, 0.490231f, 0.490209f, 0.490188f, 0.490167f, 0.490145f, 0.490124f, 0.490103f, 0.490081f, 0.49006f, 0.490038f,
+0.490017f, 0.489996f, 0.489974f, 0.489953f, 0.489932f, 0.48991f, 0.489889f, 0.489868f, 0.489846f, 0.489825f, 0.489803f, 0.489782f, 0.489761f, 0.489739f, 0.489718f, 0.489697f, 0.489675f, 0.489654f, 0.489633f, 0.489611f,
+0.48959f, 0.489569f, 0.489547f, 0.489526f, 0.489505f, 0.489483f, 0.489462f, 0.48944f, 0.489419f, 0.489398f, 0.489376f, 0.489355f, 0.489334f, 0.489312f, 0.489291f, 0.48927f, 0.489248f, 0.489227f, 0.489206f, 0.489184f,
+0.489163f, 0.489142f, 0.48912f, 0.489099f, 0.489078f, 0.489056f, 0.489035f, 0.489014f, 0.488992f, 0.488971f, 0.48895f, 0.488928f, 0.488907f, 0.488886f, 0.488864f, 0.488843f, 0.488822f, 0.4888f, 0.488779f, 0.488758f,
+0.488736f, 0.488715f, 0.488693f, 0.488672f, 0.488651f, 0.488629f, 0.488608f, 0.488587f, 0.488566f, 0.488544f, 0.488523f, 0.488502f, 0.48848f, 0.488459f, 0.488438f, 0.488416f, 0.488395f, 0.488374f, 0.488352f, 0.488331f,
+0.48831f, 0.488288f, 0.488267f, 0.488246f, 0.488224f, 0.488203f, 0.488182f, 0.48816f, 0.488139f, 0.488118f, 0.488096f, 0.488075f, 0.488054f, 0.488032f, 0.488011f, 0.48799f, 0.487968f, 0.487947f, 0.487926f, 0.487904f,
+0.487883f, 0.487862f, 0.487841f, 0.487819f, 0.487798f, 0.487777f, 0.487755f, 0.487734f, 0.487713f, 0.487691f, 0.48767f, 0.487649f, 0.487627f, 0.487606f, 0.487585f, 0.487563f, 0.487542f, 0.487521f, 0.4875f, 0.487478f,
+0.487457f, 0.487436f, 0.487414f, 0.487393f, 0.487372f, 0.48735f, 0.487329f, 0.487308f, 0.487286f, 0.487265f, 0.487244f, 0.487223f, 0.487201f, 0.48718f, 0.487159f, 0.487137f, 0.487116f, 0.487095f, 0.487073f, 0.487052f,
+0.487031f, 0.48701f, 0.486988f, 0.486967f, 0.486946f, 0.486924f, 0.486903f, 0.486882f, 0.486861f, 0.486839f, 0.486818f, 0.486797f, 0.486775f, 0.486754f, 0.486733f, 0.486711f, 0.48669f, 0.486669f, 0.486648f, 0.486626f,
+0.486605f, 0.486584f, 0.486562f, 0.486541f, 0.48652f, 0.486499f, 0.486477f, 0.486456f, 0.486435f, 0.486413f, 0.486392f, 0.486371f, 0.48635f, 0.486328f, 0.486307f, 0.486286f, 0.486264f, 0.486243f, 0.486222f, 0.486201f,
+0.486179f, 0.486158f, 0.486137f, 0.486116f, 0.486094f, 0.486073f, 0.486052f, 0.48603f, 0.486009f, 0.485988f, 0.485967f, 0.485945f, 0.485924f, 0.485903f, 0.485881f, 0.48586f, 0.485839f, 0.485818f, 0.485796f, 0.485775f,
+0.485754f, 0.485733f, 0.485711f, 0.48569f, 0.485669f, 0.485648f, 0.485626f, 0.485605f, 0.485584f, 0.485562f, 0.485541f, 0.48552f, 0.485499f, 0.485477f, 0.485456f, 0.485435f, 0.485414f, 0.485392f, 0.485371f, 0.48535f,
+0.485329f, 0.485307f, 0.485286f, 0.485265f, 0.485244f, 0.485222f, 0.485201f, 0.48518f, 0.485159f, 0.485137f, 0.485116f, 0.485095f, 0.485073f, 0.485052f, 0.485031f, 0.48501f, 0.484988f, 0.484967f, 0.484946f, 0.484925f,
+0.484903f, 0.484882f, 0.484861f, 0.48484f, 0.484818f, 0.484797f, 0.484776f, 0.484755f, 0.484733f, 0.484712f, 0.484691f, 0.48467f, 0.484648f, 0.484627f, 0.484606f, 0.484585f, 0.484564f, 0.484542f, 0.484521f, 0.4845f,
+0.484479f, 0.484457f, 0.484436f, 0.484415f, 0.484394f, 0.484372f, 0.484351f, 0.48433f, 0.484309f, 0.484287f, 0.484266f, 0.484245f, 0.484224f, 0.484202f, 0.484181f, 0.48416f, 0.484139f, 0.484117f, 0.484096f, 0.484075f,
+0.484054f, 0.484033f, 0.484011f, 0.48399f, 0.483969f, 0.483948f, 0.483926f, 0.483905f, 0.483884f, 0.483863f, 0.483841f, 0.48382f, 0.483799f, 0.483778f, 0.483757f, 0.483735f, 0.483714f, 0.483693f, 0.483672f, 0.48365f,
+0.483629f, 0.483608f, 0.483587f, 0.483566f, 0.483544f, 0.483523f, 0.483502f, 0.483481f, 0.483459f, 0.483438f, 0.483417f, 0.483396f, 0.483375f, 0.483353f, 0.483332f, 0.483311f, 0.48329f, 0.483269f, 0.483247f, 0.483226f,
+0.483205f, 0.483184f, 0.483162f, 0.483141f, 0.48312f, 0.483099f, 0.483078f, 0.483056f, 0.483035f, 0.483014f, 0.482993f, 0.482972f, 0.48295f, 0.482929f, 0.482908f, 0.482887f, 0.482866f, 0.482844f, 0.482823f, 0.482802f,
+0.482781f, 0.482759f, 0.482738f, 0.482717f, 0.482696f, 0.482675f, 0.482653f, 0.482632f, 0.482611f, 0.48259f, 0.482569f, 0.482547f, 0.482526f, 0.482505f, 0.482484f, 0.482463f, 0.482441f, 0.48242f, 0.482399f, 0.482378f,
+0.482357f, 0.482336f, 0.482314f, 0.482293f, 0.482272f, 0.482251f, 0.48223f, 0.482208f, 0.482187f, 0.482166f, 0.482145f, 0.482124f, 0.482102f, 0.482081f, 0.48206f, 0.482039f, 0.482018f, 0.481996f, 0.481975f, 0.481954f,
+0.481933f, 0.481912f, 0.481891f, 0.481869f, 0.481848f, 0.481827f, 0.481806f, 0.481785f, 0.481763f, 0.481742f, 0.481721f, 0.4817f, 0.481679f, 0.481658f, 0.481636f, 0.481615f, 0.481594f, 0.481573f, 0.481552f, 0.48153f,
+0.481509f, 0.481488f, 0.481467f, 0.481446f, 0.481425f, 0.481403f, 0.481382f, 0.481361f, 0.48134f, 0.481319f, 0.481298f, 0.481276f, 0.481255f, 0.481234f, 0.481213f, 0.481192f, 0.481171f, 0.481149f, 0.481128f, 0.481107f,
+0.481086f, 0.481065f, 0.481044f, 0.481022f, 0.481001f, 0.48098f, 0.480959f, 0.480938f, 0.480917f, 0.480895f, 0.480874f, 0.480853f, 0.480832f, 0.480811f, 0.48079f, 0.480768f, 0.480747f, 0.480726f, 0.480705f, 0.480684f,
+0.480663f, 0.480641f, 0.48062f, 0.480599f, 0.480578f, 0.480557f, 0.480536f, 0.480514f, 0.480493f, 0.480472f, 0.480451f, 0.48043f, 0.480409f, 0.480388f, 0.480366f, 0.480345f, 0.480324f, 0.480303f, 0.480282f, 0.480261f,
+0.48024f, 0.480218f, 0.480197f, 0.480176f, 0.480155f, 0.480134f, 0.480113f, 0.480091f, 0.48007f, 0.480049f, 0.480028f, 0.480007f, 0.479986f, 0.479965f, 0.479943f, 0.479922f, 0.479901f, 0.47988f, 0.479859f, 0.479838f,
+0.479817f, 0.479796f, 0.479774f, 0.479753f, 0.479732f, 0.479711f, 0.47969f, 0.479669f, 0.479648f, 0.479626f, 0.479605f, 0.479584f, 0.479563f, 0.479542f, 0.479521f, 0.4795f, 0.479478f, 0.479457f, 0.479436f, 0.479415f,
+0.479394f, 0.479373f, 0.479352f, 0.479331f, 0.479309f, 0.479288f, 0.479267f, 0.479246f, 0.479225f, 0.479204f, 0.479183f, 0.479162f, 0.47914f, 0.479119f, 0.479098f, 0.479077f, 0.479056f, 0.479035f, 0.479014f, 0.478993f,
+0.478971f, 0.47895f, 0.478929f, 0.478908f, 0.478887f, 0.478866f, 0.478845f, 0.478824f, 0.478803f, 0.478781f, 0.47876f, 0.478739f, 0.478718f, 0.478697f, 0.478676f, 0.478655f, 0.478634f, 0.478612f, 0.478591f, 0.47857f,
+0.478549f, 0.478528f, 0.478507f, 0.478486f, 0.478465f, 0.478444f, 0.478422f, 0.478401f, 0.47838f, 0.478359f, 0.478338f, 0.478317f, 0.478296f, 0.478275f, 0.478254f, 0.478233f, 0.478211f, 0.47819f, 0.478169f, 0.478148f,
+0.478127f, 0.478106f, 0.478085f, 0.478064f, 0.478043f, 0.478022f, 0.478f, 0.477979f, 0.477958f, 0.477937f, 0.477916f, 0.477895f, 0.477874f, 0.477853f, 0.477832f, 0.477811f, 0.477789f, 0.477768f, 0.477747f, 0.477726f,
+0.477705f, 0.477684f, 0.477663f, 0.477642f, 0.477621f, 0.4776f, 0.477579f, 0.477557f, 0.477536f, 0.477515f, 0.477494f, 0.477473f, 0.477452f, 0.477431f, 0.47741f, 0.477389f, 0.477368f, 0.477347f, 0.477325f, 0.477304f,
+0.477283f, 0.477262f, 0.477241f, 0.47722f, 0.477199f, 0.477178f, 0.477157f, 0.477136f, 0.477115f, 0.477094f, 0.477072f, 0.477051f, 0.47703f, 0.477009f, 0.476988f, 0.476967f, 0.476946f, 0.476925f, 0.476904f, 0.476883f,
+0.476862f, 0.476841f, 0.47682f, 0.476799f, 0.476777f, 0.476756f, 0.476735f, 0.476714f, 0.476693f, 0.476672f, 0.476651f, 0.47663f, 0.476609f, 0.476588f, 0.476567f, 0.476546f, 0.476525f, 0.476504f, 0.476482f, 0.476461f,
+0.47644f, 0.476419f, 0.476398f, 0.476377f, 0.476356f, 0.476335f, 0.476314f, 0.476293f, 0.476272f, 0.476251f, 0.47623f, 0.476209f, 0.476188f, 0.476167f, 0.476145f, 0.476124f, 0.476103f, 0.476082f, 0.476061f, 0.47604f,
+0.476019f, 0.475998f, 0.475977f, 0.475956f, 0.475935f, 0.475914f, 0.475893f, 0.475872f, 0.475851f, 0.47583f, 0.475809f, 0.475788f, 0.475767f, 0.475745f, 0.475724f, 0.475703f, 0.475682f, 0.475661f, 0.47564f, 0.475619f,
+0.475598f, 0.475577f, 0.475556f, 0.475535f, 0.475514f, 0.475493f, 0.475472f, 0.475451f, 0.47543f, 0.475409f, 0.475388f, 0.475367f, 0.475346f, 0.475325f, 0.475304f, 0.475282f, 0.475261f, 0.47524f, 0.475219f, 0.475198f,
+0.475177f, 0.475156f, 0.475135f, 0.475114f, 0.475093f, 0.475072f, 0.475051f, 0.47503f, 0.475009f, 0.474988f, 0.474967f, 0.474946f, 0.474925f, 0.474904f, 0.474883f, 0.474862f, 0.474841f, 0.47482f, 0.474799f, 0.474778f,
+0.474757f, 0.474736f, 0.474715f, 0.474694f, 0.474673f, 0.474652f, 0.474631f, 0.474609f, 0.474588f, 0.474567f, 0.474546f, 0.474525f, 0.474504f, 0.474483f, 0.474462f, 0.474441f, 0.47442f, 0.474399f, 0.474378f, 0.474357f,
+0.474336f, 0.474315f, 0.474294f, 0.474273f, 0.474252f, 0.474231f, 0.47421f, 0.474189f, 0.474168f, 0.474147f, 0.474126f, 0.474105f, 0.474084f, 0.474063f, 0.474042f, 0.474021f, 0.474f, 0.473979f, 0.473958f, 0.473937f,
+0.473916f, 0.473895f, 0.473874f, 0.473853f, 0.473832f, 0.473811f, 0.47379f, 0.473769f, 0.473748f, 0.473727f, 0.473706f, 0.473685f, 0.473664f, 0.473643f, 0.473622f, 0.473601f, 0.47358f, 0.473559f, 0.473538f, 0.473517f,
+0.473496f, 0.473475f, 0.473454f, 0.473433f, 0.473412f, 0.473391f, 0.47337f, 0.473349f, 0.473328f, 0.473307f, 0.473286f, 0.473265f, 0.473244f, 0.473223f, 0.473202f, 0.473181f, 0.47316f, 0.473139f, 0.473118f, 0.473097f,
+0.473076f, 0.473055f, 0.473034f, 0.473013f, 0.472992f, 0.472971f, 0.47295f, 0.472929f, 0.472908f, 0.472887f, 0.472866f, 0.472845f, 0.472824f, 0.472803f, 0.472782f, 0.472761f, 0.47274f, 0.472719f, 0.472698f, 0.472677f,
+0.472656f, 0.472635f, 0.472614f, 0.472593f, 0.472572f, 0.472551f, 0.47253f, 0.472509f, 0.472488f, 0.472467f, 0.472446f, 0.472425f, 0.472405f, 0.472384f, 0.472363f, 0.472342f, 0.472321f, 0.4723f, 0.472279f, 0.472258f,
+0.472237f, 0.472216f, 0.472195f, 0.472174f, 0.472153f, 0.472132f, 0.472111f, 0.47209f, 0.472069f, 0.472048f, 0.472027f, 0.472006f, 0.471985f, 0.471964f, 0.471943f, 0.471922f, 0.471901f, 0.47188f, 0.471859f, 0.471838f,
+0.471817f, 0.471796f, 0.471775f, 0.471755f, 0.471734f, 0.471713f, 0.471692f, 0.471671f, 0.47165f, 0.471629f, 0.471608f, 0.471587f, 0.471566f, 0.471545f, 0.471524f, 0.471503f, 0.471482f, 0.471461f, 0.47144f, 0.471419f,
+0.471398f, 0.471377f, 0.471356f, 0.471335f, 0.471314f, 0.471293f, 0.471273f, 0.471252f, 0.471231f, 0.47121f, 0.471189f, 0.471168f, 0.471147f, 0.471126f, 0.471105f, 0.471084f, 0.471063f, 0.471042f, 0.471021f, 0.471f,
+0.470979f, 0.470958f, 0.470937f, 0.470916f, 0.470896f, 0.470875f, 0.470854f, 0.470833f, 0.470812f, 0.470791f, 0.47077f, 0.470749f, 0.470728f, 0.470707f, 0.470686f, 0.470665f, 0.470644f, 0.470623f, 0.470602f, 0.470581f,
+0.47056f, 0.47054f, 0.470519f, 0.470498f, 0.470477f, 0.470456f, 0.470435f, 0.470414f, 0.470393f, 0.470372f, 0.470351f, 0.47033f, 0.470309f, 0.470288f, 0.470267f, 0.470247f, 0.470226f, 0.470205f, 0.470184f, 0.470163f,
+0.470142f, 0.470121f, 0.4701f, 0.470079f, 0.470058f, 0.470037f, 0.470016f, 0.469995f, 0.469975f, 0.469954f, 0.469933f, 0.469912f, 0.469891f, 0.46987f, 0.469849f, 0.469828f, 0.469807f, 0.469786f, 0.469765f, 0.469744f,
+0.469723f, 0.469703f, 0.469682f, 0.469661f, 0.46964f, 0.469619f, 0.469598f, 0.469577f, 0.469556f, 0.469535f, 0.469514f, 0.469493f, 0.469473f, 0.469452f, 0.469431f, 0.46941f, 0.469389f, 0.469368f, 0.469347f, 0.469326f,
+0.469305f, 0.469284f, 0.469263f, 0.469243f, 0.469222f, 0.469201f, 0.46918f, 0.469159f, 0.469138f, 0.469117f, 0.469096f, 0.469075f, 0.469054f, 0.469034f, 0.469013f, 0.468992f, 0.468971f, 0.46895f, 0.468929f, 0.468908f,
+0.468887f, 0.468866f, 0.468845f, 0.468825f, 0.468804f, 0.468783f, 0.468762f, 0.468741f, 0.46872f, 0.468699f, 0.468678f, 0.468657f, 0.468637f, 0.468616f, 0.468595f, 0.468574f, 0.468553f, 0.468532f, 0.468511f, 0.46849f,
+0.468469f, 0.468449f, 0.468428f, 0.468407f, 0.468386f, 0.468365f, 0.468344f, 0.468323f, 0.468302f, 0.468281f, 0.468261f, 0.46824f, 0.468219f, 0.468198f, 0.468177f, 0.468156f, 0.468135f, 0.468114f, 0.468093f, 0.468073f,
+0.468052f, 0.468031f, 0.46801f, 0.467989f, 0.467968f, 0.467947f, 0.467926f, 0.467906f, 0.467885f, 0.467864f, 0.467843f, 0.467822f, 0.467801f, 0.46778f, 0.467759f, 0.467739f, 0.467718f, 0.467697f, 0.467676f, 0.467655f,
+0.467634f, 0.467613f, 0.467593f, 0.467572f, 0.467551f, 0.46753f, 0.467509f, 0.467488f, 0.467467f, 0.467446f, 0.467426f, 0.467405f, 0.467384f, 0.467363f, 0.467342f, 0.467321f, 0.4673f, 0.46728f, 0.467259f, 0.467238f,
+0.467217f, 0.467196f, 0.467175f, 0.467154f, 0.467134f, 0.467113f, 0.467092f, 0.467071f, 0.46705f, 0.467029f, 0.467008f, 0.466988f, 0.466967f, 0.466946f, 0.466925f, 0.466904f, 0.466883f, 0.466862f, 0.466842f, 0.466821f,
+0.4668f, 0.466779f, 0.466758f, 0.466737f, 0.466716f, 0.466696f, 0.466675f, 0.466654f, 0.466633f, 0.466612f, 0.466591f, 0.466571f, 0.46655f, 0.466529f, 0.466508f, 0.466487f, 0.466466f, 0.466445f, 0.466425f, 0.466404f,
+0.466383f, 0.466362f, 0.466341f, 0.46632f, 0.4663f, 0.466279f, 0.466258f, 0.466237f, 0.466216f, 0.466195f, 0.466175f, 0.466154f, 0.466133f, 0.466112f, 0.466091f, 0.46607f, 0.46605f, 0.466029f, 0.466008f, 0.465987f,
+0.465966f, 0.465945f, 0.465925f, 0.465904f, 0.465883f, 0.465862f, 0.465841f, 0.46582f, 0.4658f, 0.465779f, 0.465758f, 0.465737f, 0.465716f, 0.465695f, 0.465675f, 0.465654f, 0.465633f, 0.465612f, 0.465591f, 0.465571f,
+0.46555f, 0.465529f, 0.465508f, 0.465487f, 0.465466f, 0.465446f, 0.465425f, 0.465404f, 0.465383f, 0.465362f, 0.465341f, 0.465321f, 0.4653f, 0.465279f, 0.465258f, 0.465237f, 0.465217f, 0.465196f, 0.465175f, 0.465154f,
+0.465133f, 0.465113f, 0.465092f, 0.465071f, 0.46505f, 0.465029f, 0.465008f, 0.464988f, 0.464967f, 0.464946f, 0.464925f, 0.464904f, 0.464884f, 0.464863f, 0.464842f, 0.464821f, 0.4648f, 0.46478f, 0.464759f, 0.464738f,
+0.464717f, 0.464696f, 0.464676f, 0.464655f, 0.464634f, 0.464613f, 0.464592f, 0.464572f, 0.464551f, 0.46453f, 0.464509f, 0.464488f, 0.464468f, 0.464447f, 0.464426f, 0.464405f, 0.464384f, 0.464364f, 0.464343f, 0.464322f,
+0.464301f, 0.46428f, 0.46426f, 0.464239f, 0.464218f, 0.464197f, 0.464176f, 0.464156f, 0.464135f, 0.464114f, 0.464093f, 0.464072f, 0.464052f, 0.464031f, 0.46401f, 0.463989f, 0.463969f, 0.463948f, 0.463927f, 0.463906f,
+0.463885f, 0.463865f, 0.463844f, 0.463823f, 0.463802f, 0.463781f, 0.463761f, 0.46374f, 0.463719f, 0.463698f, 0.463678f, 0.463657f, 0.463636f, 0.463615f, 0.463594f, 0.463574f, 0.463553f, 0.463532f, 0.463511f, 0.463491f,
+0.46347f, 0.463449f, 0.463428f, 0.463407f, 0.463387f, 0.463366f, 0.463345f, 0.463324f, 0.463304f, 0.463283f, 0.463262f, 0.463241f, 0.46322f, 0.4632f, 0.463179f, 0.463158f, 0.463137f, 0.463117f, 0.463096f, 0.463075f,
+0.463054f, 0.463034f, 0.463013f, 0.462992f, 0.462971f, 0.462951f, 0.46293f, 0.462909f, 0.462888f, 0.462867f, 0.462847f, 0.462826f, 0.462805f, 0.462784f, 0.462764f, 0.462743f, 0.462722f, 0.462701f, 0.462681f, 0.46266f,
+0.462639f, 0.462618f, 0.462598f, 0.462577f, 0.462556f, 0.462535f, 0.462515f, 0.462494f, 0.462473f, 0.462452f, 0.462432f, 0.462411f, 0.46239f, 0.462369f, 0.462349f, 0.462328f, 0.462307f, 0.462286f, 0.462266f, 0.462245f,
+0.462224f, 0.462203f, 0.462183f, 0.462162f, 0.462141f, 0.46212f, 0.4621f, 0.462079f, 0.462058f, 0.462037f, 0.462017f, 0.461996f, 0.461975f, 0.461954f, 0.461934f, 0.461913f, 0.461892f, 0.461871f, 0.461851f, 0.46183f,
+0.461809f, 0.461788f, 0.461768f, 0.461747f, 0.461726f, 0.461705f, 0.461685f, 0.461664f, 0.461643f, 0.461623f, 0.461602f, 0.461581f, 0.46156f, 0.46154f, 0.461519f, 0.461498f, 0.461477f, 0.461457f, 0.461436f, 0.461415f,
+0.461394f, 0.461374f, 0.461353f, 0.461332f, 0.461312f, 0.461291f, 0.46127f, 0.461249f, 0.461229f, 0.461208f, 0.461187f, 0.461166f, 0.461146f, 0.461125f, 0.461104f, 0.461084f, 0.461063f, 0.461042f, 0.461021f, 0.461001f,
+0.46098f, 0.460959f, 0.460939f, 0.460918f, 0.460897f, 0.460876f, 0.460856f, 0.460835f, 0.460814f, 0.460794f, 0.460773f, 0.460752f, 0.460731f, 0.460711f, 0.46069f, 0.460669f, 0.460649f, 0.460628f, 0.460607f, 0.460586f,
+0.460566f, 0.460545f, 0.460524f, 0.460504f, 0.460483f, 0.460462f, 0.460441f, 0.460421f, 0.4604f, 0.460379f, 0.460359f, 0.460338f, 0.460317f, 0.460296f, 0.460276f, 0.460255f, 0.460234f, 0.460214f, 0.460193f, 0.460172f,
+0.460152f, 0.460131f, 0.46011f, 0.460089f, 0.460069f, 0.460048f, 0.460027f, 0.460007f, 0.459986f, 0.459965f, 0.459945f, 0.459924f, 0.459903f, 0.459882f, 0.459862f, 0.459841f, 0.45982f, 0.4598f, 0.459779f, 0.459758f,
+0.459738f, 0.459717f, 0.459696f, 0.459676f, 0.459655f, 0.459634f, 0.459613f, 0.459593f, 0.459572f, 0.459551f, 0.459531f, 0.45951f, 0.459489f, 0.459469f, 0.459448f, 0.459427f, 0.459407f, 0.459386f, 0.459365f, 0.459345f,
+0.459324f, 0.459303f, 0.459283f, 0.459262f, 0.459241f, 0.45922f, 0.4592f, 0.459179f, 0.459158f, 0.459138f, 0.459117f, 0.459096f, 0.459076f, 0.459055f, 0.459034f, 0.459014f, 0.458993f, 0.458972f, 0.458952f, 0.458931f,
+0.45891f, 0.45889f, 0.458869f, 0.458848f, 0.458828f, 0.458807f, 0.458786f, 0.458766f, 0.458745f, 0.458724f, 0.458704f, 0.458683f, 0.458662f, 0.458642f, 0.458621f, 0.4586f, 0.45858f, 0.458559f, 0.458538f, 0.458518f,
+0.458497f, 0.458476f, 0.458456f, 0.458435f, 0.458414f, 0.458394f, 0.458373f, 0.458352f, 0.458332f, 0.458311f, 0.45829f, 0.45827f, 0.458249f, 0.458228f, 0.458208f, 0.458187f, 0.458166f, 0.458146f, 0.458125f, 0.458104f,
+0.458084f, 0.458063f, 0.458042f, 0.458022f, 0.458001f, 0.45798f, 0.45796f, 0.457939f, 0.457919f, 0.457898f, 0.457877f, 0.457857f, 0.457836f, 0.457815f, 0.457795f, 0.457774f, 0.457753f, 0.457733f, 0.457712f, 0.457691f,
+0.457671f, 0.45765f, 0.457629f, 0.457609f, 0.457588f, 0.457568f, 0.457547f, 0.457526f, 0.457506f, 0.457485f, 0.457464f, 0.457444f, 0.457423f, 0.457402f, 0.457382f, 0.457361f, 0.45734f, 0.45732f, 0.457299f, 0.457279f,
+0.457258f, 0.457237f, 0.457217f, 0.457196f, 0.457175f, 0.457155f, 0.457134f, 0.457113f, 0.457093f, 0.457072f, 0.457052f, 0.457031f, 0.45701f, 0.45699f, 0.456969f, 0.456948f, 0.456928f, 0.456907f, 0.456887f, 0.456866f,
+0.456845f, 0.456825f, 0.456804f, 0.456783f, 0.456763f, 0.456742f, 0.456722f, 0.456701f, 0.45668f, 0.45666f, 0.456639f, 0.456618f, 0.456598f, 0.456577f, 0.456557f, 0.456536f, 0.456515f, 0.456495f, 0.456474f, 0.456453f,
+0.456433f, 0.456412f, 0.456392f, 0.456371f, 0.45635f, 0.45633f, 0.456309f, 0.456289f, 0.456268f, 0.456247f, 0.456227f, 0.456206f, 0.456185f, 0.456165f, 0.456144f, 0.456124f, 0.456103f, 0.456082f, 0.456062f, 0.456041f,
+0.456021f, 0.456f, 0.455979f, 0.455959f, 0.455938f, 0.455918f, 0.455897f, 0.455876f, 0.455856f, 0.455835f, 0.455815f, 0.455794f, 0.455773f, 0.455753f, 0.455732f, 0.455712f, 0.455691f, 0.45567f, 0.45565f, 0.455629f,
+0.455609f, 0.455588f, 0.455567f, 0.455547f, 0.455526f, 0.455506f, 0.455485f, 0.455464f, 0.455444f, 0.455423f, 0.455403f, 0.455382f, 0.455361f, 0.455341f, 0.45532f, 0.4553f, 0.455279f, 0.455258f, 0.455238f, 0.455217f,
+0.455197f, 0.455176f, 0.455155f, 0.455135f, 0.455114f, 0.455094f, 0.455073f, 0.455053f, 0.455032f, 0.455011f, 0.454991f, 0.45497f, 0.45495f, 0.454929f, 0.454908f, 0.454888f, 0.454867f, 0.454847f, 0.454826f, 0.454806f,
+0.454785f, 0.454764f, 0.454744f, 0.454723f, 0.454703f, 0.454682f, 0.454661f, 0.454641f, 0.45462f, 0.4546f, 0.454579f, 0.454559f, 0.454538f, 0.454517f, 0.454497f, 0.454476f, 0.454456f, 0.454435f, 0.454415f, 0.454394f,
+0.454373f, 0.454353f, 0.454332f, 0.454312f, 0.454291f, 0.454271f, 0.45425f, 0.454229f, 0.454209f, 0.454188f, 0.454168f, 0.454147f, 0.454127f, 0.454106f, 0.454085f, 0.454065f, 0.454044f, 0.454024f, 0.454003f, 0.453983f,
+0.453962f, 0.453942f, 0.453921f, 0.4539f, 0.45388f, 0.453859f, 0.453839f, 0.453818f, 0.453798f, 0.453777f, 0.453756f, 0.453736f, 0.453715f, 0.453695f, 0.453674f, 0.453654f, 0.453633f, 0.453613f, 0.453592f, 0.453572f,
+0.453551f, 0.45353f, 0.45351f, 0.453489f, 0.453469f, 0.453448f, 0.453428f, 0.453407f, 0.453387f, 0.453366f, 0.453345f, 0.453325f, 0.453304f, 0.453284f, 0.453263f, 0.453243f, 0.453222f, 0.453202f, 0.453181f, 0.453161f,
+0.45314f, 0.453119f, 0.453099f, 0.453078f, 0.453058f, 0.453037f, 0.453017f, 0.452996f, 0.452976f, 0.452955f, 0.452935f, 0.452914f, 0.452894f, 0.452873f, 0.452852f, 0.452832f, 0.452811f, 0.452791f, 0.45277f, 0.45275f,
+0.452729f, 0.452709f, 0.452688f, 0.452668f, 0.452647f, 0.452627f, 0.452606f, 0.452585f, 0.452565f, 0.452544f, 0.452524f, 0.452503f, 0.452483f, 0.452462f, 0.452442f, 0.452421f, 0.452401f, 0.45238f, 0.45236f, 0.452339f,
+0.452319f, 0.452298f, 0.452278f, 0.452257f, 0.452237f, 0.452216f, 0.452196f, 0.452175f, 0.452154f, 0.452134f, 0.452113f, 0.452093f, 0.452072f, 0.452052f, 0.452031f, 0.452011f, 0.45199f, 0.45197f, 0.451949f, 0.451929f,
+0.451908f, 0.451888f, 0.451867f, 0.451847f, 0.451826f, 0.451806f, 0.451785f, 0.451765f, 0.451744f, 0.451724f, 0.451703f, 0.451683f, 0.451662f, 0.451642f, 0.451621f, 0.451601f, 0.45158f, 0.45156f, 0.451539f, 0.451519f,
+0.451498f, 0.451478f, 0.451457f, 0.451437f, 0.451416f, 0.451396f, 0.451375f, 0.451355f, 0.451334f, 0.451314f, 0.451293f, 0.451272f, 0.451252f, 0.451231f, 0.451211f, 0.45119f, 0.45117f, 0.45115f, 0.451129f, 0.451109f,
+0.451088f, 0.451068f, 0.451047f, 0.451027f, 0.451006f, 0.450986f, 0.450965f, 0.450945f, 0.450924f, 0.450904f, 0.450883f, 0.450863f, 0.450842f, 0.450822f, 0.450801f, 0.450781f, 0.45076f, 0.45074f, 0.450719f, 0.450699f,
+0.450678f, 0.450658f, 0.450637f, 0.450617f, 0.450596f, 0.450576f, 0.450555f, 0.450535f, 0.450514f, 0.450494f, 0.450473f, 0.450453f, 0.450432f, 0.450412f, 0.450391f, 0.450371f, 0.45035f, 0.45033f, 0.450309f, 0.450289f,
+0.450269f, 0.450248f, 0.450228f, 0.450207f, 0.450187f, 0.450166f, 0.450146f, 0.450125f, 0.450105f, 0.450084f, 0.450064f, 0.450043f, 0.450023f, 0.450002f, 0.449982f, 0.449961f, 0.449941f, 0.44992f, 0.4499f, 0.44988f,
+0.449859f, 0.449839f, 0.449818f, 0.449798f, 0.449777f, 0.449757f, 0.449736f, 0.449716f, 0.449695f, 0.449675f, 0.449654f, 0.449634f, 0.449613f, 0.449593f, 0.449573f, 0.449552f, 0.449532f, 0.449511f, 0.449491f, 0.44947f,
+0.44945f, 0.449429f, 0.449409f, 0.449388f, 0.449368f, 0.449347f, 0.449327f, 0.449307f, 0.449286f, 0.449266f, 0.449245f, 0.449225f, 0.449204f, 0.449184f, 0.449163f, 0.449143f, 0.449122f, 0.449102f, 0.449082f, 0.449061f,
+0.449041f, 0.44902f, 0.449f, 0.448979f, 0.448959f, 0.448938f, 0.448918f, 0.448898f, 0.448877f, 0.448857f, 0.448836f, 0.448816f, 0.448795f, 0.448775f, 0.448754f, 0.448734f, 0.448714f, 0.448693f, 0.448673f, 0.448652f,
+0.448632f, 0.448611f, 0.448591f, 0.44857f, 0.44855f, 0.44853f, 0.448509f, 0.448489f, 0.448468f, 0.448448f, 0.448427f, 0.448407f, 0.448387f, 0.448366f, 0.448346f, 0.448325f, 0.448305f, 0.448284f, 0.448264f, 0.448243f,
+0.448223f, 0.448203f, 0.448182f, 0.448162f, 0.448141f, 0.448121f, 0.4481f, 0.44808f, 0.44806f, 0.448039f, 0.448019f, 0.447998f, 0.447978f, 0.447957f, 0.447937f, 0.447917f, 0.447896f, 0.447876f, 0.447855f, 0.447835f,
+0.447815f, 0.447794f, 0.447774f, 0.447753f, 0.447733f, 0.447712f, 0.447692f, 0.447672f, 0.447651f, 0.447631f, 0.44761f, 0.44759f, 0.447569f, 0.447549f, 0.447529f, 0.447508f, 0.447488f, 0.447467f, 0.447447f, 0.447427f,
+0.447406f, 0.447386f, 0.447365f, 0.447345f, 0.447325f, 0.447304f, 0.447284f, 0.447263f, 0.447243f, 0.447222f, 0.447202f, 0.447182f, 0.447161f, 0.447141f, 0.44712f, 0.4471f, 0.44708f, 0.447059f, 0.447039f, 0.447018f,
+0.446998f, 0.446978f, 0.446957f, 0.446937f, 0.446916f, 0.446896f, 0.446876f, 0.446855f, 0.446835f, 0.446814f, 0.446794f, 0.446774f, 0.446753f, 0.446733f, 0.446712f, 0.446692f, 0.446672f, 0.446651f, 0.446631f, 0.44661f,
+0.44659f, 0.44657f, 0.446549f, 0.446529f, 0.446508f, 0.446488f, 0.446468f, 0.446447f, 0.446427f, 0.446407f, 0.446386f, 0.446366f, 0.446345f, 0.446325f, 0.446305f, 0.446284f, 0.446264f, 0.446243f, 0.446223f, 0.446203f,
+0.446182f, 0.446162f, 0.446141f, 0.446121f, 0.446101f, 0.44608f, 0.44606f, 0.44604f, 0.446019f, 0.445999f, 0.445978f, 0.445958f, 0.445938f, 0.445917f, 0.445897f, 0.445877f, 0.445856f, 0.445836f, 0.445815f, 0.445795f,
+0.445775f, 0.445754f, 0.445734f, 0.445714f, 0.445693f, 0.445673f, 0.445652f, 0.445632f, 0.445612f, 0.445591f, 0.445571f, 0.445551f, 0.44553f, 0.44551f, 0.445489f, 0.445469f, 0.445449f, 0.445428f, 0.445408f, 0.445388f,
+0.445367f, 0.445347f, 0.445327f, 0.445306f, 0.445286f, 0.445265f, 0.445245f, 0.445225f, 0.445204f, 0.445184f, 0.445164f, 0.445143f, 0.445123f, 0.445103f, 0.445082f, 0.445062f, 0.445041f, 0.445021f, 0.445001f, 0.44498f,
+0.44496f, 0.44494f, 0.444919f, 0.444899f, 0.444879f, 0.444858f, 0.444838f, 0.444818f, 0.444797f, 0.444777f, 0.444756f, 0.444736f, 0.444716f, 0.444695f, 0.444675f, 0.444655f, 0.444634f, 0.444614f, 0.444594f, 0.444573f,
+0.444553f, 0.444533f, 0.444512f, 0.444492f, 0.444472f, 0.444451f, 0.444431f, 0.444411f, 0.44439f, 0.44437f, 0.44435f, 0.444329f, 0.444309f, 0.444288f, 0.444268f, 0.444248f, 0.444227f, 0.444207f, 0.444187f, 0.444166f,
+0.444146f, 0.444126f, 0.444105f, 0.444085f, 0.444065f, 0.444044f, 0.444024f, 0.444004f, 0.443983f, 0.443963f, 0.443943f, 0.443922f, 0.443902f, 0.443882f, 0.443861f, 0.443841f, 0.443821f, 0.4438f, 0.44378f, 0.44376f,
+0.443739f, 0.443719f, 0.443699f, 0.443678f, 0.443658f, 0.443638f, 0.443617f, 0.443597f, 0.443577f, 0.443556f, 0.443536f, 0.443516f, 0.443496f, 0.443475f, 0.443455f, 0.443435f, 0.443414f, 0.443394f, 0.443374f, 0.443353f,
+0.443333f, 0.443313f, 0.443292f, 0.443272f, 0.443252f, 0.443231f, 0.443211f, 0.443191f, 0.44317f, 0.44315f, 0.44313f, 0.443109f, 0.443089f, 0.443069f, 0.443049f, 0.443028f, 0.443008f, 0.442988f, 0.442967f, 0.442947f,
+0.442927f, 0.442906f, 0.442886f, 0.442866f, 0.442845f, 0.442825f, 0.442805f, 0.442784f, 0.442764f, 0.442744f, 0.442724f, 0.442703f, 0.442683f, 0.442663f, 0.442642f, 0.442622f, 0.442602f, 0.442581f, 0.442561f, 0.442541f,
+0.442521f, 0.4425f, 0.44248f, 0.44246f, 0.442439f, 0.442419f, 0.442399f, 0.442378f, 0.442358f, 0.442338f, 0.442318f, 0.442297f, 0.442277f, 0.442257f, 0.442236f, 0.442216f, 0.442196f, 0.442175f, 0.442155f, 0.442135f,
+0.442115f, 0.442094f, 0.442074f, 0.442054f, 0.442033f, 0.442013f, 0.441993f, 0.441973f, 0.441952f, 0.441932f, 0.441912f, 0.441891f, 0.441871f, 0.441851f, 0.441831f, 0.44181f, 0.44179f, 0.44177f, 0.441749f, 0.441729f,
+0.441709f, 0.441689f, 0.441668f, 0.441648f, 0.441628f, 0.441607f, 0.441587f, 0.441567f, 0.441547f, 0.441526f, 0.441506f, 0.441486f, 0.441466f, 0.441445f, 0.441425f, 0.441405f, 0.441384f, 0.441364f, 0.441344f, 0.441324f,
+0.441303f, 0.441283f, 0.441263f, 0.441242f, 0.441222f, 0.441202f, 0.441182f, 0.441161f, 0.441141f, 0.441121f, 0.441101f, 0.44108f, 0.44106f, 0.44104f, 0.44102f, 0.440999f, 0.440979f, 0.440959f, 0.440938f, 0.440918f,
+0.440898f, 0.440878f, 0.440857f, 0.440837f, 0.440817f, 0.440797f, 0.440776f, 0.440756f, 0.440736f, 0.440716f, 0.440695f, 0.440675f, 0.440655f, 0.440635f, 0.440614f, 0.440594f, 0.440574f, 0.440554f, 0.440533f, 0.440513f,
+0.440493f, 0.440473f, 0.440452f, 0.440432f, 0.440412f, 0.440391f, 0.440371f, 0.440351f, 0.440331f, 0.44031f, 0.44029f, 0.44027f, 0.44025f, 0.440229f, 0.440209f, 0.440189f, 0.440169f, 0.440149f, 0.440128f, 0.440108f,
+0.440088f, 0.440068f, 0.440047f, 0.440027f, 0.440007f, 0.439987f, 0.439966f, 0.439946f, 0.439926f, 0.439906f, 0.439885f, 0.439865f, 0.439845f, 0.439825f, 0.439804f, 0.439784f, 0.439764f, 0.439744f, 0.439723f, 0.439703f,
+0.439683f, 0.439663f, 0.439642f, 0.439622f, 0.439602f, 0.439582f, 0.439562f, 0.439541f, 0.439521f, 0.439501f, 0.439481f, 0.43946f, 0.43944f, 0.43942f, 0.4394f, 0.439379f, 0.439359f, 0.439339f, 0.439319f, 0.439299f,
+0.439278f, 0.439258f, 0.439238f, 0.439218f, 0.439197f, 0.439177f, 0.439157f, 0.439137f, 0.439117f, 0.439096f, 0.439076f, 0.439056f, 0.439036f, 0.439015f, 0.438995f, 0.438975f, 0.438955f, 0.438935f, 0.438914f, 0.438894f,
+0.438874f, 0.438854f, 0.438833f, 0.438813f, 0.438793f, 0.438773f, 0.438753f, 0.438732f, 0.438712f, 0.438692f, 0.438672f, 0.438652f, 0.438631f, 0.438611f, 0.438591f, 0.438571f, 0.43855f, 0.43853f, 0.43851f, 0.43849f,
+0.43847f, 0.438449f, 0.438429f, 0.438409f, 0.438389f, 0.438369f, 0.438348f, 0.438328f, 0.438308f, 0.438288f, 0.438268f, 0.438247f, 0.438227f, 0.438207f, 0.438187f, 0.438167f, 0.438146f, 0.438126f, 0.438106f, 0.438086f,
+0.438066f, 0.438045f, 0.438025f, 0.438005f, 0.437985f, 0.437965f, 0.437944f, 0.437924f, 0.437904f, 0.437884f, 0.437864f, 0.437843f, 0.437823f, 0.437803f, 0.437783f, 0.437763f, 0.437742f, 0.437722f, 0.437702f, 0.437682f,
+0.437662f, 0.437642f, 0.437621f, 0.437601f, 0.437581f, 0.437561f, 0.437541f, 0.43752f, 0.4375f, 0.43748f, 0.43746f, 0.43744f, 0.437419f, 0.437399f, 0.437379f, 0.437359f, 0.437339f, 0.437319f, 0.437298f, 0.437278f,
+0.437258f, 0.437238f, 0.437218f, 0.437197f, 0.437177f, 0.437157f, 0.437137f, 0.437117f, 0.437097f, 0.437076f, 0.437056f, 0.437036f, 0.437016f, 0.436996f, 0.436976f, 0.436955f, 0.436935f, 0.436915f, 0.436895f, 0.436875f,
+0.436855f, 0.436834f, 0.436814f, 0.436794f, 0.436774f, 0.436754f, 0.436734f, 0.436713f, 0.436693f, 0.436673f, 0.436653f, 0.436633f, 0.436613f, 0.436592f, 0.436572f, 0.436552f, 0.436532f, 0.436512f, 0.436492f, 0.436471f,
+0.436451f, 0.436431f, 0.436411f, 0.436391f, 0.436371f, 0.43635f, 0.43633f, 0.43631f, 0.43629f, 0.43627f, 0.43625f, 0.436229f, 0.436209f, 0.436189f, 0.436169f, 0.436149f, 0.436129f, 0.436109f, 0.436088f, 0.436068f,
+0.436048f, 0.436028f, 0.436008f, 0.435988f, 0.435967f, 0.435947f, 0.435927f, 0.435907f, 0.435887f, 0.435867f, 0.435847f, 0.435826f, 0.435806f, 0.435786f, 0.435766f, 0.435746f, 0.435726f, 0.435706f, 0.435685f, 0.435665f,
+0.435645f, 0.435625f, 0.435605f, 0.435585f, 0.435565f, 0.435544f, 0.435524f, 0.435504f, 0.435484f, 0.435464f, 0.435444f, 0.435424f, 0.435403f, 0.435383f, 0.435363f, 0.435343f, 0.435323f, 0.435303f, 0.435283f, 0.435262f,
+0.435242f, 0.435222f, 0.435202f, 0.435182f, 0.435162f, 0.435142f, 0.435122f, 0.435101f, 0.435081f, 0.435061f, 0.435041f, 0.435021f, 0.435001f, 0.434981f, 0.434961f, 0.43494f, 0.43492f, 0.4349f, 0.43488f, 0.43486f,
+0.43484f, 0.43482f, 0.4348f, 0.434779f, 0.434759f, 0.434739f, 0.434719f, 0.434699f, 0.434679f, 0.434659f, 0.434639f, 0.434618f, 0.434598f, 0.434578f, 0.434558f, 0.434538f, 0.434518f, 0.434498f, 0.434478f, 0.434458f,
+0.434437f, 0.434417f, 0.434397f, 0.434377f, 0.434357f, 0.434337f, 0.434317f, 0.434297f, 0.434276f, 0.434256f, 0.434236f, 0.434216f, 0.434196f, 0.434176f, 0.434156f, 0.434136f, 0.434116f, 0.434096f, 0.434075f, 0.434055f,
+0.434035f, 0.434015f, 0.433995f, 0.433975f, 0.433955f, 0.433935f, 0.433915f, 0.433894f, 0.433874f, 0.433854f, 0.433834f, 0.433814f, 0.433794f, 0.433774f, 0.433754f, 0.433734f, 0.433714f, 0.433693f, 0.433673f, 0.433653f,
+0.433633f, 0.433613f, 0.433593f, 0.433573f, 0.433553f, 0.433533f, 0.433513f, 0.433493f, 0.433472f, 0.433452f, 0.433432f, 0.433412f, 0.433392f, 0.433372f, 0.433352f, 0.433332f, 0.433312f, 0.433292f, 0.433272f, 0.433251f,
+0.433231f, 0.433211f, 0.433191f, 0.433171f, 0.433151f, 0.433131f, 0.433111f, 0.433091f, 0.433071f, 0.433051f, 0.433031f, 0.43301f, 0.43299f, 0.43297f, 0.43295f, 0.43293f, 0.43291f, 0.43289f, 0.43287f, 0.43285f,
+0.43283f, 0.43281f, 0.43279f, 0.432769f, 0.432749f, 0.432729f, 0.432709f, 0.432689f, 0.432669f, 0.432649f, 0.432629f, 0.432609f, 0.432589f, 0.432569f, 0.432549f, 0.432529f, 0.432509f, 0.432488f, 0.432468f, 0.432448f,
+0.432428f, 0.432408f, 0.432388f, 0.432368f, 0.432348f, 0.432328f, 0.432308f, 0.432288f, 0.432268f, 0.432248f, 0.432228f, 0.432208f, 0.432187f, 0.432167f, 0.432147f, 0.432127f, 0.432107f, 0.432087f, 0.432067f, 0.432047f,
+0.432027f, 0.432007f, 0.431987f, 0.431967f, 0.431947f, 0.431927f, 0.431907f, 0.431887f, 0.431867f, 0.431846f, 0.431826f, 0.431806f, 0.431786f, 0.431766f, 0.431746f, 0.431726f, 0.431706f, 0.431686f, 0.431666f, 0.431646f,
+0.431626f, 0.431606f, 0.431586f, 0.431566f, 0.431546f, 0.431526f, 0.431506f, 0.431486f, 0.431466f, 0.431445f, 0.431425f, 0.431405f, 0.431385f, 0.431365f, 0.431345f, 0.431325f, 0.431305f, 0.431285f, 0.431265f, 0.431245f,
+0.431225f, 0.431205f, 0.431185f, 0.431165f, 0.431145f, 0.431125f, 0.431105f, 0.431085f, 0.431065f, 0.431045f, 0.431025f, 0.431005f, 0.430985f, 0.430965f, 0.430944f, 0.430924f, 0.430904f, 0.430884f, 0.430864f, 0.430844f,
+0.430824f, 0.430804f, 0.430784f, 0.430764f, 0.430744f, 0.430724f, 0.430704f, 0.430684f, 0.430664f, 0.430644f, 0.430624f, 0.430604f, 0.430584f, 0.430564f, 0.430544f, 0.430524f, 0.430504f, 0.430484f, 0.430464f, 0.430444f,
+0.430424f, 0.430404f, 0.430384f, 0.430364f, 0.430344f, 0.430324f, 0.430304f, 0.430284f, 0.430264f, 0.430244f, 0.430224f, 0.430204f, 0.430184f, 0.430164f, 0.430144f, 0.430123f, 0.430103f, 0.430083f, 0.430063f, 0.430043f,
+0.430023f, 0.430003f, 0.429983f, 0.429963f, 0.429943f, 0.429923f, 0.429903f, 0.429883f, 0.429863f, 0.429843f, 0.429823f, 0.429803f, 0.429783f, 0.429763f, 0.429743f, 0.429723f, 0.429703f, 0.429683f, 0.429663f, 0.429643f,
+0.429623f, 0.429603f, 0.429583f, 0.429563f, 0.429543f, 0.429523f, 0.429503f, 0.429483f, 0.429463f, 0.429443f, 0.429423f, 0.429403f, 0.429383f, 0.429363f, 0.429343f, 0.429323f, 0.429303f, 0.429283f, 0.429263f, 0.429243f,
+0.429223f, 0.429203f, 0.429183f, 0.429163f, 0.429143f, 0.429123f, 0.429103f, 0.429083f, 0.429063f, 0.429043f, 0.429023f, 0.429003f, 0.428983f, 0.428963f, 0.428943f, 0.428923f, 0.428903f, 0.428883f, 0.428864f, 0.428844f,
+0.428824f, 0.428804f, 0.428784f, 0.428764f, 0.428744f, 0.428724f, 0.428704f, 0.428684f, 0.428664f, 0.428644f, 0.428624f, 0.428604f, 0.428584f, 0.428564f, 0.428544f, 0.428524f, 0.428504f, 0.428484f, 0.428464f, 0.428444f,
+0.428424f, 0.428404f, 0.428384f, 0.428364f, 0.428344f, 0.428324f, 0.428304f, 0.428284f, 0.428264f, 0.428244f, 0.428224f, 0.428204f, 0.428184f, 0.428164f, 0.428144f, 0.428124f, 0.428104f, 0.428084f, 0.428064f, 0.428045f,
+0.428025f, 0.428005f, 0.427985f, 0.427965f, 0.427945f, 0.427925f, 0.427905f, 0.427885f, 0.427865f, 0.427845f, 0.427825f, 0.427805f, 0.427785f, 0.427765f, 0.427745f, 0.427725f, 0.427705f, 0.427685f, 0.427665f, 0.427645f,
+0.427625f, 0.427605f, 0.427585f, 0.427565f, 0.427545f, 0.427526f, 0.427506f, 0.427486f, 0.427466f, 0.427446f, 0.427426f, 0.427406f, 0.427386f, 0.427366f, 0.427346f, 0.427326f, 0.427306f, 0.427286f, 0.427266f, 0.427246f,
+0.427226f, 0.427206f, 0.427186f, 0.427166f, 0.427146f, 0.427127f, 0.427107f, 0.427087f, 0.427067f, 0.427047f, 0.427027f, 0.427007f, 0.426987f, 0.426967f, 0.426947f, 0.426927f, 0.426907f, 0.426887f, 0.426867f, 0.426847f,
+0.426827f, 0.426807f, 0.426788f, 0.426768f, 0.426748f, 0.426728f, 0.426708f, 0.426688f, 0.426668f, 0.426648f, 0.426628f, 0.426608f, 0.426588f, 0.426568f, 0.426548f, 0.426528f, 0.426508f, 0.426489f, 0.426469f, 0.426449f,
+0.426429f, 0.426409f, 0.426389f, 0.426369f, 0.426349f, 0.426329f, 0.426309f, 0.426289f, 0.426269f, 0.426249f, 0.42623f, 0.42621f, 0.42619f, 0.42617f, 0.42615f, 0.42613f, 0.42611f, 0.42609f, 0.42607f, 0.42605f,
+0.42603f, 0.42601f, 0.42599f, 0.425971f, 0.425951f, 0.425931f, 0.425911f, 0.425891f, 0.425871f, 0.425851f, 0.425831f, 0.425811f, 0.425791f, 0.425771f, 0.425751f, 0.425732f, 0.425712f, 0.425692f, 0.425672f, 0.425652f,
+0.425632f, 0.425612f, 0.425592f, 0.425572f, 0.425552f, 0.425532f, 0.425513f, 0.425493f, 0.425473f, 0.425453f, 0.425433f, 0.425413f, 0.425393f, 0.425373f, 0.425353f, 0.425333f, 0.425314f, 0.425294f, 0.425274f, 0.425254f,
+0.425234f, 0.425214f, 0.425194f, 0.425174f, 0.425154f, 0.425134f, 0.425115f, 0.425095f, 0.425075f, 0.425055f, 0.425035f, 0.425015f, 0.424995f, 0.424975f, 0.424955f, 0.424935f, 0.424916f, 0.424896f, 0.424876f, 0.424856f,
+0.424836f, 0.424816f, 0.424796f, 0.424776f, 0.424756f, 0.424737f, 0.424717f, 0.424697f, 0.424677f, 0.424657f, 0.424637f, 0.424617f, 0.424597f, 0.424577f, 0.424558f, 0.424538f, 0.424518f, 0.424498f, 0.424478f, 0.424458f,
+0.424438f, 0.424418f, 0.424398f, 0.424379f, 0.424359f, 0.424339f, 0.424319f, 0.424299f, 0.424279f, 0.424259f, 0.424239f, 0.42422f, 0.4242f, 0.42418f, 0.42416f, 0.42414f, 0.42412f, 0.4241f, 0.42408f, 0.424061f,
+0.424041f, 0.424021f, 0.424001f, 0.423981f, 0.423961f, 0.423941f, 0.423921f, 0.423902f, 0.423882f, 0.423862f, 0.423842f, 0.423822f, 0.423802f, 0.423782f, 0.423763f, 0.423743f, 0.423723f, 0.423703f, 0.423683f, 0.423663f,
+0.423643f, 0.423623f, 0.423604f, 0.423584f, 0.423564f, 0.423544f, 0.423524f, 0.423504f, 0.423484f, 0.423465f, 0.423445f, 0.423425f, 0.423405f, 0.423385f, 0.423365f, 0.423345f, 0.423326f, 0.423306f, 0.423286f, 0.423266f,
+0.423246f, 0.423226f, 0.423206f, 0.423187f, 0.423167f, 0.423147f, 0.423127f, 0.423107f, 0.423087f, 0.423068f, 0.423048f, 0.423028f, 0.423008f, 0.422988f, 0.422968f, 0.422948f, 0.422929f, 0.422909f, 0.422889f, 0.422869f,
+0.422849f, 0.422829f, 0.42281f, 0.42279f, 0.42277f, 0.42275f, 0.42273f, 0.42271f, 0.42269f, 0.422671f, 0.422651f, 0.422631f, 0.422611f, 0.422591f, 0.422571f, 0.422552f, 0.422532f, 0.422512f, 0.422492f, 0.422472f,
+0.422452f, 0.422433f, 0.422413f, 0.422393f, 0.422373f, 0.422353f, 0.422333f, 0.422314f, 0.422294f, 0.422274f, 0.422254f, 0.422234f, 0.422214f, 0.422195f, 0.422175f, 0.422155f, 0.422135f, 0.422115f, 0.422095f, 0.422076f,
+0.422056f, 0.422036f, 0.422016f, 0.421996f, 0.421976f, 0.421957f, 0.421937f, 0.421917f, 0.421897f, 0.421877f, 0.421858f, 0.421838f, 0.421818f, 0.421798f, 0.421778f, 0.421758f, 0.421739f, 0.421719f, 0.421699f, 0.421679f,
+0.421659f, 0.42164f, 0.42162f, 0.4216f, 0.42158f, 0.42156f, 0.42154f, 0.421521f, 0.421501f, 0.421481f, 0.421461f, 0.421441f, 0.421422f, 0.421402f, 0.421382f, 0.421362f, 0.421342f, 0.421323f, 0.421303f, 0.421283f,
+0.421263f, 0.421243f, 0.421223f, 0.421204f, 0.421184f, 0.421164f, 0.421144f, 0.421124f, 0.421105f, 0.421085f, 0.421065f, 0.421045f, 0.421025f, 0.421006f, 0.420986f, 0.420966f, 0.420946f, 0.420926f, 0.420907f, 0.420887f,
+0.420867f, 0.420847f, 0.420827f, 0.420808f, 0.420788f, 0.420768f, 0.420748f, 0.420728f, 0.420709f, 0.420689f, 0.420669f, 0.420649f, 0.42063f, 0.42061f, 0.42059f, 0.42057f, 0.42055f, 0.420531f, 0.420511f, 0.420491f,
+0.420471f, 0.420451f, 0.420432f, 0.420412f, 0.420392f, 0.420372f, 0.420352f, 0.420333f, 0.420313f, 0.420293f, 0.420273f, 0.420254f, 0.420234f, 0.420214f, 0.420194f, 0.420174f, 0.420155f, 0.420135f, 0.420115f, 0.420095f,
+0.420076f, 0.420056f, 0.420036f, 0.420016f, 0.419996f, 0.419977f, 0.419957f, 0.419937f, 0.419917f, 0.419898f, 0.419878f, 0.419858f, 0.419838f, 0.419818f, 0.419799f, 0.419779f, 0.419759f, 0.419739f, 0.41972f, 0.4197f,
+0.41968f, 0.41966f, 0.41964f, 0.419621f, 0.419601f, 0.419581f, 0.419561f, 0.419542f, 0.419522f, 0.419502f, 0.419482f, 0.419463f, 0.419443f, 0.419423f, 0.419403f, 0.419384f, 0.419364f, 0.419344f, 0.419324f, 0.419304f,
+0.419285f, 0.419265f, 0.419245f, 0.419225f, 0.419206f, 0.419186f, 0.419166f, 0.419146f, 0.419127f, 0.419107f, 0.419087f, 0.419067f, 0.419048f, 0.419028f, 0.419008f, 0.418988f, 0.418969f, 0.418949f, 0.418929f, 0.418909f,
+0.41889f, 0.41887f, 0.41885f, 0.41883f, 0.418811f, 0.418791f, 0.418771f, 0.418751f, 0.418732f, 0.418712f, 0.418692f, 0.418672f, 0.418653f, 0.418633f, 0.418613f, 0.418593f, 0.418574f, 0.418554f, 0.418534f, 0.418514f,
+0.418495f, 0.418475f, 0.418455f, 0.418435f, 0.418416f, 0.418396f, 0.418376f, 0.418356f, 0.418337f, 0.418317f, 0.418297f, 0.418278f, 0.418258f, 0.418238f, 0.418218f, 0.418199f, 0.418179f, 0.418159f, 0.418139f, 0.41812f,
+0.4181f, 0.41808f, 0.41806f, 0.418041f, 0.418021f, 0.418001f, 0.417982f, 0.417962f, 0.417942f, 0.417922f, 0.417903f, 0.417883f, 0.417863f, 0.417843f, 0.417824f, 0.417804f, 0.417784f, 0.417765f, 0.417745f, 0.417725f,
+0.417705f, 0.417686f, 0.417666f, 0.417646f, 0.417626f, 0.417607f, 0.417587f, 0.417567f, 0.417548f, 0.417528f, 0.417508f, 0.417488f, 0.417469f, 0.417449f, 0.417429f, 0.41741f, 0.41739f, 0.41737f, 0.41735f, 0.417331f,
+0.417311f, 0.417291f, 0.417272f, 0.417252f, 0.417232f, 0.417212f, 0.417193f, 0.417173f, 0.417153f, 0.417134f, 0.417114f, 0.417094f, 0.417074f, 0.417055f, 0.417035f, 0.417015f, 0.416996f, 0.416976f, 0.416956f, 0.416936f,
+0.416917f, 0.416897f, 0.416877f, 0.416858f, 0.416838f, 0.416818f, 0.416799f, 0.416779f, 0.416759f, 0.416739f, 0.41672f, 0.4167f, 0.41668f, 0.416661f, 0.416641f, 0.416621f, 0.416602f, 0.416582f, 0.416562f, 0.416542f,
+0.416523f, 0.416503f, 0.416483f, 0.416464f, 0.416444f, 0.416424f, 0.416405f, 0.416385f, 0.416365f, 0.416346f, 0.416326f, 0.416306f, 0.416286f, 0.416267f, 0.416247f, 0.416227f, 0.416208f, 0.416188f, 0.416168f, 0.416149f,
+0.416129f, 0.416109f, 0.41609f, 0.41607f, 0.41605f, 0.416031f, 0.416011f, 0.415991f, 0.415971f, 0.415952f, 0.415932f, 0.415912f, 0.415893f, 0.415873f, 0.415853f, 0.415834f, 0.415814f, 0.415794f, 0.415775f, 0.415755f,
+0.415735f, 0.415716f, 0.415696f, 0.415676f, 0.415657f, 0.415637f, 0.415617f, 0.415598f, 0.415578f, 0.415558f, 0.415539f, 0.415519f, 0.415499f, 0.41548f, 0.41546f, 0.41544f, 0.415421f, 0.415401f, 0.415381f, 0.415362f,
+0.415342f, 0.415322f, 0.415303f, 0.415283f, 0.415263f, 0.415244f, 0.415224f, 0.415204f, 0.415185f, 0.415165f, 0.415145f, 0.415126f, 0.415106f, 0.415086f, 0.415067f, 0.415047f, 0.415027f, 0.415008f, 0.414988f, 0.414968f,
+0.414949f, 0.414929f, 0.414909f, 0.41489f, 0.41487f, 0.41485f, 0.414831f, 0.414811f, 0.414791f, 0.414772f, 0.414752f, 0.414732f, 0.414713f, 0.414693f, 0.414673f, 0.414654f, 0.414634f, 0.414614f, 0.414595f, 0.414575f,
+0.414556f, 0.414536f, 0.414516f, 0.414497f, 0.414477f, 0.414457f, 0.414438f, 0.414418f, 0.414398f, 0.414379f, 0.414359f, 0.414339f, 0.41432f, 0.4143f, 0.41428f, 0.414261f, 0.414241f, 0.414222f, 0.414202f, 0.414182f,
+0.414163f, 0.414143f, 0.414123f, 0.414104f, 0.414084f, 0.414064f, 0.414045f, 0.414025f, 0.414006f, 0.413986f, 0.413966f, 0.413947f, 0.413927f, 0.413907f, 0.413888f, 0.413868f, 0.413848f, 0.413829f, 0.413809f, 0.41379f,
+0.41377f, 0.41375f, 0.413731f, 0.413711f, 0.413691f, 0.413672f, 0.413652f, 0.413633f, 0.413613f, 0.413593f, 0.413574f, 0.413554f, 0.413534f, 0.413515f, 0.413495f, 0.413476f, 0.413456f, 0.413436f, 0.413417f, 0.413397f,
+0.413377f, 0.413358f, 0.413338f, 0.413319f, 0.413299f, 0.413279f, 0.41326f, 0.41324f, 0.41322f, 0.413201f, 0.413181f, 0.413162f, 0.413142f, 0.413122f, 0.413103f, 0.413083f, 0.413064f, 0.413044f, 0.413024f, 0.413005f,
+0.412985f, 0.412965f, 0.412946f, 0.412926f, 0.412907f, 0.412887f, 0.412867f, 0.412848f, 0.412828f, 0.412809f, 0.412789f, 0.412769f, 0.41275f, 0.41273f, 0.412711f, 0.412691f, 0.412671f, 0.412652f, 0.412632f, 0.412613f,
+0.412593f, 0.412573f, 0.412554f, 0.412534f, 0.412515f, 0.412495f, 0.412475f, 0.412456f, 0.412436f, 0.412417f, 0.412397f, 0.412377f, 0.412358f, 0.412338f, 0.412319f, 0.412299f, 0.412279f, 0.41226f, 0.41224f, 0.412221f,
+0.412201f, 0.412181f, 0.412162f, 0.412142f, 0.412123f, 0.412103f, 0.412083f, 0.412064f, 0.412044f, 0.412025f, 0.412005f, 0.411985f, 0.411966f, 0.411946f, 0.411927f, 0.411907f, 0.411888f, 0.411868f, 0.411848f, 0.411829f,
+0.411809f, 0.41179f, 0.41177f, 0.41175f, 0.411731f, 0.411711f, 0.411692f, 0.411672f, 0.411653f, 0.411633f, 0.411613f, 0.411594f, 0.411574f, 0.411555f, 0.411535f, 0.411516f, 0.411496f, 0.411476f, 0.411457f, 0.411437f,
+0.411418f, 0.411398f, 0.411378f, 0.411359f, 0.411339f, 0.41132f, 0.4113f, 0.411281f, 0.411261f, 0.411241f, 0.411222f, 0.411202f, 0.411183f, 0.411163f, 0.411144f, 0.411124f, 0.411105f, 0.411085f, 0.411065f, 0.411046f,
+0.411026f, 0.411007f, 0.410987f, 0.410968f, 0.410948f, 0.410928f, 0.410909f, 0.410889f, 0.41087f, 0.41085f, 0.410831f, 0.410811f, 0.410791f, 0.410772f, 0.410752f, 0.410733f, 0.410713f, 0.410694f, 0.410674f, 0.410655f,
+0.410635f, 0.410615f, 0.410596f, 0.410576f, 0.410557f, 0.410537f, 0.410518f, 0.410498f, 0.410479f, 0.410459f, 0.410439f, 0.41042f, 0.4104f, 0.410381f, 0.410361f, 0.410342f, 0.410322f, 0.410303f, 0.410283f, 0.410264f,
+0.410244f, 0.410224f, 0.410205f, 0.410185f, 0.410166f, 0.410146f, 0.410127f, 0.410107f, 0.410088f, 0.410068f, 0.410049f, 0.410029f, 0.410009f, 0.40999f, 0.40997f, 0.409951f, 0.409931f, 0.409912f, 0.409892f, 0.409873f,
+0.409853f, 0.409834f, 0.409814f, 0.409795f, 0.409775f, 0.409755f, 0.409736f, 0.409716f, 0.409697f, 0.409677f, 0.409658f, 0.409638f, 0.409619f, 0.409599f, 0.40958f, 0.40956f, 0.409541f, 0.409521f, 0.409502f, 0.409482f,
+0.409463f, 0.409443f, 0.409423f, 0.409404f, 0.409384f, 0.409365f, 0.409345f, 0.409326f, 0.409306f, 0.409287f, 0.409267f, 0.409248f, 0.409228f, 0.409209f, 0.409189f, 0.40917f, 0.40915f, 0.409131f, 0.409111f, 0.409092f,
+0.409072f, 0.409053f, 0.409033f, 0.409013f, 0.408994f, 0.408974f, 0.408955f, 0.408935f, 0.408916f, 0.408896f, 0.408877f, 0.408857f, 0.408838f, 0.408818f, 0.408799f, 0.408779f, 0.40876f, 0.40874f, 0.408721f, 0.408701f,
+0.408682f, 0.408662f, 0.408643f, 0.408623f, 0.408604f, 0.408584f, 0.408565f, 0.408545f, 0.408526f, 0.408506f, 0.408487f, 0.408467f, 0.408448f, 0.408428f, 0.408409f, 0.408389f, 0.40837f, 0.40835f, 0.408331f, 0.408311f,
+0.408292f, 0.408272f, 0.408253f, 0.408233f, 0.408214f, 0.408194f, 0.408175f, 0.408155f, 0.408136f, 0.408116f, 0.408097f, 0.408077f, 0.408058f, 0.408038f, 0.408019f, 0.407999f, 0.40798f, 0.40796f, 0.407941f, 0.407921f,
+0.407902f, 0.407882f, 0.407863f, 0.407843f, 0.407824f, 0.407804f, 0.407785f, 0.407765f, 0.407746f, 0.407726f, 0.407707f, 0.407687f, 0.407668f, 0.407648f, 0.407629f, 0.407609f, 0.40759f, 0.40757f, 0.407551f, 0.407532f,
+0.407512f, 0.407493f, 0.407473f, 0.407454f, 0.407434f, 0.407415f, 0.407395f, 0.407376f, 0.407356f, 0.407337f, 0.407317f, 0.407298f, 0.407278f, 0.407259f, 0.407239f, 0.40722f, 0.4072f, 0.407181f, 0.407161f, 0.407142f,
+0.407123f, 0.407103f, 0.407084f, 0.407064f, 0.407045f, 0.407025f, 0.407006f, 0.406986f, 0.406967f, 0.406947f, 0.406928f, 0.406908f, 0.406889f, 0.406869f, 0.40685f, 0.40683f, 0.406811f, 0.406792f, 0.406772f, 0.406753f,
+0.406733f, 0.406714f, 0.406694f, 0.406675f, 0.406655f, 0.406636f, 0.406616f, 0.406597f, 0.406577f, 0.406558f, 0.406539f, 0.406519f, 0.4065f, 0.40648f, 0.406461f, 0.406441f, 0.406422f, 0.406402f, 0.406383f, 0.406363f,
+0.406344f, 0.406325f, 0.406305f, 0.406286f, 0.406266f, 0.406247f, 0.406227f, 0.406208f, 0.406188f, 0.406169f, 0.406149f, 0.40613f, 0.406111f, 0.406091f, 0.406072f, 0.406052f, 0.406033f, 0.406013f, 0.405994f, 0.405974f,
+0.405955f, 0.405936f, 0.405916f, 0.405897f, 0.405877f, 0.405858f, 0.405838f, 0.405819f, 0.405799f, 0.40578f, 0.405761f, 0.405741f, 0.405722f, 0.405702f, 0.405683f, 0.405663f, 0.405644f, 0.405625f, 0.405605f, 0.405586f,
+0.405566f, 0.405547f, 0.405527f, 0.405508f, 0.405488f, 0.405469f, 0.40545f, 0.40543f, 0.405411f, 0.405391f, 0.405372f, 0.405352f, 0.405333f, 0.405314f, 0.405294f, 0.405275f, 0.405255f, 0.405236f, 0.405216f, 0.405197f,
+0.405178f, 0.405158f, 0.405139f, 0.405119f, 0.4051f, 0.405081f, 0.405061f, 0.405042f, 0.405022f, 0.405003f, 0.404983f, 0.404964f, 0.404945f, 0.404925f, 0.404906f, 0.404886f, 0.404867f, 0.404847f, 0.404828f, 0.404809f,
+0.404789f, 0.40477f, 0.40475f, 0.404731f, 0.404712f, 0.404692f, 0.404673f, 0.404653f, 0.404634f, 0.404614f, 0.404595f, 0.404576f, 0.404556f, 0.404537f, 0.404517f, 0.404498f, 0.404479f, 0.404459f, 0.40444f, 0.40442f,
+0.404401f, 0.404382f, 0.404362f, 0.404343f, 0.404323f, 0.404304f, 0.404285f, 0.404265f, 0.404246f, 0.404226f, 0.404207f, 0.404188f, 0.404168f, 0.404149f, 0.404129f, 0.40411f, 0.404091f, 0.404071f, 0.404052f, 0.404032f,
+0.404013f, 0.403994f, 0.403974f, 0.403955f, 0.403935f, 0.403916f, 0.403897f, 0.403877f, 0.403858f, 0.403838f, 0.403819f, 0.4038f, 0.40378f, 0.403761f, 0.403741f, 0.403722f, 0.403703f, 0.403683f, 0.403664f, 0.403644f,
+0.403625f, 0.403606f, 0.403586f, 0.403567f, 0.403548f, 0.403528f, 0.403509f, 0.403489f, 0.40347f, 0.403451f, 0.403431f, 0.403412f, 0.403392f, 0.403373f, 0.403354f, 0.403334f, 0.403315f, 0.403296f, 0.403276f, 0.403257f,
+0.403237f, 0.403218f, 0.403199f, 0.403179f, 0.40316f, 0.403141f, 0.403121f, 0.403102f, 0.403082f, 0.403063f, 0.403044f, 0.403024f, 0.403005f, 0.402986f, 0.402966f, 0.402947f, 0.402927f, 0.402908f, 0.402889f, 0.402869f,
+0.40285f, 0.402831f, 0.402811f, 0.402792f, 0.402772f, 0.402753f, 0.402734f, 0.402714f, 0.402695f, 0.402676f, 0.402656f, 0.402637f, 0.402618f, 0.402598f, 0.402579f, 0.402559f, 0.40254f, 0.402521f, 0.402501f, 0.402482f,
+0.402463f, 0.402443f, 0.402424f, 0.402405f, 0.402385f, 0.402366f, 0.402346f, 0.402327f, 0.402308f, 0.402288f, 0.402269f, 0.40225f, 0.40223f, 0.402211f, 0.402192f, 0.402172f, 0.402153f, 0.402134f, 0.402114f, 0.402095f,
+0.402076f, 0.402056f, 0.402037f, 0.402017f, 0.401998f, 0.401979f, 0.401959f, 0.40194f, 0.401921f, 0.401901f, 0.401882f, 0.401863f, 0.401843f, 0.401824f, 0.401805f, 0.401785f, 0.401766f, 0.401747f, 0.401727f, 0.401708f,
+0.401689f, 0.401669f, 0.40165f, 0.401631f, 0.401611f, 0.401592f, 0.401573f, 0.401553f, 0.401534f, 0.401515f, 0.401495f, 0.401476f, 0.401457f, 0.401437f, 0.401418f, 0.401399f, 0.401379f, 0.40136f, 0.401341f, 0.401321f,
+0.401302f, 0.401283f, 0.401263f, 0.401244f, 0.401225f, 0.401205f, 0.401186f, 0.401167f, 0.401147f, 0.401128f, 0.401109f, 0.401089f, 0.40107f, 0.401051f, 0.401031f, 0.401012f, 0.400993f, 0.400973f, 0.400954f, 0.400935f,
+0.400915f, 0.400896f, 0.400877f, 0.400857f, 0.400838f, 0.400819f, 0.400799f, 0.40078f, 0.400761f, 0.400741f, 0.400722f, 0.400703f, 0.400683f, 0.400664f, 0.400645f, 0.400625f, 0.400606f, 0.400587f, 0.400568f, 0.400548f,
+0.400529f, 0.40051f, 0.40049f, 0.400471f, 0.400452f, 0.400432f, 0.400413f, 0.400394f, 0.400374f, 0.400355f, 0.400336f, 0.400316f, 0.400297f, 0.400278f, 0.400259f, 0.400239f, 0.40022f, 0.400201f, 0.400181f, 0.400162f,
+0.400143f, 0.400123f, 0.400104f, 0.400085f, 0.400066f, 0.400046f, 0.400027f, 0.400008f, 0.399988f, 0.399969f, 0.39995f, 0.39993f, 0.399911f, 0.399892f, 0.399873f, 0.399853f, 0.399834f, 0.399815f, 0.399795f, 0.399776f,
+0.399757f, 0.399737f, 0.399718f, 0.399699f, 0.39968f, 0.39966f, 0.399641f, 0.399622f, 0.399602f, 0.399583f, 0.399564f, 0.399545f, 0.399525f, 0.399506f, 0.399487f, 0.399467f, 0.399448f, 0.399429f, 0.399409f, 0.39939f,
+0.399371f, 0.399352f, 0.399332f, 0.399313f, 0.399294f, 0.399275f, 0.399255f, 0.399236f, 0.399217f, 0.399197f, 0.399178f, 0.399159f, 0.39914f, 0.39912f, 0.399101f, 0.399082f, 0.399062f, 0.399043f, 0.399024f, 0.399005f,
+0.398985f, 0.398966f, 0.398947f, 0.398927f, 0.398908f, 0.398889f, 0.39887f, 0.39885f, 0.398831f, 0.398812f, 0.398793f, 0.398773f, 0.398754f, 0.398735f, 0.398715f, 0.398696f, 0.398677f, 0.398658f, 0.398638f, 0.398619f,
+0.3986f, 0.398581f, 0.398561f, 0.398542f, 0.398523f, 0.398504f, 0.398484f, 0.398465f, 0.398446f, 0.398426f, 0.398407f, 0.398388f, 0.398369f, 0.398349f, 0.39833f, 0.398311f, 0.398292f, 0.398272f, 0.398253f, 0.398234f,
+0.398215f, 0.398195f, 0.398176f, 0.398157f, 0.398138f, 0.398118f, 0.398099f, 0.39808f, 0.398061f, 0.398041f, 0.398022f, 0.398003f, 0.397984f, 0.397964f, 0.397945f, 0.397926f, 0.397907f, 0.397887f, 0.397868f, 0.397849f,
+0.39783f, 0.39781f, 0.397791f, 0.397772f, 0.397753f, 0.397733f, 0.397714f, 0.397695f, 0.397676f, 0.397656f, 0.397637f, 0.397618f, 0.397599f, 0.397579f, 0.39756f, 0.397541f, 0.397522f, 0.397502f, 0.397483f, 0.397464f,
+0.397445f, 0.397425f, 0.397406f, 0.397387f, 0.397368f, 0.397348f, 0.397329f, 0.39731f, 0.397291f, 0.397272f, 0.397252f, 0.397233f, 0.397214f, 0.397195f, 0.397175f, 0.397156f, 0.397137f, 0.397118f, 0.397098f, 0.397079f,
+0.39706f, 0.397041f, 0.397022f, 0.397002f, 0.396983f, 0.396964f, 0.396945f, 0.396925f, 0.396906f, 0.396887f, 0.396868f, 0.396848f, 0.396829f, 0.39681f, 0.396791f, 0.396772f, 0.396752f, 0.396733f, 0.396714f, 0.396695f,
+0.396675f, 0.396656f, 0.396637f, 0.396618f, 0.396599f, 0.396579f, 0.39656f, 0.396541f, 0.396522f, 0.396503f, 0.396483f, 0.396464f, 0.396445f, 0.396426f, 0.396406f, 0.396387f, 0.396368f, 0.396349f, 0.39633f, 0.39631f,
+0.396291f, 0.396272f, 0.396253f, 0.396234f, 0.396214f, 0.396195f, 0.396176f, 0.396157f, 0.396137f, 0.396118f, 0.396099f, 0.39608f, 0.396061f, 0.396041f, 0.396022f, 0.396003f, 0.395984f, 0.395965f, 0.395945f, 0.395926f,
+0.395907f, 0.395888f, 0.395869f, 0.395849f, 0.39583f, 0.395811f, 0.395792f, 0.395773f, 0.395753f, 0.395734f, 0.395715f, 0.395696f, 0.395677f, 0.395657f, 0.395638f, 0.395619f, 0.3956f, 0.395581f, 0.395561f, 0.395542f,
+0.395523f, 0.395504f, 0.395485f, 0.395465f, 0.395446f, 0.395427f, 0.395408f, 0.395389f, 0.39537f, 0.39535f, 0.395331f, 0.395312f, 0.395293f, 0.395274f, 0.395254f, 0.395235f, 0.395216f, 0.395197f, 0.395178f, 0.395158f,
+0.395139f, 0.39512f, 0.395101f, 0.395082f, 0.395063f, 0.395043f, 0.395024f, 0.395005f, 0.394986f, 0.394967f, 0.394947f, 0.394928f, 0.394909f, 0.39489f, 0.394871f, 0.394852f, 0.394832f, 0.394813f, 0.394794f, 0.394775f,
+0.394756f, 0.394737f, 0.394717f, 0.394698f, 0.394679f, 0.39466f, 0.394641f, 0.394622f, 0.394602f, 0.394583f, 0.394564f, 0.394545f, 0.394526f, 0.394507f, 0.394487f, 0.394468f, 0.394449f, 0.39443f, 0.394411f, 0.394392f,
+0.394372f, 0.394353f, 0.394334f, 0.394315f, 0.394296f, 0.394277f, 0.394257f, 0.394238f, 0.394219f, 0.3942f, 0.394181f, 0.394162f, 0.394142f, 0.394123f, 0.394104f, 0.394085f, 0.394066f, 0.394047f, 0.394027f, 0.394008f,
+0.393989f, 0.39397f, 0.393951f, 0.393932f, 0.393913f, 0.393893f, 0.393874f, 0.393855f, 0.393836f, 0.393817f, 0.393798f, 0.393778f, 0.393759f, 0.39374f, 0.393721f, 0.393702f, 0.393683f, 0.393664f, 0.393644f, 0.393625f,
+0.393606f, 0.393587f, 0.393568f, 0.393549f, 0.39353f, 0.39351f, 0.393491f, 0.393472f, 0.393453f, 0.393434f, 0.393415f, 0.393396f, 0.393376f, 0.393357f, 0.393338f, 0.393319f, 0.3933f, 0.393281f, 0.393262f, 0.393242f,
+0.393223f, 0.393204f, 0.393185f, 0.393166f, 0.393147f, 0.393128f, 0.393108f, 0.393089f, 0.39307f, 0.393051f, 0.393032f, 0.393013f, 0.392994f, 0.392975f, 0.392955f, 0.392936f, 0.392917f, 0.392898f, 0.392879f, 0.39286f,
+0.392841f, 0.392822f, 0.392802f, 0.392783f, 0.392764f, 0.392745f, 0.392726f, 0.392707f, 0.392688f, 0.392669f, 0.392649f, 0.39263f, 0.392611f, 0.392592f, 0.392573f, 0.392554f, 0.392535f, 0.392516f, 0.392496f, 0.392477f,
+0.392458f, 0.392439f, 0.39242f, 0.392401f, 0.392382f, 0.392363f, 0.392343f, 0.392324f, 0.392305f, 0.392286f, 0.392267f, 0.392248f, 0.392229f, 0.39221f, 0.392191f, 0.392171f, 0.392152f, 0.392133f, 0.392114f, 0.392095f,
+0.392076f, 0.392057f, 0.392038f, 0.392019f, 0.391999f, 0.39198f, 0.391961f, 0.391942f, 0.391923f, 0.391904f, 0.391885f, 0.391866f, 0.391847f, 0.391828f, 0.391808f, 0.391789f, 0.39177f, 0.391751f, 0.391732f, 0.391713f,
+0.391694f, 0.391675f, 0.391656f, 0.391637f, 0.391617f, 0.391598f, 0.391579f, 0.39156f, 0.391541f, 0.391522f, 0.391503f, 0.391484f, 0.391465f, 0.391446f, 0.391426f, 0.391407f, 0.391388f, 0.391369f, 0.39135f, 0.391331f,
+0.391312f, 0.391293f, 0.391274f, 0.391255f, 0.391236f, 0.391217f, 0.391197f, 0.391178f, 0.391159f, 0.39114f, 0.391121f, 0.391102f, 0.391083f, 0.391064f, 0.391045f, 0.391026f, 0.391007f, 0.390987f, 0.390968f, 0.390949f,
+0.39093f, 0.390911f, 0.390892f, 0.390873f, 0.390854f, 0.390835f, 0.390816f, 0.390797f, 0.390778f, 0.390759f, 0.390739f, 0.39072f, 0.390701f, 0.390682f, 0.390663f, 0.390644f, 0.390625f, 0.390606f, 0.390587f, 0.390568f,
+0.390549f, 0.39053f, 0.390511f, 0.390491f, 0.390472f, 0.390453f, 0.390434f, 0.390415f, 0.390396f, 0.390377f, 0.390358f, 0.390339f, 0.39032f, 0.390301f, 0.390282f, 0.390263f, 0.390244f, 0.390225f, 0.390205f, 0.390186f,
+0.390167f, 0.390148f, 0.390129f, 0.39011f, 0.390091f, 0.390072f, 0.390053f, 0.390034f, 0.390015f, 0.389996f, 0.389977f, 0.389958f, 0.389939f, 0.38992f, 0.389901f, 0.389881f, 0.389862f, 0.389843f, 0.389824f, 0.389805f,
+0.389786f, 0.389767f, 0.389748f, 0.389729f, 0.38971f, 0.389691f, 0.389672f, 0.389653f, 0.389634f, 0.389615f, 0.389596f, 0.389577f, 0.389558f, 0.389539f, 0.38952f, 0.3895f, 0.389481f, 0.389462f, 0.389443f, 0.389424f,
+0.389405f, 0.389386f, 0.389367f, 0.389348f, 0.389329f, 0.38931f, 0.389291f, 0.389272f, 0.389253f, 0.389234f, 0.389215f, 0.389196f, 0.389177f, 0.389158f, 0.389139f, 0.38912f, 0.389101f, 0.389082f, 0.389063f, 0.389044f,
+0.389024f, 0.389005f, 0.388986f, 0.388967f, 0.388948f, 0.388929f, 0.38891f, 0.388891f, 0.388872f, 0.388853f, 0.388834f, 0.388815f, 0.388796f, 0.388777f, 0.388758f, 0.388739f, 0.38872f, 0.388701f, 0.388682f, 0.388663f,
+0.388644f, 0.388625f, 0.388606f, 0.388587f, 0.388568f, 0.388549f, 0.38853f, 0.388511f, 0.388492f, 0.388473f, 0.388454f, 0.388435f, 0.388416f, 0.388397f, 0.388378f, 0.388359f, 0.38834f, 0.388321f, 0.388302f, 0.388282f,
+0.388263f, 0.388244f, 0.388225f, 0.388206f, 0.388187f, 0.388168f, 0.388149f, 0.38813f, 0.388111f, 0.388092f, 0.388073f, 0.388054f, 0.388035f, 0.388016f, 0.387997f, 0.387978f, 0.387959f, 0.38794f, 0.387921f, 0.387902f,
+0.387883f, 0.387864f, 0.387845f, 0.387826f, 0.387807f, 0.387788f, 0.387769f, 0.38775f, 0.387731f, 0.387712f, 0.387693f, 0.387674f, 0.387655f, 0.387636f, 0.387617f, 0.387598f, 0.387579f, 0.38756f, 0.387541f, 0.387522f,
+0.387503f, 0.387484f, 0.387465f, 0.387446f, 0.387427f, 0.387408f, 0.387389f, 0.38737f, 0.387351f, 0.387332f, 0.387313f, 0.387294f, 0.387275f, 0.387256f, 0.387237f, 0.387218f, 0.387199f, 0.38718f, 0.387161f, 0.387142f,
+0.387123f, 0.387104f, 0.387085f, 0.387066f, 0.387047f, 0.387028f, 0.387009f, 0.38699f, 0.386971f, 0.386952f, 0.386934f, 0.386915f, 0.386896f, 0.386877f, 0.386858f, 0.386839f, 0.38682f, 0.386801f, 0.386782f, 0.386763f,
+0.386744f, 0.386725f, 0.386706f, 0.386687f, 0.386668f, 0.386649f, 0.38663f, 0.386611f, 0.386592f, 0.386573f, 0.386554f, 0.386535f, 0.386516f, 0.386497f, 0.386478f, 0.386459f, 0.38644f, 0.386421f, 0.386402f, 0.386383f,
+0.386364f, 0.386345f, 0.386326f, 0.386307f, 0.386288f, 0.386269f, 0.38625f, 0.386231f, 0.386212f, 0.386194f, 0.386175f, 0.386156f, 0.386137f, 0.386118f, 0.386099f, 0.38608f, 0.386061f, 0.386042f, 0.386023f, 0.386004f,
+0.385985f, 0.385966f, 0.385947f, 0.385928f, 0.385909f, 0.38589f, 0.385871f, 0.385852f, 0.385833f, 0.385814f, 0.385795f, 0.385776f, 0.385757f, 0.385738f, 0.38572f, 0.385701f, 0.385682f, 0.385663f, 0.385644f, 0.385625f,
+0.385606f, 0.385587f, 0.385568f, 0.385549f, 0.38553f, 0.385511f, 0.385492f, 0.385473f, 0.385454f, 0.385435f, 0.385416f, 0.385397f, 0.385378f, 0.38536f, 0.385341f, 0.385322f, 0.385303f, 0.385284f, 0.385265f, 0.385246f,
+0.385227f, 0.385208f, 0.385189f, 0.38517f, 0.385151f, 0.385132f, 0.385113f, 0.385094f, 0.385075f, 0.385056f, 0.385038f, 0.385019f, 0.385f, 0.384981f, 0.384962f, 0.384943f, 0.384924f, 0.384905f, 0.384886f, 0.384867f,
+0.384848f, 0.384829f, 0.38481f, 0.384791f, 0.384772f, 0.384754f, 0.384735f, 0.384716f, 0.384697f, 0.384678f, 0.384659f, 0.38464f, 0.384621f, 0.384602f, 0.384583f, 0.384564f, 0.384545f, 0.384526f, 0.384507f, 0.384489f,
+0.38447f, 0.384451f, 0.384432f, 0.384413f, 0.384394f, 0.384375f, 0.384356f, 0.384337f, 0.384318f, 0.384299f, 0.38428f, 0.384262f, 0.384243f, 0.384224f, 0.384205f, 0.384186f, 0.384167f, 0.384148f, 0.384129f, 0.38411f,
+0.384091f, 0.384072f, 0.384053f, 0.384035f, 0.384016f, 0.383997f, 0.383978f, 0.383959f, 0.38394f, 0.383921f, 0.383902f, 0.383883f, 0.383864f, 0.383845f, 0.383827f, 0.383808f, 0.383789f, 0.38377f, 0.383751f, 0.383732f,
+0.383713f, 0.383694f, 0.383675f, 0.383656f, 0.383637f, 0.383619f, 0.3836f, 0.383581f, 0.383562f, 0.383543f, 0.383524f, 0.383505f, 0.383486f, 0.383467f, 0.383448f, 0.38343f, 0.383411f, 0.383392f, 0.383373f, 0.383354f,
+0.383335f, 0.383316f, 0.383297f, 0.383278f, 0.38326f, 0.383241f, 0.383222f, 0.383203f, 0.383184f, 0.383165f, 0.383146f, 0.383127f, 0.383108f, 0.38309f, 0.383071f, 0.383052f, 0.383033f, 0.383014f, 0.382995f, 0.382976f,
+0.382957f, 0.382938f, 0.38292f, 0.382901f, 0.382882f, 0.382863f, 0.382844f, 0.382825f, 0.382806f, 0.382787f, 0.382768f, 0.38275f, 0.382731f, 0.382712f, 0.382693f, 0.382674f, 0.382655f, 0.382636f, 0.382617f, 0.382599f,
+0.38258f, 0.382561f, 0.382542f, 0.382523f, 0.382504f, 0.382485f, 0.382466f, 0.382448f, 0.382429f, 0.38241f, 0.382391f, 0.382372f, 0.382353f, 0.382334f, 0.382315f, 0.382297f, 0.382278f, 0.382259f, 0.38224f, 0.382221f,
+0.382202f, 0.382183f, 0.382165f, 0.382146f, 0.382127f, 0.382108f, 0.382089f, 0.38207f, 0.382051f, 0.382032f, 0.382014f, 0.381995f, 0.381976f, 0.381957f, 0.381938f, 0.381919f, 0.3819f, 0.381882f, 0.381863f, 0.381844f,
+0.381825f, 0.381806f, 0.381787f, 0.381768f, 0.38175f, 0.381731f, 0.381712f, 0.381693f, 0.381674f, 0.381655f, 0.381636f, 0.381618f, 0.381599f, 0.38158f, 0.381561f, 0.381542f, 0.381523f, 0.381505f, 0.381486f, 0.381467f,
+0.381448f, 0.381429f, 0.38141f, 0.381391f, 0.381373f, 0.381354f, 0.381335f, 0.381316f, 0.381297f, 0.381278f, 0.38126f, 0.381241f, 0.381222f, 0.381203f, 0.381184f, 0.381165f, 0.381146f, 0.381128f, 0.381109f, 0.38109f,
+0.381071f, 0.381052f, 0.381033f, 0.381015f, 0.380996f, 0.380977f, 0.380958f, 0.380939f, 0.38092f, 0.380902f, 0.380883f, 0.380864f, 0.380845f, 0.380826f, 0.380807f, 0.380789f, 0.38077f, 0.380751f, 0.380732f, 0.380713f,
+0.380694f, 0.380676f, 0.380657f, 0.380638f, 0.380619f, 0.3806f, 0.380581f, 0.380563f, 0.380544f, 0.380525f, 0.380506f, 0.380487f, 0.380469f, 0.38045f, 0.380431f, 0.380412f, 0.380393f, 0.380374f, 0.380356f, 0.380337f,
+0.380318f, 0.380299f, 0.38028f, 0.380261f, 0.380243f, 0.380224f, 0.380205f, 0.380186f, 0.380167f, 0.380149f, 0.38013f, 0.380111f, 0.380092f, 0.380073f, 0.380054f, 0.380036f, 0.380017f, 0.379998f, 0.379979f, 0.37996f,
+0.379942f, 0.379923f, 0.379904f, 0.379885f, 0.379866f, 0.379848f, 0.379829f, 0.37981f, 0.379791f, 0.379772f, 0.379754f, 0.379735f, 0.379716f, 0.379697f, 0.379678f, 0.37966f, 0.379641f, 0.379622f, 0.379603f, 0.379584f,
+0.379565f, 0.379547f, 0.379528f, 0.379509f, 0.37949f, 0.379471f, 0.379453f, 0.379434f, 0.379415f, 0.379396f, 0.379378f, 0.379359f, 0.37934f, 0.379321f, 0.379302f, 0.379284f, 0.379265f, 0.379246f, 0.379227f, 0.379208f,
+0.37919f, 0.379171f, 0.379152f, 0.379133f, 0.379114f, 0.379096f, 0.379077f, 0.379058f, 0.379039f, 0.37902f, 0.379002f, 0.378983f, 0.378964f, 0.378945f, 0.378927f, 0.378908f, 0.378889f, 0.37887f, 0.378851f, 0.378833f,
+0.378814f, 0.378795f, 0.378776f, 0.378757f, 0.378739f, 0.37872f, 0.378701f, 0.378682f, 0.378664f, 0.378645f, 0.378626f, 0.378607f, 0.378588f, 0.37857f, 0.378551f, 0.378532f, 0.378513f, 0.378495f, 0.378476f, 0.378457f,
+0.378438f, 0.378419f, 0.378401f, 0.378382f, 0.378363f, 0.378344f, 0.378326f, 0.378307f, 0.378288f, 0.378269f, 0.378251f, 0.378232f, 0.378213f, 0.378194f, 0.378175f, 0.378157f, 0.378138f, 0.378119f, 0.3781f, 0.378082f,
+0.378063f, 0.378044f, 0.378025f, 0.378007f, 0.377988f, 0.377969f, 0.37795f, 0.377932f, 0.377913f, 0.377894f, 0.377875f, 0.377856f, 0.377838f, 0.377819f, 0.3778f, 0.377781f, 0.377763f, 0.377744f, 0.377725f, 0.377706f,
+0.377688f, 0.377669f, 0.37765f, 0.377631f, 0.377613f, 0.377594f, 0.377575f, 0.377556f, 0.377538f, 0.377519f, 0.3775f, 0.377481f, 0.377463f, 0.377444f, 0.377425f, 0.377406f, 0.377388f, 0.377369f, 0.37735f, 0.377331f,
+0.377313f, 0.377294f, 0.377275f, 0.377256f, 0.377238f, 0.377219f, 0.3772f, 0.377181f, 0.377163f, 0.377144f, 0.377125f, 0.377106f, 0.377088f, 0.377069f, 0.37705f, 0.377032f, 0.377013f, 0.376994f, 0.376975f, 0.376957f,
+0.376938f, 0.376919f, 0.3769f, 0.376882f, 0.376863f, 0.376844f, 0.376825f, 0.376807f, 0.376788f, 0.376769f, 0.37675f, 0.376732f, 0.376713f, 0.376694f, 0.376676f, 0.376657f, 0.376638f, 0.376619f, 0.376601f, 0.376582f,
+0.376563f, 0.376544f, 0.376526f, 0.376507f, 0.376488f, 0.37647f, 0.376451f, 0.376432f, 0.376413f, 0.376395f, 0.376376f, 0.376357f, 0.376339f, 0.37632f, 0.376301f, 0.376282f, 0.376264f, 0.376245f, 0.376226f, 0.376207f,
+0.376189f, 0.37617f, 0.376151f, 0.376133f, 0.376114f, 0.376095f, 0.376076f, 0.376058f, 0.376039f, 0.37602f, 0.376002f, 0.375983f, 0.375964f, 0.375945f, 0.375927f, 0.375908f, 0.375889f, 0.375871f, 0.375852f, 0.375833f,
+0.375814f, 0.375796f, 0.375777f, 0.375758f, 0.37574f, 0.375721f, 0.375702f, 0.375684f, 0.375665f, 0.375646f, 0.375627f, 0.375609f, 0.37559f, 0.375571f, 0.375553f, 0.375534f, 0.375515f, 0.375497f, 0.375478f, 0.375459f,
+0.37544f, 0.375422f, 0.375403f, 0.375384f, 0.375366f, 0.375347f, 0.375328f, 0.37531f, 0.375291f, 0.375272f, 0.375253f, 0.375235f, 0.375216f, 0.375197f, 0.375179f, 0.37516f, 0.375141f, 0.375123f, 0.375104f, 0.375085f,
+0.375067f, 0.375048f, 0.375029f, 0.37501f, 0.374992f, 0.374973f, 0.374954f, 0.374936f, 0.374917f, 0.374898f, 0.37488f, 0.374861f, 0.374842f, 0.374824f, 0.374805f, 0.374786f, 0.374768f, 0.374749f, 0.37473f, 0.374712f,
+0.374693f, 0.374674f, 0.374655f, 0.374637f, 0.374618f, 0.374599f, 0.374581f, 0.374562f, 0.374543f, 0.374525f, 0.374506f, 0.374487f, 0.374469f, 0.37445f, 0.374431f, 0.374413f, 0.374394f, 0.374375f, 0.374357f, 0.374338f,
+0.374319f, 0.374301f, 0.374282f, 0.374263f, 0.374245f, 0.374226f, 0.374207f, 0.374189f, 0.37417f, 0.374151f, 0.374133f, 0.374114f, 0.374095f, 0.374077f, 0.374058f, 0.374039f, 0.374021f, 0.374002f, 0.373983f, 0.373965f,
+0.373946f, 0.373927f, 0.373909f, 0.37389f, 0.373871f, 0.373853f, 0.373834f, 0.373815f, 0.373797f, 0.373778f, 0.373759f, 0.373741f, 0.373722f, 0.373703f, 0.373685f, 0.373666f, 0.373647f, 0.373629f, 0.37361f, 0.373591f,
+0.373573f, 0.373554f, 0.373536f, 0.373517f, 0.373498f, 0.37348f, 0.373461f, 0.373442f, 0.373424f, 0.373405f, 0.373386f, 0.373368f, 0.373349f, 0.37333f, 0.373312f, 0.373293f, 0.373274f, 0.373256f, 0.373237f, 0.373219f,
+0.3732f, 0.373181f, 0.373163f, 0.373144f, 0.373125f, 0.373107f, 0.373088f, 0.373069f, 0.373051f, 0.373032f, 0.373013f, 0.372995f, 0.372976f, 0.372958f, 0.372939f, 0.37292f, 0.372902f, 0.372883f, 0.372864f, 0.372846f,
+0.372827f, 0.372808f, 0.37279f, 0.372771f, 0.372753f, 0.372734f, 0.372715f, 0.372697f, 0.372678f, 0.372659f, 0.372641f, 0.372622f, 0.372604f, 0.372585f, 0.372566f, 0.372548f, 0.372529f, 0.37251f, 0.372492f, 0.372473f,
+0.372455f, 0.372436f, 0.372417f, 0.372399f, 0.37238f, 0.372361f, 0.372343f, 0.372324f, 0.372306f, 0.372287f, 0.372268f, 0.37225f, 0.372231f, 0.372212f, 0.372194f, 0.372175f, 0.372157f, 0.372138f, 0.372119f, 0.372101f,
+0.372082f, 0.372064f, 0.372045f, 0.372026f, 0.372008f, 0.371989f, 0.37197f, 0.371952f, 0.371933f, 0.371915f, 0.371896f, 0.371877f, 0.371859f, 0.37184f, 0.371822f, 0.371803f, 0.371784f, 0.371766f, 0.371747f, 0.371729f,
+0.37171f, 0.371691f, 0.371673f, 0.371654f, 0.371635f, 0.371617f, 0.371598f, 0.37158f, 0.371561f, 0.371542f, 0.371524f, 0.371505f, 0.371487f, 0.371468f, 0.371449f, 0.371431f, 0.371412f, 0.371394f, 0.371375f, 0.371356f,
+0.371338f, 0.371319f, 0.371301f, 0.371282f, 0.371264f, 0.371245f, 0.371226f, 0.371208f, 0.371189f, 0.371171f, 0.371152f, 0.371133f, 0.371115f, 0.371096f, 0.371078f, 0.371059f, 0.37104f, 0.371022f, 0.371003f, 0.370985f,
+0.370966f, 0.370947f, 0.370929f, 0.37091f, 0.370892f, 0.370873f, 0.370855f, 0.370836f, 0.370817f, 0.370799f, 0.37078f, 0.370762f, 0.370743f, 0.370724f, 0.370706f, 0.370687f, 0.370669f, 0.37065f, 0.370632f, 0.370613f,
+0.370594f, 0.370576f, 0.370557f, 0.370539f, 0.37052f, 0.370502f, 0.370483f, 0.370464f, 0.370446f, 0.370427f, 0.370409f, 0.37039f, 0.370371f, 0.370353f, 0.370334f, 0.370316f, 0.370297f, 0.370279f, 0.37026f, 0.370241f,
+0.370223f, 0.370204f, 0.370186f, 0.370167f, 0.370149f, 0.37013f, 0.370112f, 0.370093f, 0.370074f, 0.370056f, 0.370037f, 0.370019f, 0.37f, 0.369982f, 0.369963f, 0.369944f, 0.369926f, 0.369907f, 0.369889f, 0.36987f,
+0.369852f, 0.369833f, 0.369815f, 0.369796f, 0.369777f, 0.369759f, 0.36974f, 0.369722f, 0.369703f, 0.369685f, 0.369666f, 0.369648f, 0.369629f, 0.36961f, 0.369592f, 0.369573f, 0.369555f, 0.369536f, 0.369518f, 0.369499f,
+0.369481f, 0.369462f, 0.369443f, 0.369425f, 0.369406f, 0.369388f, 0.369369f, 0.369351f, 0.369332f, 0.369314f, 0.369295f, 0.369277f, 0.369258f, 0.369239f, 0.369221f, 0.369202f, 0.369184f, 0.369165f, 0.369147f, 0.369128f,
+0.36911f, 0.369091f, 0.369073f, 0.369054f, 0.369035f, 0.369017f, 0.368998f, 0.36898f, 0.368961f, 0.368943f, 0.368924f, 0.368906f, 0.368887f, 0.368869f, 0.36885f, 0.368832f, 0.368813f, 0.368795f, 0.368776f, 0.368757f,
+0.368739f, 0.36872f, 0.368702f, 0.368683f, 0.368665f, 0.368646f, 0.368628f, 0.368609f, 0.368591f, 0.368572f, 0.368554f, 0.368535f, 0.368517f, 0.368498f, 0.36848f, 0.368461f, 0.368442f, 0.368424f, 0.368405f, 0.368387f,
+0.368368f, 0.36835f, 0.368331f, 0.368313f, 0.368294f, 0.368276f, 0.368257f, 0.368239f, 0.36822f, 0.368202f, 0.368183f, 0.368165f, 0.368146f, 0.368128f, 0.368109f, 0.368091f, 0.368072f, 0.368054f, 0.368035f, 0.368017f,
+0.367998f, 0.36798f, 0.367961f, 0.367943f, 0.367924f, 0.367905f, 0.367887f, 0.367868f, 0.36785f, 0.367831f, 0.367813f, 0.367794f, 0.367776f, 0.367757f, 0.367739f, 0.36772f, 0.367702f, 0.367683f, 0.367665f, 0.367646f,
+0.367628f, 0.367609f, 0.367591f, 0.367572f, 0.367554f, 0.367535f, 0.367517f, 0.367498f, 0.36748f, 0.367461f, 0.367443f, 0.367424f, 0.367406f, 0.367387f, 0.367369f, 0.36735f, 0.367332f, 0.367313f, 0.367295f, 0.367276f,
+0.367258f, 0.367239f, 0.367221f, 0.367202f, 0.367184f, 0.367165f, 0.367147f, 0.367128f, 0.36711f, 0.367091f, 0.367073f, 0.367054f, 0.367036f, 0.367018f, 0.366999f, 0.366981f, 0.366962f, 0.366944f, 0.366925f, 0.366907f,
+0.366888f, 0.36687f, 0.366851f, 0.366833f, 0.366814f, 0.366796f, 0.366777f, 0.366759f, 0.36674f, 0.366722f, 0.366703f, 0.366685f, 0.366666f, 0.366648f, 0.366629f, 0.366611f, 0.366592f, 0.366574f, 0.366555f, 0.366537f,
+0.366519f, 0.3665f, 0.366482f, 0.366463f, 0.366445f, 0.366426f, 0.366408f, 0.366389f, 0.366371f, 0.366352f, 0.366334f, 0.366315f, 0.366297f, 0.366278f, 0.36626f, 0.366241f, 0.366223f, 0.366204f, 0.366186f, 0.366168f,
+0.366149f, 0.366131f, 0.366112f, 0.366094f, 0.366075f, 0.366057f, 0.366038f, 0.36602f, 0.366001f, 0.365983f, 0.365964f, 0.365946f, 0.365928f, 0.365909f, 0.365891f, 0.365872f, 0.365854f, 0.365835f, 0.365817f, 0.365798f,
+0.36578f, 0.365761f, 0.365743f, 0.365724f, 0.365706f, 0.365688f, 0.365669f, 0.365651f, 0.365632f, 0.365614f, 0.365595f, 0.365577f, 0.365558f, 0.36554f, 0.365521f, 0.365503f, 0.365485f, 0.365466f, 0.365448f, 0.365429f,
+0.365411f, 0.365392f, 0.365374f, 0.365355f, 0.365337f, 0.365319f, 0.3653f, 0.365282f, 0.365263f, 0.365245f, 0.365226f, 0.365208f, 0.365189f, 0.365171f, 0.365153f, 0.365134f, 0.365116f, 0.365097f, 0.365079f, 0.36506f,
+0.365042f, 0.365024f, 0.365005f, 0.364987f, 0.364968f, 0.36495f, 0.364931f, 0.364913f, 0.364894f, 0.364876f, 0.364858f, 0.364839f, 0.364821f, 0.364802f, 0.364784f, 0.364765f, 0.364747f, 0.364729f, 0.36471f, 0.364692f,
+0.364673f, 0.364655f, 0.364636f, 0.364618f, 0.3646f, 0.364581f, 0.364563f, 0.364544f, 0.364526f, 0.364507f, 0.364489f, 0.364471f, 0.364452f, 0.364434f, 0.364415f, 0.364397f, 0.364378f, 0.36436f, 0.364342f, 0.364323f,
+0.364305f, 0.364286f, 0.364268f, 0.36425f, 0.364231f, 0.364213f, 0.364194f, 0.364176f, 0.364157f, 0.364139f, 0.364121f, 0.364102f, 0.364084f, 0.364065f, 0.364047f, 0.364029f, 0.36401f, 0.363992f, 0.363973f, 0.363955f,
+0.363936f, 0.363918f, 0.3639f, 0.363881f, 0.363863f, 0.363844f, 0.363826f, 0.363808f, 0.363789f, 0.363771f, 0.363752f, 0.363734f, 0.363716f, 0.363697f, 0.363679f, 0.36366f, 0.363642f, 0.363624f, 0.363605f, 0.363587f,
+0.363568f, 0.36355f, 0.363532f, 0.363513f, 0.363495f, 0.363476f, 0.363458f, 0.36344f, 0.363421f, 0.363403f, 0.363384f, 0.363366f, 0.363348f, 0.363329f, 0.363311f, 0.363292f, 0.363274f, 0.363256f, 0.363237f, 0.363219f,
+0.3632f, 0.363182f, 0.363164f, 0.363145f, 0.363127f, 0.363108f, 0.36309f, 0.363072f, 0.363053f, 0.363035f, 0.363017f, 0.362998f, 0.36298f, 0.362961f, 0.362943f, 0.362925f, 0.362906f, 0.362888f, 0.362869f, 0.362851f,
+0.362833f, 0.362814f, 0.362796f, 0.362778f, 0.362759f, 0.362741f, 0.362722f, 0.362704f, 0.362686f, 0.362667f, 0.362649f, 0.362631f, 0.362612f, 0.362594f, 0.362575f, 0.362557f, 0.362539f, 0.36252f, 0.362502f, 0.362484f,
+0.362465f, 0.362447f, 0.362428f, 0.36241f, 0.362392f, 0.362373f, 0.362355f, 0.362337f, 0.362318f, 0.3623f, 0.362281f, 0.362263f, 0.362245f, 0.362226f, 0.362208f, 0.36219f, 0.362171f, 0.362153f, 0.362135f, 0.362116f,
+0.362098f, 0.362079f, 0.362061f, 0.362043f, 0.362024f, 0.362006f, 0.361988f, 0.361969f, 0.361951f, 0.361933f, 0.361914f, 0.361896f, 0.361877f, 0.361859f, 0.361841f, 0.361822f, 0.361804f, 0.361786f, 0.361767f, 0.361749f,
+0.361731f, 0.361712f, 0.361694f, 0.361676f, 0.361657f, 0.361639f, 0.36162f, 0.361602f, 0.361584f, 0.361565f, 0.361547f, 0.361529f, 0.36151f, 0.361492f, 0.361474f, 0.361455f, 0.361437f, 0.361419f, 0.3614f, 0.361382f,
+0.361364f, 0.361345f, 0.361327f, 0.361309f, 0.36129f, 0.361272f, 0.361254f, 0.361235f, 0.361217f, 0.361199f, 0.36118f, 0.361162f, 0.361143f, 0.361125f, 0.361107f, 0.361088f, 0.36107f, 0.361052f, 0.361033f, 0.361015f,
+0.360997f, 0.360978f, 0.36096f, 0.360942f, 0.360923f, 0.360905f, 0.360887f, 0.360868f, 0.36085f, 0.360832f, 0.360813f, 0.360795f, 0.360777f, 0.360758f, 0.36074f, 0.360722f, 0.360703f, 0.360685f, 0.360667f, 0.360648f,
+0.36063f, 0.360612f, 0.360594f, 0.360575f, 0.360557f, 0.360539f, 0.36052f, 0.360502f, 0.360484f, 0.360465f, 0.360447f, 0.360429f, 0.36041f, 0.360392f, 0.360374f, 0.360355f, 0.360337f, 0.360319f, 0.3603f, 0.360282f,
+0.360264f, 0.360245f, 0.360227f, 0.360209f, 0.36019f, 0.360172f, 0.360154f, 0.360136f, 0.360117f, 0.360099f, 0.360081f, 0.360062f, 0.360044f, 0.360026f, 0.360007f, 0.359989f, 0.359971f, 0.359952f, 0.359934f, 0.359916f,
+0.359897f, 0.359879f, 0.359861f, 0.359843f, 0.359824f, 0.359806f, 0.359788f, 0.359769f, 0.359751f, 0.359733f, 0.359714f, 0.359696f, 0.359678f, 0.35966f, 0.359641f, 0.359623f, 0.359605f, 0.359586f, 0.359568f, 0.35955f,
+0.359531f, 0.359513f, 0.359495f, 0.359477f, 0.359458f, 0.35944f, 0.359422f, 0.359403f, 0.359385f, 0.359367f, 0.359348f, 0.35933f, 0.359312f, 0.359294f, 0.359275f, 0.359257f, 0.359239f, 0.35922f, 0.359202f, 0.359184f,
+0.359166f, 0.359147f, 0.359129f, 0.359111f, 0.359092f, 0.359074f, 0.359056f, 0.359038f, 0.359019f, 0.359001f, 0.358983f, 0.358964f, 0.358946f, 0.358928f, 0.35891f, 0.358891f, 0.358873f, 0.358855f, 0.358836f, 0.358818f,
+0.3588f, 0.358782f, 0.358763f, 0.358745f, 0.358727f, 0.358708f, 0.35869f, 0.358672f, 0.358654f, 0.358635f, 0.358617f, 0.358599f, 0.358581f, 0.358562f, 0.358544f, 0.358526f, 0.358507f, 0.358489f, 0.358471f, 0.358453f,
+0.358434f, 0.358416f, 0.358398f, 0.35838f, 0.358361f, 0.358343f, 0.358325f, 0.358306f, 0.358288f, 0.35827f, 0.358252f, 0.358233f, 0.358215f, 0.358197f, 0.358179f, 0.35816f, 0.358142f, 0.358124f, 0.358106f, 0.358087f,
+0.358069f, 0.358051f, 0.358032f, 0.358014f, 0.357996f, 0.357978f, 0.357959f, 0.357941f, 0.357923f, 0.357905f, 0.357886f, 0.357868f, 0.35785f, 0.357832f, 0.357813f, 0.357795f, 0.357777f, 0.357759f, 0.35774f, 0.357722f,
+0.357704f, 0.357686f, 0.357667f, 0.357649f, 0.357631f, 0.357613f, 0.357594f, 0.357576f, 0.357558f, 0.35754f, 0.357521f, 0.357503f, 0.357485f, 0.357467f, 0.357448f, 0.35743f, 0.357412f, 0.357394f, 0.357375f, 0.357357f,
+0.357339f, 0.357321f, 0.357302f, 0.357284f, 0.357266f, 0.357248f, 0.357229f, 0.357211f, 0.357193f, 0.357175f, 0.357157f, 0.357138f, 0.35712f, 0.357102f, 0.357084f, 0.357065f, 0.357047f, 0.357029f, 0.357011f, 0.356992f,
+0.356974f, 0.356956f, 0.356938f, 0.356919f, 0.356901f, 0.356883f, 0.356865f, 0.356847f, 0.356828f, 0.35681f, 0.356792f, 0.356774f, 0.356755f, 0.356737f, 0.356719f, 0.356701f, 0.356682f, 0.356664f, 0.356646f, 0.356628f,
+0.35661f, 0.356591f, 0.356573f, 0.356555f, 0.356537f, 0.356518f, 0.3565f, 0.356482f, 0.356464f, 0.356446f, 0.356427f, 0.356409f, 0.356391f, 0.356373f, 0.356354f, 0.356336f, 0.356318f, 0.3563f, 0.356282f, 0.356263f,
+0.356245f, 0.356227f, 0.356209f, 0.356191f, 0.356172f, 0.356154f, 0.356136f, 0.356118f, 0.356099f, 0.356081f, 0.356063f, 0.356045f, 0.356027f, 0.356008f, 0.35599f, 0.355972f, 0.355954f, 0.355936f, 0.355917f, 0.355899f,
+0.355881f, 0.355863f, 0.355845f, 0.355826f, 0.355808f, 0.35579f, 0.355772f, 0.355754f, 0.355735f, 0.355717f, 0.355699f, 0.355681f, 0.355663f, 0.355644f, 0.355626f, 0.355608f, 0.35559f, 0.355572f, 0.355553f, 0.355535f,
+0.355517f, 0.355499f, 0.355481f, 0.355462f, 0.355444f, 0.355426f, 0.355408f, 0.35539f, 0.355371f, 0.355353f, 0.355335f, 0.355317f, 0.355299f, 0.35528f, 0.355262f, 0.355244f, 0.355226f, 0.355208f, 0.35519f, 0.355171f,
+0.355153f, 0.355135f, 0.355117f, 0.355099f, 0.35508f, 0.355062f, 0.355044f, 0.355026f, 0.355008f, 0.354989f, 0.354971f, 0.354953f, 0.354935f, 0.354917f, 0.354899f, 0.35488f, 0.354862f, 0.354844f, 0.354826f, 0.354808f,
+0.354789f, 0.354771f, 0.354753f, 0.354735f, 0.354717f, 0.354699f, 0.35468f, 0.354662f, 0.354644f, 0.354626f, 0.354608f, 0.35459f, 0.354571f, 0.354553f, 0.354535f, 0.354517f, 0.354499f, 0.354481f, 0.354462f, 0.354444f,
+0.354426f, 0.354408f, 0.35439f, 0.354372f, 0.354353f, 0.354335f, 0.354317f, 0.354299f, 0.354281f, 0.354263f, 0.354244f, 0.354226f, 0.354208f, 0.35419f, 0.354172f, 0.354154f, 0.354135f, 0.354117f, 0.354099f, 0.354081f,
+0.354063f, 0.354045f, 0.354026f, 0.354008f, 0.35399f, 0.353972f, 0.353954f, 0.353936f, 0.353918f, 0.353899f, 0.353881f, 0.353863f, 0.353845f, 0.353827f, 0.353809f, 0.35379f, 0.353772f, 0.353754f, 0.353736f, 0.353718f,
+0.3537f, 0.353682f, 0.353663f, 0.353645f, 0.353627f, 0.353609f, 0.353591f, 0.353573f, 0.353555f, 0.353536f, 0.353518f, 0.3535f, 0.353482f, 0.353464f, 0.353446f, 0.353427f, 0.353409f, 0.353391f, 0.353373f, 0.353355f,
+0.353337f, 0.353319f, 0.353301f, 0.353282f, 0.353264f, 0.353246f, 0.353228f, 0.35321f, 0.353192f, 0.353174f, 0.353155f, 0.353137f, 0.353119f, 0.353101f, 0.353083f, 0.353065f, 0.353047f, 0.353028f, 0.35301f, 0.352992f,
+0.352974f, 0.352956f, 0.352938f, 0.35292f, 0.352902f, 0.352883f, 0.352865f, 0.352847f, 0.352829f, 0.352811f, 0.352793f, 0.352775f, 0.352757f, 0.352738f, 0.35272f, 0.352702f, 0.352684f, 0.352666f, 0.352648f, 0.35263f,
+0.352612f, 0.352593f, 0.352575f, 0.352557f, 0.352539f, 0.352521f, 0.352503f, 0.352485f, 0.352467f, 0.352448f, 0.35243f, 0.352412f, 0.352394f, 0.352376f, 0.352358f, 0.35234f, 0.352322f, 0.352304f, 0.352285f, 0.352267f,
+0.352249f, 0.352231f, 0.352213f, 0.352195f, 0.352177f, 0.352159f, 0.352141f, 0.352122f, 0.352104f, 0.352086f, 0.352068f, 0.35205f, 0.352032f, 0.352014f, 0.351996f, 0.351978f, 0.351959f, 0.351941f, 0.351923f, 0.351905f,
+0.351887f, 0.351869f, 0.351851f, 0.351833f, 0.351815f, 0.351797f, 0.351778f, 0.35176f, 0.351742f, 0.351724f, 0.351706f, 0.351688f, 0.35167f, 0.351652f, 0.351634f, 0.351616f, 0.351597f, 0.351579f, 0.351561f, 0.351543f,
+0.351525f, 0.351507f, 0.351489f, 0.351471f, 0.351453f, 0.351435f, 0.351417f, 0.351398f, 0.35138f, 0.351362f, 0.351344f, 0.351326f, 0.351308f, 0.35129f, 0.351272f, 0.351254f, 0.351236f, 0.351218f, 0.351199f, 0.351181f,
+0.351163f, 0.351145f, 0.351127f, 0.351109f, 0.351091f, 0.351073f, 0.351055f, 0.351037f, 0.351019f, 0.351001f, 0.350982f, 0.350964f, 0.350946f, 0.350928f, 0.35091f, 0.350892f, 0.350874f, 0.350856f, 0.350838f, 0.35082f,
+0.350802f, 0.350784f, 0.350766f, 0.350747f, 0.350729f, 0.350711f, 0.350693f, 0.350675f, 0.350657f, 0.350639f, 0.350621f, 0.350603f, 0.350585f, 0.350567f, 0.350549f, 0.350531f, 0.350513f, 0.350494f, 0.350476f, 0.350458f,
+0.35044f, 0.350422f, 0.350404f, 0.350386f, 0.350368f, 0.35035f, 0.350332f, 0.350314f, 0.350296f, 0.350278f, 0.35026f, 0.350242f, 0.350224f, 0.350205f, 0.350187f, 0.350169f, 0.350151f, 0.350133f, 0.350115f, 0.350097f,
+0.350079f, 0.350061f, 0.350043f, 0.350025f, 0.350007f, 0.349989f, 0.349971f, 0.349953f, 0.349935f, 0.349917f, 0.349899f, 0.34988f, 0.349862f, 0.349844f, 0.349826f, 0.349808f, 0.34979f, 0.349772f, 0.349754f, 0.349736f,
+0.349718f, 0.3497f, 0.349682f, 0.349664f, 0.349646f, 0.349628f, 0.34961f, 0.349592f, 0.349574f, 0.349556f, 0.349538f, 0.34952f, 0.349502f, 0.349483f, 0.349465f, 0.349447f, 0.349429f, 0.349411f, 0.349393f, 0.349375f,
+0.349357f, 0.349339f, 0.349321f, 0.349303f, 0.349285f, 0.349267f, 0.349249f, 0.349231f, 0.349213f, 0.349195f, 0.349177f, 0.349159f, 0.349141f, 0.349123f, 0.349105f, 0.349087f, 0.349069f, 0.349051f, 0.349033f, 0.349015f,
+0.348997f, 0.348978f, 0.34896f, 0.348942f, 0.348924f, 0.348906f, 0.348888f, 0.34887f, 0.348852f, 0.348834f, 0.348816f, 0.348798f, 0.34878f, 0.348762f, 0.348744f, 0.348726f, 0.348708f, 0.34869f, 0.348672f, 0.348654f,
+0.348636f, 0.348618f, 0.3486f, 0.348582f, 0.348564f, 0.348546f, 0.348528f, 0.34851f, 0.348492f, 0.348474f, 0.348456f, 0.348438f, 0.34842f, 0.348402f, 0.348384f, 0.348366f, 0.348348f, 0.34833f, 0.348312f, 0.348294f,
+0.348276f, 0.348258f, 0.34824f, 0.348222f, 0.348204f, 0.348186f, 0.348168f, 0.34815f, 0.348132f, 0.348114f, 0.348096f, 0.348078f, 0.34806f, 0.348042f, 0.348024f, 0.348006f, 0.347988f, 0.34797f, 0.347952f, 0.347934f,
+0.347916f, 0.347898f, 0.34788f, 0.347862f, 0.347844f, 0.347826f, 0.347808f, 0.34779f, 0.347772f, 0.347754f, 0.347736f, 0.347718f, 0.3477f, 0.347682f, 0.347664f, 0.347646f, 0.347628f, 0.34761f, 0.347592f, 0.347574f,
+0.347556f, 0.347538f, 0.34752f, 0.347502f, 0.347484f, 0.347466f, 0.347448f, 0.34743f, 0.347412f, 0.347394f, 0.347376f, 0.347358f, 0.34734f, 0.347322f, 0.347304f, 0.347286f, 0.347268f, 0.34725f, 0.347232f, 0.347214f,
+0.347196f, 0.347178f, 0.34716f, 0.347142f, 0.347124f, 0.347106f, 0.347088f, 0.34707f, 0.347052f, 0.347034f, 0.347016f, 0.346998f, 0.34698f, 0.346962f, 0.346944f, 0.346926f, 0.346908f, 0.34689f, 0.346872f, 0.346854f,
+0.346836f, 0.346818f, 0.346801f, 0.346783f, 0.346765f, 0.346747f, 0.346729f, 0.346711f, 0.346693f, 0.346675f, 0.346657f, 0.346639f, 0.346621f, 0.346603f, 0.346585f, 0.346567f, 0.346549f, 0.346531f, 0.346513f, 0.346495f,
+0.346477f, 0.346459f, 0.346441f, 0.346423f, 0.346405f, 0.346387f, 0.346369f, 0.346351f, 0.346333f, 0.346315f, 0.346297f, 0.34628f, 0.346262f, 0.346244f, 0.346226f, 0.346208f, 0.34619f, 0.346172f, 0.346154f, 0.346136f,
+0.346118f, 0.3461f, 0.346082f, 0.346064f, 0.346046f, 0.346028f, 0.34601f, 0.345992f, 0.345974f, 0.345956f, 0.345938f, 0.34592f, 0.345903f, 0.345885f, 0.345867f, 0.345849f, 0.345831f, 0.345813f, 0.345795f, 0.345777f,
+0.345759f, 0.345741f, 0.345723f, 0.345705f, 0.345687f, 0.345669f, 0.345651f, 0.345633f, 0.345615f, 0.345597f, 0.34558f, 0.345562f, 0.345544f, 0.345526f, 0.345508f, 0.34549f, 0.345472f, 0.345454f, 0.345436f, 0.345418f,
+0.3454f, 0.345382f, 0.345364f, 0.345346f, 0.345328f, 0.34531f, 0.345293f, 0.345275f, 0.345257f, 0.345239f, 0.345221f, 0.345203f, 0.345185f, 0.345167f, 0.345149f, 0.345131f, 0.345113f, 0.345095f, 0.345077f, 0.345059f,
+0.345042f, 0.345024f, 0.345006f, 0.344988f, 0.34497f, 0.344952f, 0.344934f, 0.344916f, 0.344898f, 0.34488f, 0.344862f, 0.344844f, 0.344826f, 0.344809f, 0.344791f, 0.344773f, 0.344755f, 0.344737f, 0.344719f, 0.344701f,
+0.344683f, 0.344665f, 0.344647f, 0.344629f, 0.344611f, 0.344594f, 0.344576f, 0.344558f, 0.34454f, 0.344522f, 0.344504f, 0.344486f, 0.344468f, 0.34445f, 0.344432f, 0.344414f, 0.344396f, 0.344379f, 0.344361f, 0.344343f,
+0.344325f, 0.344307f, 0.344289f, 0.344271f, 0.344253f, 0.344235f, 0.344217f, 0.3442f, 0.344182f, 0.344164f, 0.344146f, 0.344128f, 0.34411f, 0.344092f, 0.344074f, 0.344056f, 0.344038f, 0.34402f, 0.344003f, 0.343985f,
+0.343967f, 0.343949f, 0.343931f, 0.343913f, 0.343895f, 0.343877f, 0.343859f, 0.343842f, 0.343824f, 0.343806f, 0.343788f, 0.34377f, 0.343752f, 0.343734f, 0.343716f, 0.343698f, 0.34368f, 0.343663f, 0.343645f, 0.343627f,
+0.343609f, 0.343591f, 0.343573f, 0.343555f, 0.343537f, 0.343519f, 0.343502f, 0.343484f, 0.343466f, 0.343448f, 0.34343f, 0.343412f, 0.343394f, 0.343376f, 0.343359f, 0.343341f, 0.343323f, 0.343305f, 0.343287f, 0.343269f,
+0.343251f, 0.343233f, 0.343215f, 0.343198f, 0.34318f, 0.343162f, 0.343144f, 0.343126f, 0.343108f, 0.34309f, 0.343072f, 0.343055f, 0.343037f, 0.343019f, 0.343001f, 0.342983f, 0.342965f, 0.342947f, 0.342929f, 0.342912f,
+0.342894f, 0.342876f, 0.342858f, 0.34284f, 0.342822f, 0.342804f, 0.342787f, 0.342769f, 0.342751f, 0.342733f, 0.342715f, 0.342697f, 0.342679f, 0.342661f, 0.342644f, 0.342626f, 0.342608f, 0.34259f, 0.342572f, 0.342554f,
+0.342536f, 0.342519f, 0.342501f, 0.342483f, 0.342465f, 0.342447f, 0.342429f, 0.342411f, 0.342394f, 0.342376f, 0.342358f, 0.34234f, 0.342322f, 0.342304f, 0.342286f, 0.342269f, 0.342251f, 0.342233f, 0.342215f, 0.342197f,
+0.342179f, 0.342161f, 0.342144f, 0.342126f, 0.342108f, 0.34209f, 0.342072f, 0.342054f, 0.342037f, 0.342019f, 0.342001f, 0.341983f, 0.341965f, 0.341947f, 0.341929f, 0.341912f, 0.341894f, 0.341876f, 0.341858f, 0.34184f,
+0.341822f, 0.341805f, 0.341787f, 0.341769f, 0.341751f, 0.341733f, 0.341715f, 0.341697f, 0.34168f, 0.341662f, 0.341644f, 0.341626f, 0.341608f, 0.34159f, 0.341573f, 0.341555f, 0.341537f, 0.341519f, 0.341501f, 0.341483f,
+0.341466f, 0.341448f, 0.34143f, 0.341412f, 0.341394f, 0.341376f, 0.341359f, 0.341341f, 0.341323f, 0.341305f, 0.341287f, 0.341269f, 0.341252f, 0.341234f, 0.341216f, 0.341198f, 0.34118f, 0.341163f, 0.341145f, 0.341127f,
+0.341109f, 0.341091f, 0.341073f, 0.341056f, 0.341038f, 0.34102f, 0.341002f, 0.340984f, 0.340966f, 0.340949f, 0.340931f, 0.340913f, 0.340895f, 0.340877f, 0.34086f, 0.340842f, 0.340824f, 0.340806f, 0.340788f, 0.34077f,
+0.340753f, 0.340735f, 0.340717f, 0.340699f, 0.340681f, 0.340664f, 0.340646f, 0.340628f, 0.34061f, 0.340592f, 0.340575f, 0.340557f, 0.340539f, 0.340521f, 0.340503f, 0.340485f, 0.340468f, 0.34045f, 0.340432f, 0.340414f,
+0.340396f, 0.340379f, 0.340361f, 0.340343f, 0.340325f, 0.340307f, 0.34029f, 0.340272f, 0.340254f, 0.340236f, 0.340218f, 0.340201f, 0.340183f, 0.340165f, 0.340147f, 0.340129f, 0.340112f, 0.340094f, 0.340076f, 0.340058f,
+0.34004f, 0.340023f, 0.340005f, 0.339987f, 0.339969f, 0.339951f, 0.339934f, 0.339916f, 0.339898f, 0.33988f, 0.339863f, 0.339845f, 0.339827f, 0.339809f, 0.339791f, 0.339774f, 0.339756f, 0.339738f, 0.33972f, 0.339702f,
+0.339685f, 0.339667f, 0.339649f, 0.339631f, 0.339613f, 0.339596f, 0.339578f, 0.33956f, 0.339542f, 0.339525f, 0.339507f, 0.339489f, 0.339471f, 0.339453f, 0.339436f, 0.339418f, 0.3394f, 0.339382f, 0.339365f, 0.339347f,
+0.339329f, 0.339311f, 0.339293f, 0.339276f, 0.339258f, 0.33924f, 0.339222f, 0.339205f, 0.339187f, 0.339169f, 0.339151f, 0.339133f, 0.339116f, 0.339098f, 0.33908f, 0.339062f, 0.339045f, 0.339027f, 0.339009f, 0.338991f,
+0.338974f, 0.338956f, 0.338938f, 0.33892f, 0.338902f, 0.338885f, 0.338867f, 0.338849f, 0.338831f, 0.338814f, 0.338796f, 0.338778f, 0.33876f, 0.338743f, 0.338725f, 0.338707f, 0.338689f, 0.338672f, 0.338654f, 0.338636f,
+0.338618f, 0.338601f, 0.338583f, 0.338565f, 0.338547f, 0.33853f, 0.338512f, 0.338494f, 0.338476f, 0.338458f, 0.338441f, 0.338423f, 0.338405f, 0.338387f, 0.33837f, 0.338352f, 0.338334f, 0.338316f, 0.338299f, 0.338281f,
+0.338263f, 0.338245f, 0.338228f, 0.33821f, 0.338192f, 0.338174f, 0.338157f, 0.338139f, 0.338121f, 0.338103f, 0.338086f, 0.338068f, 0.33805f, 0.338033f, 0.338015f, 0.337997f, 0.337979f, 0.337962f, 0.337944f, 0.337926f,
+0.337908f, 0.337891f, 0.337873f, 0.337855f, 0.337837f, 0.33782f, 0.337802f, 0.337784f, 0.337766f, 0.337749f, 0.337731f, 0.337713f, 0.337695f, 0.337678f, 0.33766f, 0.337642f, 0.337625f, 0.337607f, 0.337589f, 0.337571f,
+0.337554f, 0.337536f, 0.337518f, 0.3375f, 0.337483f, 0.337465f, 0.337447f, 0.33743f, 0.337412f, 0.337394f, 0.337376f, 0.337359f, 0.337341f, 0.337323f, 0.337305f, 0.337288f, 0.33727f, 0.337252f, 0.337235f, 0.337217f,
+0.337199f, 0.337181f, 0.337164f, 0.337146f, 0.337128f, 0.337111f, 0.337093f, 0.337075f, 0.337057f, 0.33704f, 0.337022f, 0.337004f, 0.336986f, 0.336969f, 0.336951f, 0.336933f, 0.336916f, 0.336898f, 0.33688f, 0.336862f,
+0.336845f, 0.336827f, 0.336809f, 0.336792f, 0.336774f, 0.336756f, 0.336739f, 0.336721f, 0.336703f, 0.336685f, 0.336668f, 0.33665f, 0.336632f, 0.336615f, 0.336597f, 0.336579f, 0.336561f, 0.336544f, 0.336526f, 0.336508f,
+0.336491f, 0.336473f, 0.336455f, 0.336438f, 0.33642f, 0.336402f, 0.336384f, 0.336367f, 0.336349f, 0.336331f, 0.336314f, 0.336296f, 0.336278f, 0.336261f, 0.336243f, 0.336225f, 0.336207f, 0.33619f, 0.336172f, 0.336154f,
+0.336137f, 0.336119f, 0.336101f, 0.336084f, 0.336066f, 0.336048f, 0.336031f, 0.336013f, 0.335995f, 0.335977f, 0.33596f, 0.335942f, 0.335924f, 0.335907f, 0.335889f, 0.335871f, 0.335854f, 0.335836f, 0.335818f, 0.335801f,
+0.335783f, 0.335765f, 0.335748f, 0.33573f, 0.335712f, 0.335694f, 0.335677f, 0.335659f, 0.335641f, 0.335624f, 0.335606f, 0.335588f, 0.335571f, 0.335553f, 0.335535f, 0.335518f, 0.3355f, 0.335482f, 0.335465f, 0.335447f,
+0.335429f, 0.335412f, 0.335394f, 0.335376f, 0.335359f, 0.335341f, 0.335323f, 0.335306f, 0.335288f, 0.33527f, 0.335253f, 0.335235f, 0.335217f, 0.3352f, 0.335182f, 0.335164f, 0.335147f, 0.335129f, 0.335111f, 0.335094f,
+0.335076f, 0.335058f, 0.335041f, 0.335023f, 0.335005f, 0.334988f, 0.33497f, 0.334952f, 0.334935f, 0.334917f, 0.334899f, 0.334882f, 0.334864f, 0.334846f, 0.334829f, 0.334811f, 0.334793f, 0.334776f, 0.334758f, 0.33474f,
+0.334723f, 0.334705f, 0.334687f, 0.33467f, 0.334652f, 0.334634f, 0.334617f, 0.334599f, 0.334581f, 0.334564f, 0.334546f, 0.334529f, 0.334511f, 0.334493f, 0.334476f, 0.334458f, 0.33444f, 0.334423f, 0.334405f, 0.334387f,
+0.33437f, 0.334352f, 0.334334f, 0.334317f, 0.334299f, 0.334281f, 0.334264f, 0.334246f, 0.334229f, 0.334211f, 0.334193f, 0.334176f, 0.334158f, 0.33414f, 0.334123f, 0.334105f, 0.334087f, 0.33407f, 0.334052f, 0.334034f,
+0.334017f, 0.333999f, 0.333982f, 0.333964f, 0.333946f, 0.333929f, 0.333911f, 0.333893f, 0.333876f, 0.333858f, 0.33384f, 0.333823f, 0.333805f, 0.333788f, 0.33377f, 0.333752f, 0.333735f, 0.333717f, 0.333699f, 0.333682f,
+0.333664f, 0.333647f, 0.333629f, 0.333611f, 0.333594f, 0.333576f, 0.333558f, 0.333541f, 0.333523f, 0.333506f, 0.333488f, 0.33347f, 0.333453f, 0.333435f, 0.333417f, 0.3334f, 0.333382f, 0.333365f, 0.333347f, 0.333329f,
+0.333312f, 0.333294f, 0.333276f, 0.333259f, 0.333241f, 0.333224f, 0.333206f, 0.333188f, 0.333171f, 0.333153f, 0.333136f, 0.333118f, 0.3331f, 0.333083f, 0.333065f, 0.333047f, 0.33303f, 0.333012f, 0.332995f, 0.332977f,
+0.332959f, 0.332942f, 0.332924f, 0.332907f, 0.332889f, 0.332871f, 0.332854f, 0.332836f, 0.332819f, 0.332801f, 0.332783f, 0.332766f, 0.332748f, 0.332731f, 0.332713f, 0.332695f, 0.332678f, 0.33266f, 0.332643f, 0.332625f,
+0.332607f, 0.33259f, 0.332572f, 0.332555f, 0.332537f, 0.332519f, 0.332502f, 0.332484f, 0.332467f, 0.332449f, 0.332431f, 0.332414f, 0.332396f, 0.332379f, 0.332361f, 0.332343f, 0.332326f, 0.332308f, 0.332291f, 0.332273f,
+0.332255f, 0.332238f, 0.33222f, 0.332203f, 0.332185f, 0.332167f, 0.33215f, 0.332132f, 0.332115f, 0.332097f, 0.33208f, 0.332062f, 0.332044f, 0.332027f, 0.332009f, 0.331992f, 0.331974f, 0.331956f, 0.331939f, 0.331921f,
+0.331904f, 0.331886f, 0.331869f, 0.331851f, 0.331833f, 0.331816f, 0.331798f, 0.331781f, 0.331763f, 0.331745f, 0.331728f, 0.33171f, 0.331693f, 0.331675f, 0.331658f, 0.33164f, 0.331622f, 0.331605f, 0.331587f, 0.33157f,
+0.331552f, 0.331535f, 0.331517f, 0.331499f, 0.331482f, 0.331464f, 0.331447f, 0.331429f, 0.331412f, 0.331394f, 0.331376f, 0.331359f, 0.331341f, 0.331324f, 0.331306f, 0.331289f, 0.331271f, 0.331254f, 0.331236f, 0.331218f,
+0.331201f, 0.331183f, 0.331166f, 0.331148f, 0.331131f, 0.331113f, 0.331095f, 0.331078f, 0.33106f, 0.331043f, 0.331025f, 0.331008f, 0.33099f, 0.330973f, 0.330955f, 0.330937f, 0.33092f, 0.330902f, 0.330885f, 0.330867f,
+0.33085f, 0.330832f, 0.330815f, 0.330797f, 0.330779f, 0.330762f, 0.330744f, 0.330727f, 0.330709f, 0.330692f, 0.330674f, 0.330657f, 0.330639f, 0.330621f, 0.330604f, 0.330586f, 0.330569f, 0.330551f, 0.330534f, 0.330516f,
+0.330499f, 0.330481f, 0.330464f, 0.330446f, 0.330428f, 0.330411f, 0.330393f, 0.330376f, 0.330358f, 0.330341f, 0.330323f, 0.330306f, 0.330288f, 0.330271f, 0.330253f, 0.330236f, 0.330218f, 0.3302f, 0.330183f, 0.330165f,
+0.330148f, 0.33013f, 0.330113f, 0.330095f, 0.330078f, 0.33006f, 0.330043f, 0.330025f, 0.330008f, 0.32999f, 0.329973f, 0.329955f, 0.329937f, 0.32992f, 0.329902f, 0.329885f, 0.329867f, 0.32985f, 0.329832f, 0.329815f,
+0.329797f, 0.32978f, 0.329762f, 0.329745f, 0.329727f, 0.32971f, 0.329692f, 0.329675f, 0.329657f, 0.32964f, 0.329622f, 0.329605f, 0.329587f, 0.329569f, 0.329552f, 0.329534f, 0.329517f, 0.329499f, 0.329482f, 0.329464f,
+0.329447f, 0.329429f, 0.329412f, 0.329394f, 0.329377f, 0.329359f, 0.329342f, 0.329324f, 0.329307f, 0.329289f, 0.329272f, 0.329254f, 0.329237f, 0.329219f, 0.329202f, 0.329184f, 0.329167f, 0.329149f, 0.329132f, 0.329114f,
+0.329097f, 0.329079f, 0.329062f, 0.329044f, 0.329027f, 0.329009f, 0.328992f, 0.328974f, 0.328957f, 0.328939f, 0.328922f, 0.328904f, 0.328887f, 0.328869f, 0.328852f, 0.328834f, 0.328817f, 0.328799f, 0.328782f, 0.328764f,
+0.328747f, 0.328729f, 0.328712f, 0.328694f, 0.328677f, 0.328659f, 0.328642f, 0.328624f, 0.328607f, 0.328589f, 0.328572f, 0.328554f, 0.328537f, 0.328519f, 0.328502f, 0.328484f, 0.328467f, 0.328449f, 0.328432f, 0.328414f,
+0.328397f, 0.328379f, 0.328362f, 0.328344f, 0.328327f, 0.328309f, 0.328292f, 0.328274f, 0.328257f, 0.328239f, 0.328222f, 0.328204f, 0.328187f, 0.328169f, 0.328152f, 0.328134f, 0.328117f, 0.328099f, 0.328082f, 0.328065f,
+0.328047f, 0.32803f, 0.328012f, 0.327995f, 0.327977f, 0.32796f, 0.327942f, 0.327925f, 0.327907f, 0.32789f, 0.327872f, 0.327855f, 0.327837f, 0.32782f, 0.327802f, 0.327785f, 0.327767f, 0.32775f, 0.327732f, 0.327715f,
+0.327698f, 0.32768f, 0.327663f, 0.327645f, 0.327628f, 0.32761f, 0.327593f, 0.327575f, 0.327558f, 0.32754f, 0.327523f, 0.327505f, 0.327488f, 0.32747f, 0.327453f, 0.327436f, 0.327418f, 0.327401f, 0.327383f, 0.327366f,
+0.327348f, 0.327331f, 0.327313f, 0.327296f, 0.327278f, 0.327261f, 0.327243f, 0.327226f, 0.327209f, 0.327191f, 0.327174f, 0.327156f, 0.327139f, 0.327121f, 0.327104f, 0.327086f, 0.327069f, 0.327051f, 0.327034f, 0.327017f,
+0.326999f, 0.326982f, 0.326964f, 0.326947f, 0.326929f, 0.326912f, 0.326894f, 0.326877f, 0.32686f, 0.326842f, 0.326825f, 0.326807f, 0.32679f, 0.326772f, 0.326755f, 0.326737f, 0.32672f, 0.326703f, 0.326685f, 0.326668f,
+0.32665f, 0.326633f, 0.326615f, 0.326598f, 0.32658f, 0.326563f, 0.326546f, 0.326528f, 0.326511f, 0.326493f, 0.326476f, 0.326458f, 0.326441f, 0.326423f, 0.326406f, 0.326389f, 0.326371f, 0.326354f, 0.326336f, 0.326319f,
+0.326301f, 0.326284f, 0.326267f, 0.326249f, 0.326232f, 0.326214f, 0.326197f, 0.326179f, 0.326162f, 0.326145f, 0.326127f, 0.32611f, 0.326092f, 0.326075f, 0.326057f, 0.32604f, 0.326023f, 0.326005f, 0.325988f, 0.32597f,
+0.325953f, 0.325935f, 0.325918f, 0.325901f, 0.325883f, 0.325866f, 0.325848f, 0.325831f, 0.325814f, 0.325796f, 0.325779f, 0.325761f, 0.325744f, 0.325726f, 0.325709f, 0.325692f, 0.325674f, 0.325657f, 0.325639f, 0.325622f,
+0.325605f, 0.325587f, 0.32557f, 0.325552f, 0.325535f, 0.325517f, 0.3255f, 0.325483f, 0.325465f, 0.325448f, 0.32543f, 0.325413f, 0.325396f, 0.325378f, 0.325361f, 0.325343f, 0.325326f, 0.325309f, 0.325291f, 0.325274f,
+0.325256f, 0.325239f, 0.325222f, 0.325204f, 0.325187f, 0.325169f, 0.325152f, 0.325135f, 0.325117f, 0.3251f, 0.325082f, 0.325065f, 0.325048f, 0.32503f, 0.325013f, 0.324995f, 0.324978f, 0.324961f, 0.324943f, 0.324926f,
+0.324908f, 0.324891f, 0.324874f, 0.324856f, 0.324839f, 0.324821f, 0.324804f, 0.324787f, 0.324769f, 0.324752f, 0.324734f, 0.324717f, 0.3247f, 0.324682f, 0.324665f, 0.324647f, 0.32463f, 0.324613f, 0.324595f, 0.324578f,
+0.324561f, 0.324543f, 0.324526f, 0.324508f, 0.324491f, 0.324474f, 0.324456f, 0.324439f, 0.324421f, 0.324404f, 0.324387f, 0.324369f, 0.324352f, 0.324335f, 0.324317f, 0.3243f, 0.324282f, 0.324265f, 0.324248f, 0.32423f,
+0.324213f, 0.324196f, 0.324178f, 0.324161f, 0.324143f, 0.324126f, 0.324109f, 0.324091f, 0.324074f, 0.324057f, 0.324039f, 0.324022f, 0.324004f, 0.323987f, 0.32397f, 0.323952f, 0.323935f, 0.323918f, 0.3239f, 0.323883f,
+0.323865f, 0.323848f, 0.323831f, 0.323813f, 0.323796f, 0.323779f, 0.323761f, 0.323744f, 0.323727f, 0.323709f, 0.323692f, 0.323674f, 0.323657f, 0.32364f, 0.323622f, 0.323605f, 0.323588f, 0.32357f, 0.323553f, 0.323536f,
+0.323518f, 0.323501f, 0.323484f, 0.323466f, 0.323449f, 0.323431f, 0.323414f, 0.323397f, 0.323379f, 0.323362f, 0.323345f, 0.323327f, 0.32331f, 0.323293f, 0.323275f, 0.323258f, 0.323241f, 0.323223f, 0.323206f, 0.323189f,
+0.323171f, 0.323154f, 0.323136f, 0.323119f, 0.323102f, 0.323084f, 0.323067f, 0.32305f, 0.323032f, 0.323015f, 0.322998f, 0.32298f, 0.322963f, 0.322946f, 0.322928f, 0.322911f, 0.322894f, 0.322876f, 0.322859f, 0.322842f,
+0.322824f, 0.322807f, 0.32279f, 0.322772f, 0.322755f, 0.322738f, 0.32272f, 0.322703f, 0.322686f, 0.322668f, 0.322651f, 0.322634f, 0.322616f, 0.322599f, 0.322582f, 0.322564f, 0.322547f, 0.32253f, 0.322512f, 0.322495f,
+0.322478f, 0.32246f, 0.322443f, 0.322426f, 0.322408f, 0.322391f, 0.322374f, 0.322356f, 0.322339f, 0.322322f, 0.322304f, 0.322287f, 0.32227f, 0.322252f, 0.322235f, 0.322218f, 0.3222f, 0.322183f, 0.322166f, 0.322148f,
+0.322131f, 0.322114f, 0.322096f, 0.322079f, 0.322062f, 0.322044f, 0.322027f, 0.32201f, 0.321993f, 0.321975f, 0.321958f, 0.321941f, 0.321923f, 0.321906f, 0.321889f, 0.321871f, 0.321854f, 0.321837f, 0.321819f, 0.321802f,
+0.321785f, 0.321767f, 0.32175f, 0.321733f, 0.321716f, 0.321698f, 0.321681f, 0.321664f, 0.321646f, 0.321629f, 0.321612f, 0.321594f, 0.321577f, 0.32156f, 0.321542f, 0.321525f, 0.321508f, 0.321491f, 0.321473f, 0.321456f,
+0.321439f, 0.321421f, 0.321404f, 0.321387f, 0.321369f, 0.321352f, 0.321335f, 0.321318f, 0.3213f, 0.321283f, 0.321266f, 0.321248f, 0.321231f, 0.321214f, 0.321196f, 0.321179f, 0.321162f, 0.321145f, 0.321127f, 0.32111f,
+0.321093f, 0.321075f, 0.321058f, 0.321041f, 0.321023f, 0.321006f, 0.320989f, 0.320972f, 0.320954f, 0.320937f, 0.32092f, 0.320902f, 0.320885f, 0.320868f, 0.320851f, 0.320833f, 0.320816f, 0.320799f, 0.320781f, 0.320764f,
+0.320747f, 0.32073f, 0.320712f, 0.320695f, 0.320678f, 0.32066f, 0.320643f, 0.320626f, 0.320609f, 0.320591f, 0.320574f, 0.320557f, 0.32054f, 0.320522f, 0.320505f, 0.320488f, 0.32047f, 0.320453f, 0.320436f, 0.320419f,
+0.320401f, 0.320384f, 0.320367f, 0.32035f, 0.320332f, 0.320315f, 0.320298f, 0.32028f, 0.320263f, 0.320246f, 0.320229f, 0.320211f, 0.320194f, 0.320177f, 0.32016f, 0.320142f, 0.320125f, 0.320108f, 0.32009f, 0.320073f,
+0.320056f, 0.320039f, 0.320021f, 0.320004f, 0.319987f, 0.31997f, 0.319952f, 0.319935f, 0.319918f, 0.319901f, 0.319883f, 0.319866f, 0.319849f, 0.319832f, 0.319814f, 0.319797f, 0.31978f, 0.319763f, 0.319745f, 0.319728f,
+0.319711f, 0.319693f, 0.319676f, 0.319659f, 0.319642f, 0.319624f, 0.319607f, 0.31959f, 0.319573f, 0.319555f, 0.319538f, 0.319521f, 0.319504f, 0.319486f, 0.319469f, 0.319452f, 0.319435f, 0.319417f, 0.3194f, 0.319383f,
+0.319366f, 0.319348f, 0.319331f, 0.319314f, 0.319297f, 0.319279f, 0.319262f, 0.319245f, 0.319228f, 0.319211f, 0.319193f, 0.319176f, 0.319159f, 0.319142f, 0.319124f, 0.319107f, 0.31909f, 0.319073f, 0.319055f, 0.319038f,
+0.319021f, 0.319004f, 0.318986f, 0.318969f, 0.318952f, 0.318935f, 0.318917f, 0.3189f, 0.318883f, 0.318866f, 0.318849f, 0.318831f, 0.318814f, 0.318797f, 0.31878f, 0.318762f, 0.318745f, 0.318728f, 0.318711f, 0.318693f,
+0.318676f, 0.318659f, 0.318642f, 0.318625f, 0.318607f, 0.31859f, 0.318573f, 0.318556f, 0.318538f, 0.318521f, 0.318504f, 0.318487f, 0.31847f, 0.318452f, 0.318435f, 0.318418f, 0.318401f, 0.318383f, 0.318366f, 0.318349f,
+0.318332f, 0.318315f, 0.318297f, 0.31828f, 0.318263f, 0.318246f, 0.318228f, 0.318211f, 0.318194f, 0.318177f, 0.31816f, 0.318142f, 0.318125f, 0.318108f, 0.318091f, 0.318074f, 0.318056f, 0.318039f, 0.318022f, 0.318005f,
+0.317988f, 0.31797f, 0.317953f, 0.317936f, 0.317919f, 0.317901f, 0.317884f, 0.317867f, 0.31785f, 0.317833f, 0.317815f, 0.317798f, 0.317781f, 0.317764f, 0.317747f, 0.317729f, 0.317712f, 0.317695f, 0.317678f, 0.317661f,
+0.317643f, 0.317626f, 0.317609f, 0.317592f, 0.317575f, 0.317557f, 0.31754f, 0.317523f, 0.317506f, 0.317489f, 0.317471f, 0.317454f, 0.317437f, 0.31742f, 0.317403f, 0.317385f, 0.317368f, 0.317351f, 0.317334f, 0.317317f,
+0.3173f, 0.317282f, 0.317265f, 0.317248f, 0.317231f, 0.317214f, 0.317196f, 0.317179f, 0.317162f, 0.317145f, 0.317128f, 0.31711f, 0.317093f, 0.317076f, 0.317059f, 0.317042f, 0.317025f, 0.317007f, 0.31699f, 0.316973f,
+0.316956f, 0.316939f, 0.316921f, 0.316904f, 0.316887f, 0.31687f, 0.316853f, 0.316836f, 0.316818f, 0.316801f, 0.316784f, 0.316767f, 0.31675f, 0.316732f, 0.316715f, 0.316698f, 0.316681f, 0.316664f, 0.316647f, 0.316629f,
+0.316612f, 0.316595f, 0.316578f, 0.316561f, 0.316544f, 0.316526f, 0.316509f, 0.316492f, 0.316475f, 0.316458f, 0.316441f, 0.316423f, 0.316406f, 0.316389f, 0.316372f, 0.316355f, 0.316338f, 0.31632f, 0.316303f, 0.316286f,
+0.316269f, 0.316252f, 0.316235f, 0.316217f, 0.3162f, 0.316183f, 0.316166f, 0.316149f, 0.316132f, 0.316114f, 0.316097f, 0.31608f, 0.316063f, 0.316046f, 0.316029f, 0.316012f, 0.315994f, 0.315977f, 0.31596f, 0.315943f,
+0.315926f, 0.315909f, 0.315891f, 0.315874f, 0.315857f, 0.31584f, 0.315823f, 0.315806f, 0.315789f, 0.315771f, 0.315754f, 0.315737f, 0.31572f, 0.315703f, 0.315686f, 0.315669f, 0.315651f, 0.315634f, 0.315617f, 0.3156f,
+0.315583f, 0.315566f, 0.315549f, 0.315531f, 0.315514f, 0.315497f, 0.31548f, 0.315463f, 0.315446f, 0.315429f, 0.315411f, 0.315394f, 0.315377f, 0.31536f, 0.315343f, 0.315326f, 0.315309f, 0.315291f, 0.315274f, 0.315257f,
+0.31524f, 0.315223f, 0.315206f, 0.315189f, 0.315171f, 0.315154f, 0.315137f, 0.31512f, 0.315103f, 0.315086f, 0.315069f, 0.315052f, 0.315034f, 0.315017f, 0.315f, 0.314983f, 0.314966f, 0.314949f, 0.314932f, 0.314915f,
+0.314897f, 0.31488f, 0.314863f, 0.314846f, 0.314829f, 0.314812f, 0.314795f, 0.314778f, 0.31476f, 0.314743f, 0.314726f, 0.314709f, 0.314692f, 0.314675f, 0.314658f, 0.314641f, 0.314623f, 0.314606f, 0.314589f, 0.314572f,
+0.314555f, 0.314538f, 0.314521f, 0.314504f, 0.314487f, 0.314469f, 0.314452f, 0.314435f, 0.314418f, 0.314401f, 0.314384f, 0.314367f, 0.31435f, 0.314333f, 0.314315f, 0.314298f, 0.314281f, 0.314264f, 0.314247f, 0.31423f,
+0.314213f, 0.314196f, 0.314179f, 0.314161f, 0.314144f, 0.314127f, 0.31411f, 0.314093f, 0.314076f, 0.314059f, 0.314042f, 0.314025f, 0.314008f, 0.31399f, 0.313973f, 0.313956f, 0.313939f, 0.313922f, 0.313905f, 0.313888f,
+0.313871f, 0.313854f, 0.313837f, 0.313819f, 0.313802f, 0.313785f, 0.313768f, 0.313751f, 0.313734f, 0.313717f, 0.3137f, 0.313683f, 0.313666f, 0.313649f, 0.313631f, 0.313614f, 0.313597f, 0.31358f, 0.313563f, 0.313546f,
+0.313529f, 0.313512f, 0.313495f, 0.313478f, 0.313461f, 0.313443f, 0.313426f, 0.313409f, 0.313392f, 0.313375f, 0.313358f, 0.313341f, 0.313324f, 0.313307f, 0.31329f, 0.313273f, 0.313256f, 0.313238f, 0.313221f, 0.313204f,
+0.313187f, 0.31317f, 0.313153f, 0.313136f, 0.313119f, 0.313102f, 0.313085f, 0.313068f, 0.313051f, 0.313034f, 0.313016f, 0.312999f, 0.312982f, 0.312965f, 0.312948f, 0.312931f, 0.312914f, 0.312897f, 0.31288f, 0.312863f,
+0.312846f, 0.312829f, 0.312812f, 0.312795f, 0.312777f, 0.31276f, 0.312743f, 0.312726f, 0.312709f, 0.312692f, 0.312675f, 0.312658f, 0.312641f, 0.312624f, 0.312607f, 0.31259f, 0.312573f, 0.312556f, 0.312539f, 0.312522f,
+0.312504f, 0.312487f, 0.31247f, 0.312453f, 0.312436f, 0.312419f, 0.312402f, 0.312385f, 0.312368f, 0.312351f, 0.312334f, 0.312317f, 0.3123f, 0.312283f, 0.312266f, 0.312249f, 0.312232f, 0.312215f, 0.312197f, 0.31218f,
+0.312163f, 0.312146f, 0.312129f, 0.312112f, 0.312095f, 0.312078f, 0.312061f, 0.312044f, 0.312027f, 0.31201f, 0.311993f, 0.311976f, 0.311959f, 0.311942f, 0.311925f, 0.311908f, 0.311891f, 0.311874f, 0.311857f, 0.311839f,
+0.311822f, 0.311805f, 0.311788f, 0.311771f, 0.311754f, 0.311737f, 0.31172f, 0.311703f, 0.311686f, 0.311669f, 0.311652f, 0.311635f, 0.311618f, 0.311601f, 0.311584f, 0.311567f, 0.31155f, 0.311533f, 0.311516f, 0.311499f,
+0.311482f, 0.311465f, 0.311448f, 0.311431f, 0.311414f, 0.311397f, 0.31138f, 0.311363f, 0.311345f, 0.311328f, 0.311311f, 0.311294f, 0.311277f, 0.31126f, 0.311243f, 0.311226f, 0.311209f, 0.311192f, 0.311175f, 0.311158f,
+0.311141f, 0.311124f, 0.311107f, 0.31109f, 0.311073f, 0.311056f, 0.311039f, 0.311022f, 0.311005f, 0.310988f, 0.310971f, 0.310954f, 0.310937f, 0.31092f, 0.310903f, 0.310886f, 0.310869f, 0.310852f, 0.310835f, 0.310818f,
+0.310801f, 0.310784f, 0.310767f, 0.31075f, 0.310733f, 0.310716f, 0.310699f, 0.310682f, 0.310665f, 0.310648f, 0.310631f, 0.310614f, 0.310597f, 0.31058f, 0.310563f, 0.310546f, 0.310529f, 0.310512f, 0.310495f, 0.310478f,
+0.310461f, 0.310444f, 0.310427f, 0.31041f, 0.310393f, 0.310376f, 0.310359f, 0.310342f, 0.310325f, 0.310308f, 0.310291f, 0.310274f, 0.310257f, 0.31024f, 0.310223f, 0.310206f, 0.310189f, 0.310172f, 0.310155f, 0.310138f,
+0.310121f, 0.310104f, 0.310087f, 0.31007f, 0.310053f, 0.310036f, 0.310019f, 0.310002f, 0.309985f, 0.309968f, 0.309951f, 0.309934f, 0.309917f, 0.3099f, 0.309883f, 0.309866f, 0.309849f, 0.309832f, 0.309815f, 0.309798f,
+0.309781f, 0.309764f, 0.309747f, 0.30973f, 0.309713f, 0.309696f, 0.309679f, 0.309662f, 0.309645f, 0.309628f, 0.309611f, 0.309594f, 0.309577f, 0.30956f, 0.309543f, 0.309526f, 0.309509f, 0.309492f, 0.309475f, 0.309458f,
+0.309441f, 0.309424f, 0.309407f, 0.30939f, 0.309373f, 0.309356f, 0.309339f, 0.309322f, 0.309305f, 0.309288f, 0.309271f, 0.309255f, 0.309238f, 0.309221f, 0.309204f, 0.309187f, 0.30917f, 0.309153f, 0.309136f, 0.309119f,
+0.309102f, 0.309085f, 0.309068f, 0.309051f, 0.309034f, 0.309017f, 0.309f, 0.308983f, 0.308966f, 0.308949f, 0.308932f, 0.308915f, 0.308898f, 0.308881f, 0.308864f, 0.308847f, 0.30883f, 0.308813f, 0.308796f, 0.30878f,
+0.308763f, 0.308746f, 0.308729f, 0.308712f, 0.308695f, 0.308678f, 0.308661f, 0.308644f, 0.308627f, 0.30861f, 0.308593f, 0.308576f, 0.308559f, 0.308542f, 0.308525f, 0.308508f, 0.308491f, 0.308474f, 0.308457f, 0.30844f,
+0.308423f, 0.308407f, 0.30839f, 0.308373f, 0.308356f, 0.308339f, 0.308322f, 0.308305f, 0.308288f, 0.308271f, 0.308254f, 0.308237f, 0.30822f, 0.308203f, 0.308186f, 0.308169f, 0.308152f, 0.308135f, 0.308119f, 0.308102f,
+0.308085f, 0.308068f, 0.308051f, 0.308034f, 0.308017f, 0.308f, 0.307983f, 0.307966f, 0.307949f, 0.307932f, 0.307915f, 0.307898f, 0.307881f, 0.307864f, 0.307848f, 0.307831f, 0.307814f, 0.307797f, 0.30778f, 0.307763f,
+0.307746f, 0.307729f, 0.307712f, 0.307695f, 0.307678f, 0.307661f, 0.307644f, 0.307627f, 0.307611f, 0.307594f, 0.307577f, 0.30756f, 0.307543f, 0.307526f, 0.307509f, 0.307492f, 0.307475f, 0.307458f, 0.307441f, 0.307424f,
+0.307407f, 0.307391f, 0.307374f, 0.307357f, 0.30734f, 0.307323f, 0.307306f, 0.307289f, 0.307272f, 0.307255f, 0.307238f, 0.307221f, 0.307204f, 0.307188f, 0.307171f, 0.307154f, 0.307137f, 0.30712f, 0.307103f, 0.307086f,
+0.307069f, 0.307052f, 0.307035f, 0.307018f, 0.307001f, 0.306985f, 0.306968f, 0.306951f, 0.306934f, 0.306917f, 0.3069f, 0.306883f, 0.306866f, 0.306849f, 0.306832f, 0.306816f, 0.306799f, 0.306782f, 0.306765f, 0.306748f,
+0.306731f, 0.306714f, 0.306697f, 0.30668f, 0.306663f, 0.306646f, 0.30663f, 0.306613f, 0.306596f, 0.306579f, 0.306562f, 0.306545f, 0.306528f, 0.306511f, 0.306494f, 0.306478f, 0.306461f, 0.306444f, 0.306427f, 0.30641f,
+0.306393f, 0.306376f, 0.306359f, 0.306342f, 0.306325f, 0.306309f, 0.306292f, 0.306275f, 0.306258f, 0.306241f, 0.306224f, 0.306207f, 0.30619f, 0.306173f, 0.306157f, 0.30614f, 0.306123f, 0.306106f, 0.306089f, 0.306072f,
+0.306055f, 0.306038f, 0.306022f, 0.306005f, 0.305988f, 0.305971f, 0.305954f, 0.305937f, 0.30592f, 0.305903f, 0.305887f, 0.30587f, 0.305853f, 0.305836f, 0.305819f, 0.305802f, 0.305785f, 0.305768f, 0.305751f, 0.305735f,
+0.305718f, 0.305701f, 0.305684f, 0.305667f, 0.30565f, 0.305633f, 0.305617f, 0.3056f, 0.305583f, 0.305566f, 0.305549f, 0.305532f, 0.305515f, 0.305498f, 0.305482f, 0.305465f, 0.305448f, 0.305431f, 0.305414f, 0.305397f,
+0.30538f, 0.305363f, 0.305347f, 0.30533f, 0.305313f, 0.305296f, 0.305279f, 0.305262f, 0.305245f, 0.305229f, 0.305212f, 0.305195f, 0.305178f, 0.305161f, 0.305144f, 0.305127f, 0.305111f, 0.305094f, 0.305077f, 0.30506f,
+0.305043f, 0.305026f, 0.305009f, 0.304993f, 0.304976f, 0.304959f, 0.304942f, 0.304925f, 0.304908f, 0.304891f, 0.304875f, 0.304858f, 0.304841f, 0.304824f, 0.304807f, 0.30479f, 0.304774f, 0.304757f, 0.30474f, 0.304723f,
+0.304706f, 0.304689f, 0.304672f, 0.304656f, 0.304639f, 0.304622f, 0.304605f, 0.304588f, 0.304571f, 0.304555f, 0.304538f, 0.304521f, 0.304504f, 0.304487f, 0.30447f, 0.304454f, 0.304437f, 0.30442f, 0.304403f, 0.304386f,
+0.304369f, 0.304352f, 0.304336f, 0.304319f, 0.304302f, 0.304285f, 0.304268f, 0.304251f, 0.304235f, 0.304218f, 0.304201f, 0.304184f, 0.304167f, 0.30415f, 0.304134f, 0.304117f, 0.3041f, 0.304083f, 0.304066f, 0.30405f,
+0.304033f, 0.304016f, 0.303999f, 0.303982f, 0.303965f, 0.303949f, 0.303932f, 0.303915f, 0.303898f, 0.303881f, 0.303864f, 0.303848f, 0.303831f, 0.303814f, 0.303797f, 0.30378f, 0.303764f, 0.303747f, 0.30373f, 0.303713f,
+0.303696f, 0.303679f, 0.303663f, 0.303646f, 0.303629f, 0.303612f, 0.303595f, 0.303579f, 0.303562f, 0.303545f, 0.303528f, 0.303511f, 0.303494f, 0.303478f, 0.303461f, 0.303444f, 0.303427f, 0.30341f, 0.303394f, 0.303377f,
+0.30336f, 0.303343f, 0.303326f, 0.30331f, 0.303293f, 0.303276f, 0.303259f, 0.303242f, 0.303226f, 0.303209f, 0.303192f, 0.303175f, 0.303158f, 0.303142f, 0.303125f, 0.303108f, 0.303091f, 0.303074f, 0.303058f, 0.303041f,
+0.303024f, 0.303007f, 0.30299f, 0.302974f, 0.302957f, 0.30294f, 0.302923f, 0.302906f, 0.30289f, 0.302873f, 0.302856f, 0.302839f, 0.302822f, 0.302806f, 0.302789f, 0.302772f, 0.302755f, 0.302738f, 0.302722f, 0.302705f,
+0.302688f, 0.302671f, 0.302654f, 0.302638f, 0.302621f, 0.302604f, 0.302587f, 0.30257f, 0.302554f, 0.302537f, 0.30252f, 0.302503f, 0.302487f, 0.30247f, 0.302453f, 0.302436f, 0.302419f, 0.302403f, 0.302386f, 0.302369f,
+0.302352f, 0.302336f, 0.302319f, 0.302302f, 0.302285f, 0.302268f, 0.302252f, 0.302235f, 0.302218f, 0.302201f, 0.302185f, 0.302168f, 0.302151f, 0.302134f, 0.302117f, 0.302101f, 0.302084f, 0.302067f, 0.30205f, 0.302034f,
+0.302017f, 0.302f, 0.301983f, 0.301966f, 0.30195f, 0.301933f, 0.301916f, 0.301899f, 0.301883f, 0.301866f, 0.301849f, 0.301832f, 0.301816f, 0.301799f, 0.301782f, 0.301765f, 0.301749f, 0.301732f, 0.301715f, 0.301698f,
+0.301681f, 0.301665f, 0.301648f, 0.301631f, 0.301614f, 0.301598f, 0.301581f, 0.301564f, 0.301547f, 0.301531f, 0.301514f, 0.301497f, 0.30148f, 0.301464f, 0.301447f, 0.30143f, 0.301413f, 0.301397f, 0.30138f, 0.301363f,
+0.301346f, 0.30133f, 0.301313f, 0.301296f, 0.301279f, 0.301263f, 0.301246f, 0.301229f, 0.301212f, 0.301196f, 0.301179f, 0.301162f, 0.301145f, 0.301129f, 0.301112f, 0.301095f, 0.301078f, 0.301062f, 0.301045f, 0.301028f,
+0.301011f, 0.300995f, 0.300978f, 0.300961f, 0.300944f, 0.300928f, 0.300911f, 0.300894f, 0.300877f, 0.300861f, 0.300844f, 0.300827f, 0.30081f, 0.300794f, 0.300777f, 0.30076f, 0.300744f, 0.300727f, 0.30071f, 0.300693f,
+0.300677f, 0.30066f, 0.300643f, 0.300626f, 0.30061f, 0.300593f, 0.300576f, 0.300559f, 0.300543f, 0.300526f, 0.300509f, 0.300493f, 0.300476f, 0.300459f, 0.300442f, 0.300426f, 0.300409f, 0.300392f, 0.300375f, 0.300359f,
+0.300342f, 0.300325f, 0.300309f, 0.300292f, 0.300275f, 0.300258f, 0.300242f, 0.300225f, 0.300208f, 0.300191f, 0.300175f, 0.300158f, 0.300141f, 0.300125f, 0.300108f, 0.300091f, 0.300074f, 0.300058f, 0.300041f, 0.300024f,
+0.300008f, 0.299991f, 0.299974f, 0.299957f, 0.299941f, 0.299924f, 0.299907f, 0.299891f, 0.299874f, 0.299857f, 0.29984f, 0.299824f, 0.299807f, 0.29979f, 0.299774f, 0.299757f, 0.29974f, 0.299724f, 0.299707f, 0.29969f,
+0.299673f, 0.299657f, 0.29964f, 0.299623f, 0.299607f, 0.29959f, 0.299573f, 0.299556f, 0.29954f, 0.299523f, 0.299506f, 0.29949f, 0.299473f, 0.299456f, 0.29944f, 0.299423f, 0.299406f, 0.299389f, 0.299373f, 0.299356f,
+0.299339f, 0.299323f, 0.299306f, 0.299289f, 0.299273f, 0.299256f, 0.299239f, 0.299222f, 0.299206f, 0.299189f, 0.299172f, 0.299156f, 0.299139f, 0.299122f, 0.299106f, 0.299089f, 0.299072f, 0.299056f, 0.299039f, 0.299022f,
+0.299006f, 0.298989f, 0.298972f, 0.298955f, 0.298939f, 0.298922f, 0.298905f, 0.298889f, 0.298872f, 0.298855f, 0.298839f, 0.298822f, 0.298805f, 0.298789f, 0.298772f, 0.298755f, 0.298739f, 0.298722f, 0.298705f, 0.298689f,
+0.298672f, 0.298655f, 0.298639f, 0.298622f, 0.298605f, 0.298588f, 0.298572f, 0.298555f, 0.298538f, 0.298522f, 0.298505f, 0.298488f, 0.298472f, 0.298455f, 0.298438f, 0.298422f, 0.298405f, 0.298388f, 0.298372f, 0.298355f,
+0.298338f, 0.298322f, 0.298305f, 0.298288f, 0.298272f, 0.298255f, 0.298238f, 0.298222f, 0.298205f, 0.298188f, 0.298172f, 0.298155f, 0.298138f, 0.298122f, 0.298105f, 0.298088f, 0.298072f, 0.298055f, 0.298038f, 0.298022f,
+0.298005f, 0.297988f, 0.297972f, 0.297955f, 0.297938f, 0.297922f, 0.297905f, 0.297888f, 0.297872f, 0.297855f, 0.297839f, 0.297822f, 0.297805f, 0.297789f, 0.297772f, 0.297755f, 0.297739f, 0.297722f, 0.297705f, 0.297689f,
+0.297672f, 0.297655f, 0.297639f, 0.297622f, 0.297605f, 0.297589f, 0.297572f, 0.297555f, 0.297539f, 0.297522f, 0.297506f, 0.297489f, 0.297472f, 0.297456f, 0.297439f, 0.297422f, 0.297406f, 0.297389f, 0.297372f, 0.297356f,
+0.297339f, 0.297322f, 0.297306f, 0.297289f, 0.297273f, 0.297256f, 0.297239f, 0.297223f, 0.297206f, 0.297189f, 0.297173f, 0.297156f, 0.297139f, 0.297123f, 0.297106f, 0.29709f, 0.297073f, 0.297056f, 0.29704f, 0.297023f,
+0.297006f, 0.29699f, 0.296973f, 0.296956f, 0.29694f, 0.296923f, 0.296907f, 0.29689f, 0.296873f, 0.296857f, 0.29684f, 0.296823f, 0.296807f, 0.29679f, 0.296774f, 0.296757f, 0.29674f, 0.296724f, 0.296707f, 0.29669f,
+0.296674f, 0.296657f, 0.296641f, 0.296624f, 0.296607f, 0.296591f, 0.296574f, 0.296557f, 0.296541f, 0.296524f, 0.296508f, 0.296491f, 0.296474f, 0.296458f, 0.296441f, 0.296425f, 0.296408f, 0.296391f, 0.296375f, 0.296358f,
+0.296341f, 0.296325f, 0.296308f, 0.296292f, 0.296275f, 0.296258f, 0.296242f, 0.296225f, 0.296209f, 0.296192f, 0.296175f, 0.296159f, 0.296142f, 0.296126f, 0.296109f, 0.296092f, 0.296076f, 0.296059f, 0.296043f, 0.296026f,
+0.296009f, 0.295993f, 0.295976f, 0.29596f, 0.295943f, 0.295926f, 0.29591f, 0.295893f, 0.295877f, 0.29586f, 0.295843f, 0.295827f, 0.29581f, 0.295794f, 0.295777f, 0.29576f, 0.295744f, 0.295727f, 0.295711f, 0.295694f,
+0.295677f, 0.295661f, 0.295644f, 0.295628f, 0.295611f, 0.295594f, 0.295578f, 0.295561f, 0.295545f, 0.295528f, 0.295511f, 0.295495f, 0.295478f, 0.295462f, 0.295445f, 0.295428f, 0.295412f, 0.295395f, 0.295379f, 0.295362f,
+0.295346f, 0.295329f, 0.295312f, 0.295296f, 0.295279f, 0.295263f, 0.295246f, 0.295229f, 0.295213f, 0.295196f, 0.29518f, 0.295163f, 0.295147f, 0.29513f, 0.295113f, 0.295097f, 0.29508f, 0.295064f, 0.295047f, 0.295031f,
+0.295014f, 0.294997f, 0.294981f, 0.294964f, 0.294948f, 0.294931f, 0.294914f, 0.294898f, 0.294881f, 0.294865f, 0.294848f, 0.294832f, 0.294815f, 0.294798f, 0.294782f, 0.294765f, 0.294749f, 0.294732f, 0.294716f, 0.294699f,
+0.294683f, 0.294666f, 0.294649f, 0.294633f, 0.294616f, 0.2946f, 0.294583f, 0.294567f, 0.29455f, 0.294533f, 0.294517f, 0.2945f, 0.294484f, 0.294467f, 0.294451f, 0.294434f, 0.294418f, 0.294401f, 0.294384f, 0.294368f,
+0.294351f, 0.294335f, 0.294318f, 0.294302f, 0.294285f, 0.294269f, 0.294252f, 0.294235f, 0.294219f, 0.294202f, 0.294186f, 0.294169f, 0.294153f, 0.294136f, 0.29412f, 0.294103f, 0.294086f, 0.29407f, 0.294053f, 0.294037f,
+0.29402f, 0.294004f, 0.293987f, 0.293971f, 0.293954f, 0.293938f, 0.293921f, 0.293904f, 0.293888f, 0.293871f, 0.293855f, 0.293838f, 0.293822f, 0.293805f, 0.293789f, 0.293772f, 0.293756f, 0.293739f, 0.293722f, 0.293706f,
+0.293689f, 0.293673f, 0.293656f, 0.29364f, 0.293623f, 0.293607f, 0.29359f, 0.293574f, 0.293557f, 0.293541f, 0.293524f, 0.293507f, 0.293491f, 0.293474f, 0.293458f, 0.293441f, 0.293425f, 0.293408f, 0.293392f, 0.293375f,
+0.293359f, 0.293342f, 0.293326f, 0.293309f, 0.293293f, 0.293276f, 0.29326f, 0.293243f, 0.293226f, 0.29321f, 0.293193f, 0.293177f, 0.29316f, 0.293144f, 0.293127f, 0.293111f, 0.293094f, 0.293078f, 0.293061f, 0.293045f,
+0.293028f, 0.293012f, 0.292995f, 0.292979f, 0.292962f, 0.292946f, 0.292929f, 0.292913f, 0.292896f, 0.29288f, 0.292863f, 0.292847f, 0.29283f, 0.292813f, 0.292797f, 0.29278f, 0.292764f, 0.292747f, 0.292731f, 0.292714f,
+0.292698f, 0.292681f, 0.292665f, 0.292648f, 0.292632f, 0.292615f, 0.292599f, 0.292582f, 0.292566f, 0.292549f, 0.292533f, 0.292516f, 0.2925f, 0.292483f, 0.292467f, 0.29245f, 0.292434f, 0.292417f, 0.292401f, 0.292384f,
+0.292368f, 0.292351f, 0.292335f, 0.292318f, 0.292302f, 0.292285f, 0.292269f, 0.292252f, 0.292236f, 0.292219f, 0.292203f, 0.292186f, 0.29217f, 0.292153f, 0.292137f, 0.29212f, 0.292104f, 0.292087f, 0.292071f, 0.292054f,
+0.292038f, 0.292021f, 0.292005f, 0.291988f, 0.291972f, 0.291955f, 0.291939f, 0.291922f, 0.291906f, 0.291889f, 0.291873f, 0.291856f, 0.29184f, 0.291824f, 0.291807f, 0.291791f, 0.291774f, 0.291758f, 0.291741f, 0.291725f,
+0.291708f, 0.291692f, 0.291675f, 0.291659f, 0.291642f, 0.291626f, 0.291609f, 0.291593f, 0.291576f, 0.29156f, 0.291543f, 0.291527f, 0.29151f, 0.291494f, 0.291477f, 0.291461f, 0.291444f, 0.291428f, 0.291412f, 0.291395f,
+0.291379f, 0.291362f, 0.291346f, 0.291329f, 0.291313f, 0.291296f, 0.29128f, 0.291263f, 0.291247f, 0.29123f, 0.291214f, 0.291197f, 0.291181f, 0.291164f, 0.291148f, 0.291132f, 0.291115f, 0.291099f, 0.291082f, 0.291066f,
+0.291049f, 0.291033f, 0.291016f, 0.291f, 0.290983f, 0.290967f, 0.29095f, 0.290934f, 0.290917f, 0.290901f, 0.290885f, 0.290868f, 0.290852f, 0.290835f, 0.290819f, 0.290802f, 0.290786f, 0.290769f, 0.290753f, 0.290736f,
+0.29072f, 0.290704f, 0.290687f, 0.290671f, 0.290654f, 0.290638f, 0.290621f, 0.290605f, 0.290588f, 0.290572f, 0.290555f, 0.290539f, 0.290523f, 0.290506f, 0.29049f, 0.290473f, 0.290457f, 0.29044f, 0.290424f, 0.290407f,
+0.290391f, 0.290375f, 0.290358f, 0.290342f, 0.290325f, 0.290309f, 0.290292f, 0.290276f, 0.290259f, 0.290243f, 0.290227f, 0.29021f, 0.290194f, 0.290177f, 0.290161f, 0.290144f, 0.290128f, 0.290111f, 0.290095f, 0.290079f,
+0.290062f, 0.290046f, 0.290029f, 0.290013f, 0.289996f, 0.28998f, 0.289964f, 0.289947f, 0.289931f, 0.289914f, 0.289898f, 0.289881f, 0.289865f, 0.289849f, 0.289832f, 0.289816f, 0.289799f, 0.289783f, 0.289766f, 0.28975f,
+0.289734f, 0.289717f, 0.289701f, 0.289684f, 0.289668f, 0.289651f, 0.289635f, 0.289619f, 0.289602f, 0.289586f, 0.289569f, 0.289553f, 0.289536f, 0.28952f, 0.289504f, 0.289487f, 0.289471f, 0.289454f, 0.289438f, 0.289422f,
+0.289405f, 0.289389f, 0.289372f, 0.289356f, 0.289339f, 0.289323f, 0.289307f, 0.28929f, 0.289274f, 0.289257f, 0.289241f, 0.289225f, 0.289208f, 0.289192f, 0.289175f, 0.289159f, 0.289143f, 0.289126f, 0.28911f, 0.289093f,
+0.289077f, 0.28906f, 0.289044f, 0.289028f, 0.289011f, 0.288995f, 0.288978f, 0.288962f, 0.288946f, 0.288929f, 0.288913f, 0.288896f, 0.28888f, 0.288864f, 0.288847f, 0.288831f, 0.288814f, 0.288798f, 0.288782f, 0.288765f,
+0.288749f, 0.288732f, 0.288716f, 0.2887f, 0.288683f, 0.288667f, 0.28865f, 0.288634f, 0.288618f, 0.288601f, 0.288585f, 0.288568f, 0.288552f, 0.288536f, 0.288519f, 0.288503f, 0.288486f, 0.28847f, 0.288454f, 0.288437f,
+0.288421f, 0.288405f, 0.288388f, 0.288372f, 0.288355f, 0.288339f, 0.288323f, 0.288306f, 0.28829f, 0.288273f, 0.288257f, 0.288241f, 0.288224f, 0.288208f, 0.288192f, 0.288175f, 0.288159f, 0.288142f, 0.288126f, 0.28811f,
+0.288093f, 0.288077f, 0.28806f, 0.288044f, 0.288028f, 0.288011f, 0.287995f, 0.287979f, 0.287962f, 0.287946f, 0.287929f, 0.287913f, 0.287897f, 0.28788f, 0.287864f, 0.287848f, 0.287831f, 0.287815f, 0.287798f, 0.287782f,
+0.287766f, 0.287749f, 0.287733f, 0.287717f, 0.2877f, 0.287684f, 0.287667f, 0.287651f, 0.287635f, 0.287618f, 0.287602f, 0.287586f, 0.287569f, 0.287553f, 0.287537f, 0.28752f, 0.287504f, 0.287487f, 0.287471f, 0.287455f,
+0.287438f, 0.287422f, 0.287406f, 0.287389f, 0.287373f, 0.287357f, 0.28734f, 0.287324f, 0.287308f, 0.287291f, 0.287275f, 0.287258f, 0.287242f, 0.287226f, 0.287209f, 0.287193f, 0.287177f, 0.28716f, 0.287144f, 0.287128f,
+0.287111f, 0.287095f, 0.287079f, 0.287062f, 0.287046f, 0.28703f, 0.287013f, 0.286997f, 0.28698f, 0.286964f, 0.286948f, 0.286931f, 0.286915f, 0.286899f, 0.286882f, 0.286866f, 0.28685f, 0.286833f, 0.286817f, 0.286801f,
+0.286784f, 0.286768f, 0.286752f, 0.286735f, 0.286719f, 0.286703f, 0.286686f, 0.28667f, 0.286654f, 0.286637f, 0.286621f, 0.286605f, 0.286588f, 0.286572f, 0.286556f, 0.286539f, 0.286523f, 0.286507f, 0.28649f, 0.286474f,
+0.286458f, 0.286441f, 0.286425f, 0.286409f, 0.286392f, 0.286376f, 0.28636f, 0.286343f, 0.286327f, 0.286311f, 0.286294f, 0.286278f, 0.286262f, 0.286245f, 0.286229f, 0.286213f, 0.286196f, 0.28618f, 0.286164f, 0.286147f,
+0.286131f, 0.286115f, 0.286098f, 0.286082f, 0.286066f, 0.286049f, 0.286033f, 0.286017f, 0.286f, 0.285984f, 0.285968f, 0.285951f, 0.285935f, 0.285919f, 0.285902f, 0.285886f, 0.28587f, 0.285854f, 0.285837f, 0.285821f,
+0.285805f, 0.285788f, 0.285772f, 0.285756f, 0.285739f, 0.285723f, 0.285707f, 0.28569f, 0.285674f, 0.285658f, 0.285641f, 0.285625f, 0.285609f, 0.285593f, 0.285576f, 0.28556f, 0.285544f, 0.285527f, 0.285511f, 0.285495f,
+0.285478f, 0.285462f, 0.285446f, 0.285429f, 0.285413f, 0.285397f, 0.285381f, 0.285364f, 0.285348f, 0.285332f, 0.285315f, 0.285299f, 0.285283f, 0.285266f, 0.28525f, 0.285234f, 0.285218f, 0.285201f, 0.285185f, 0.285169f,
+0.285152f, 0.285136f, 0.28512f, 0.285103f, 0.285087f, 0.285071f, 0.285055f, 0.285038f, 0.285022f, 0.285006f, 0.284989f, 0.284973f, 0.284957f, 0.284941f, 0.284924f, 0.284908f, 0.284892f, 0.284875f, 0.284859f, 0.284843f,
+0.284827f, 0.28481f, 0.284794f, 0.284778f, 0.284761f, 0.284745f, 0.284729f, 0.284713f, 0.284696f, 0.28468f, 0.284664f, 0.284647f, 0.284631f, 0.284615f, 0.284599f, 0.284582f, 0.284566f, 0.28455f, 0.284533f, 0.284517f,
+0.284501f, 0.284485f, 0.284468f, 0.284452f, 0.284436f, 0.284419f, 0.284403f, 0.284387f, 0.284371f, 0.284354f, 0.284338f, 0.284322f, 0.284306f, 0.284289f, 0.284273f, 0.284257f, 0.28424f, 0.284224f, 0.284208f, 0.284192f,
+0.284175f, 0.284159f, 0.284143f, 0.284127f, 0.28411f, 0.284094f, 0.284078f, 0.284062f, 0.284045f, 0.284029f, 0.284013f, 0.283996f, 0.28398f, 0.283964f, 0.283948f, 0.283931f, 0.283915f, 0.283899f, 0.283883f, 0.283866f,
+0.28385f, 0.283834f, 0.283818f, 0.283801f, 0.283785f, 0.283769f, 0.283753f, 0.283736f, 0.28372f, 0.283704f, 0.283688f, 0.283671f, 0.283655f, 0.283639f, 0.283623f, 0.283606f, 0.28359f, 0.283574f, 0.283558f, 0.283541f,
+0.283525f, 0.283509f, 0.283493f, 0.283476f, 0.28346f, 0.283444f, 0.283428f, 0.283411f, 0.283395f, 0.283379f, 0.283363f, 0.283346f, 0.28333f, 0.283314f, 0.283298f, 0.283281f, 0.283265f, 0.283249f, 0.283233f, 0.283216f,
+0.2832f, 0.283184f, 0.283168f, 0.283151f, 0.283135f, 0.283119f, 0.283103f, 0.283086f, 0.28307f, 0.283054f, 0.283038f, 0.283022f, 0.283005f, 0.282989f, 0.282973f, 0.282957f, 0.28294f, 0.282924f, 0.282908f, 0.282892f,
+0.282875f, 0.282859f, 0.282843f, 0.282827f, 0.282811f, 0.282794f, 0.282778f, 0.282762f, 0.282746f, 0.282729f, 0.282713f, 0.282697f, 0.282681f, 0.282664f, 0.282648f, 0.282632f, 0.282616f, 0.2826f, 0.282583f, 0.282567f,
+0.282551f, 0.282535f, 0.282518f, 0.282502f, 0.282486f, 0.28247f, 0.282454f, 0.282437f, 0.282421f, 0.282405f, 0.282389f, 0.282372f, 0.282356f, 0.28234f, 0.282324f, 0.282308f, 0.282291f, 0.282275f, 0.282259f, 0.282243f,
+0.282227f, 0.28221f, 0.282194f, 0.282178f, 0.282162f, 0.282146f, 0.282129f, 0.282113f, 0.282097f, 0.282081f, 0.282064f, 0.282048f, 0.282032f, 0.282016f, 0.282f, 0.281983f, 0.281967f, 0.281951f, 0.281935f, 0.281919f,
+0.281902f, 0.281886f, 0.28187f, 0.281854f, 0.281838f, 0.281821f, 0.281805f, 0.281789f, 0.281773f, 0.281757f, 0.28174f, 0.281724f, 0.281708f, 0.281692f, 0.281676f, 0.281659f, 0.281643f, 0.281627f, 0.281611f, 0.281595f,
+0.281578f, 0.281562f, 0.281546f, 0.28153f, 0.281514f, 0.281497f, 0.281481f, 0.281465f, 0.281449f, 0.281433f, 0.281417f, 0.2814f, 0.281384f, 0.281368f, 0.281352f, 0.281336f, 0.281319f, 0.281303f, 0.281287f, 0.281271f,
+0.281255f, 0.281238f, 0.281222f, 0.281206f, 0.28119f, 0.281174f, 0.281158f, 0.281141f, 0.281125f, 0.281109f, 0.281093f, 0.281077f, 0.28106f, 0.281044f, 0.281028f, 0.281012f, 0.280996f, 0.28098f, 0.280963f, 0.280947f,
+0.280931f, 0.280915f, 0.280899f, 0.280883f, 0.280866f, 0.28085f, 0.280834f, 0.280818f, 0.280802f, 0.280785f, 0.280769f, 0.280753f, 0.280737f, 0.280721f, 0.280705f, 0.280688f, 0.280672f, 0.280656f, 0.28064f, 0.280624f,
+0.280608f, 0.280591f, 0.280575f, 0.280559f, 0.280543f, 0.280527f, 0.280511f, 0.280494f, 0.280478f, 0.280462f, 0.280446f, 0.28043f, 0.280414f, 0.280398f, 0.280381f, 0.280365f, 0.280349f, 0.280333f, 0.280317f, 0.280301f,
+0.280284f, 0.280268f, 0.280252f, 0.280236f, 0.28022f, 0.280204f, 0.280187f, 0.280171f, 0.280155f, 0.280139f, 0.280123f, 0.280107f, 0.280091f, 0.280074f, 0.280058f, 0.280042f, 0.280026f, 0.28001f, 0.279994f, 0.279978f,
+0.279961f, 0.279945f, 0.279929f, 0.279913f, 0.279897f, 0.279881f, 0.279865f, 0.279848f, 0.279832f, 0.279816f, 0.2798f, 0.279784f, 0.279768f, 0.279752f, 0.279735f, 0.279719f, 0.279703f, 0.279687f, 0.279671f, 0.279655f,
+0.279639f, 0.279622f, 0.279606f, 0.27959f, 0.279574f, 0.279558f, 0.279542f, 0.279526f, 0.279509f, 0.279493f, 0.279477f, 0.279461f, 0.279445f, 0.279429f, 0.279413f, 0.279397f, 0.27938f, 0.279364f, 0.279348f, 0.279332f,
+0.279316f, 0.2793f, 0.279284f, 0.279267f, 0.279251f, 0.279235f, 0.279219f, 0.279203f, 0.279187f, 0.279171f, 0.279155f, 0.279138f, 0.279122f, 0.279106f, 0.27909f, 0.279074f, 0.279058f, 0.279042f, 0.279026f, 0.27901f,
+0.278993f, 0.278977f, 0.278961f, 0.278945f, 0.278929f, 0.278913f, 0.278897f, 0.278881f, 0.278864f, 0.278848f, 0.278832f, 0.278816f, 0.2788f, 0.278784f, 0.278768f, 0.278752f, 0.278736f, 0.278719f, 0.278703f, 0.278687f,
+0.278671f, 0.278655f, 0.278639f, 0.278623f, 0.278607f, 0.278591f, 0.278574f, 0.278558f, 0.278542f, 0.278526f, 0.27851f, 0.278494f, 0.278478f, 0.278462f, 0.278446f, 0.278429f, 0.278413f, 0.278397f, 0.278381f, 0.278365f,
+0.278349f, 0.278333f, 0.278317f, 0.278301f, 0.278285f, 0.278268f, 0.278252f, 0.278236f, 0.27822f, 0.278204f, 0.278188f, 0.278172f, 0.278156f, 0.27814f, 0.278124f, 0.278108f, 0.278091f, 0.278075f, 0.278059f, 0.278043f,
+0.278027f, 0.278011f, 0.277995f, 0.277979f, 0.277963f, 0.277947f, 0.277931f, 0.277914f, 0.277898f, 0.277882f, 0.277866f, 0.27785f, 0.277834f, 0.277818f, 0.277802f, 0.277786f, 0.27777f, 0.277754f, 0.277737f, 0.277721f,
+0.277705f, 0.277689f, 0.277673f, 0.277657f, 0.277641f, 0.277625f, 0.277609f, 0.277593f, 0.277577f, 0.277561f, 0.277545f, 0.277528f, 0.277512f, 0.277496f, 0.27748f, 0.277464f, 0.277448f, 0.277432f, 0.277416f, 0.2774f,
+0.277384f, 0.277368f, 0.277352f, 0.277336f, 0.277319f, 0.277303f, 0.277287f, 0.277271f, 0.277255f, 0.277239f, 0.277223f, 0.277207f, 0.277191f, 0.277175f, 0.277159f, 0.277143f, 0.277127f, 0.277111f, 0.277095f, 0.277078f,
+0.277062f, 0.277046f, 0.27703f, 0.277014f, 0.276998f, 0.276982f, 0.276966f, 0.27695f, 0.276934f, 0.276918f, 0.276902f, 0.276886f, 0.27687f, 0.276854f, 0.276838f, 0.276822f, 0.276805f, 0.276789f, 0.276773f, 0.276757f,
+0.276741f, 0.276725f, 0.276709f, 0.276693f, 0.276677f, 0.276661f, 0.276645f, 0.276629f, 0.276613f, 0.276597f, 0.276581f, 0.276565f, 0.276549f, 0.276533f, 0.276517f, 0.2765f, 0.276484f, 0.276468f, 0.276452f, 0.276436f,
+0.27642f, 0.276404f, 0.276388f, 0.276372f, 0.276356f, 0.27634f, 0.276324f, 0.276308f, 0.276292f, 0.276276f, 0.27626f, 0.276244f, 0.276228f, 0.276212f, 0.276196f, 0.27618f, 0.276164f, 0.276148f, 0.276132f, 0.276115f,
+0.276099f, 0.276083f, 0.276067f, 0.276051f, 0.276035f, 0.276019f, 0.276003f, 0.275987f, 0.275971f, 0.275955f, 0.275939f, 0.275923f, 0.275907f, 0.275891f, 0.275875f, 0.275859f, 0.275843f, 0.275827f, 0.275811f, 0.275795f,
+0.275779f, 0.275763f, 0.275747f, 0.275731f, 0.275715f, 0.275699f, 0.275683f, 0.275667f, 0.275651f, 0.275635f, 0.275619f, 0.275603f, 0.275587f, 0.275571f, 0.275555f, 0.275538f, 0.275522f, 0.275506f, 0.27549f, 0.275474f,
+0.275458f, 0.275442f, 0.275426f, 0.27541f, 0.275394f, 0.275378f, 0.275362f, 0.275346f, 0.27533f, 0.275314f, 0.275298f, 0.275282f, 0.275266f, 0.27525f, 0.275234f, 0.275218f, 0.275202f, 0.275186f, 0.27517f, 0.275154f,
+0.275138f, 0.275122f, 0.275106f, 0.27509f, 0.275074f, 0.275058f, 0.275042f, 0.275026f, 0.27501f, 0.274994f, 0.274978f, 0.274962f, 0.274946f, 0.27493f, 0.274914f, 0.274898f, 0.274882f, 0.274866f, 0.27485f, 0.274834f,
+0.274818f, 0.274802f, 0.274786f, 0.27477f, 0.274754f, 0.274738f, 0.274722f, 0.274706f, 0.27469f, 0.274674f, 0.274658f, 0.274642f, 0.274626f, 0.27461f, 0.274594f, 0.274578f, 0.274562f, 0.274546f, 0.27453f, 0.274514f,
+0.274498f, 0.274482f, 0.274466f, 0.27445f, 0.274434f, 0.274418f, 0.274402f, 0.274386f, 0.27437f, 0.274354f, 0.274338f, 0.274322f, 0.274306f, 0.27429f, 0.274274f, 0.274258f, 0.274242f, 0.274226f, 0.27421f, 0.274195f,
+0.274179f, 0.274163f, 0.274147f, 0.274131f, 0.274115f, 0.274099f, 0.274083f, 0.274067f, 0.274051f, 0.274035f, 0.274019f, 0.274003f, 0.273987f, 0.273971f, 0.273955f, 0.273939f, 0.273923f, 0.273907f, 0.273891f, 0.273875f,
+0.273859f, 0.273843f, 0.273827f, 0.273811f, 0.273795f, 0.273779f, 0.273763f, 0.273747f, 0.273731f, 0.273715f, 0.273699f, 0.273683f, 0.273667f, 0.273651f, 0.273636f, 0.27362f, 0.273604f, 0.273588f, 0.273572f, 0.273556f,
+0.27354f, 0.273524f, 0.273508f, 0.273492f, 0.273476f, 0.27346f, 0.273444f, 0.273428f, 0.273412f, 0.273396f, 0.27338f, 0.273364f, 0.273348f, 0.273332f, 0.273316f, 0.2733f, 0.273284f, 0.273268f, 0.273253f, 0.273237f,
+0.273221f, 0.273205f, 0.273189f, 0.273173f, 0.273157f, 0.273141f, 0.273125f, 0.273109f, 0.273093f, 0.273077f, 0.273061f, 0.273045f, 0.273029f, 0.273013f, 0.272997f, 0.272981f, 0.272965f, 0.272949f, 0.272934f, 0.272918f,
+0.272902f, 0.272886f, 0.27287f, 0.272854f, 0.272838f, 0.272822f, 0.272806f, 0.27279f, 0.272774f, 0.272758f, 0.272742f, 0.272726f, 0.27271f, 0.272694f, 0.272679f, 0.272663f, 0.272647f, 0.272631f, 0.272615f, 0.272599f,
+0.272583f, 0.272567f, 0.272551f, 0.272535f, 0.272519f, 0.272503f, 0.272487f, 0.272471f, 0.272455f, 0.27244f, 0.272424f, 0.272408f, 0.272392f, 0.272376f, 0.27236f, 0.272344f, 0.272328f, 0.272312f, 0.272296f, 0.27228f,
+0.272264f, 0.272248f, 0.272232f, 0.272217f, 0.272201f, 0.272185f, 0.272169f, 0.272153f, 0.272137f, 0.272121f, 0.272105f, 0.272089f, 0.272073f, 0.272057f, 0.272041f, 0.272026f, 0.27201f, 0.271994f, 0.271978f, 0.271962f,
+0.271946f, 0.27193f, 0.271914f, 0.271898f, 0.271882f, 0.271866f, 0.27185f, 0.271835f, 0.271819f, 0.271803f, 0.271787f, 0.271771f, 0.271755f, 0.271739f, 0.271723f, 0.271707f, 0.271691f, 0.271675f, 0.27166f, 0.271644f,
+0.271628f, 0.271612f, 0.271596f, 0.27158f, 0.271564f, 0.271548f, 0.271532f, 0.271516f, 0.271501f, 0.271485f, 0.271469f, 0.271453f, 0.271437f, 0.271421f, 0.271405f, 0.271389f, 0.271373f, 0.271357f, 0.271342f, 0.271326f,
+0.27131f, 0.271294f, 0.271278f, 0.271262f, 0.271246f, 0.27123f, 0.271214f, 0.271198f, 0.271183f, 0.271167f, 0.271151f, 0.271135f, 0.271119f, 0.271103f, 0.271087f, 0.271071f, 0.271055f, 0.27104f, 0.271024f, 0.271008f,
+0.270992f, 0.270976f, 0.27096f, 0.270944f, 0.270928f, 0.270912f, 0.270897f, 0.270881f, 0.270865f, 0.270849f, 0.270833f, 0.270817f, 0.270801f, 0.270785f, 0.27077f, 0.270754f, 0.270738f, 0.270722f, 0.270706f, 0.27069f,
+0.270674f, 0.270658f, 0.270643f, 0.270627f, 0.270611f, 0.270595f, 0.270579f, 0.270563f, 0.270547f, 0.270531f, 0.270516f, 0.2705f, 0.270484f, 0.270468f, 0.270452f, 0.270436f, 0.27042f, 0.270404f, 0.270389f, 0.270373f,
+0.270357f, 0.270341f, 0.270325f, 0.270309f, 0.270293f, 0.270278f, 0.270262f, 0.270246f, 0.27023f, 0.270214f, 0.270198f, 0.270182f, 0.270166f, 0.270151f, 0.270135f, 0.270119f, 0.270103f, 0.270087f, 0.270071f, 0.270055f,
+0.27004f, 0.270024f, 0.270008f, 0.269992f, 0.269976f, 0.26996f, 0.269944f, 0.269929f, 0.269913f, 0.269897f, 0.269881f, 0.269865f, 0.269849f, 0.269833f, 0.269818f, 0.269802f, 0.269786f, 0.26977f, 0.269754f, 0.269738f,
+0.269722f, 0.269707f, 0.269691f, 0.269675f, 0.269659f, 0.269643f, 0.269627f, 0.269612f, 0.269596f, 0.26958f, 0.269564f, 0.269548f, 0.269532f, 0.269516f, 0.269501f, 0.269485f, 0.269469f, 0.269453f, 0.269437f, 0.269421f,
+0.269406f, 0.26939f, 0.269374f, 0.269358f, 0.269342f, 0.269326f, 0.269311f, 0.269295f, 0.269279f, 0.269263f, 0.269247f, 0.269231f, 0.269216f, 0.2692f, 0.269184f, 0.269168f, 0.269152f, 0.269136f, 0.269121f, 0.269105f,
+0.269089f, 0.269073f, 0.269057f, 0.269041f, 0.269026f, 0.26901f, 0.268994f, 0.268978f, 0.268962f, 0.268946f, 0.268931f, 0.268915f, 0.268899f, 0.268883f, 0.268867f, 0.268851f, 0.268836f, 0.26882f, 0.268804f, 0.268788f,
+0.268772f, 0.268757f, 0.268741f, 0.268725f, 0.268709f, 0.268693f, 0.268677f, 0.268662f, 0.268646f, 0.26863f, 0.268614f, 0.268598f, 0.268583f, 0.268567f, 0.268551f, 0.268535f, 0.268519f, 0.268503f, 0.268488f, 0.268472f,
+0.268456f, 0.26844f, 0.268424f, 0.268409f, 0.268393f, 0.268377f, 0.268361f, 0.268345f, 0.26833f, 0.268314f, 0.268298f, 0.268282f, 0.268266f, 0.268251f, 0.268235f, 0.268219f, 0.268203f, 0.268187f, 0.268172f, 0.268156f,
+0.26814f, 0.268124f, 0.268108f, 0.268092f, 0.268077f, 0.268061f, 0.268045f, 0.268029f, 0.268013f, 0.267998f, 0.267982f, 0.267966f, 0.26795f, 0.267935f, 0.267919f, 0.267903f, 0.267887f, 0.267871f, 0.267856f, 0.26784f,
+0.267824f, 0.267808f, 0.267792f, 0.267777f, 0.267761f, 0.267745f, 0.267729f, 0.267713f, 0.267698f, 0.267682f, 0.267666f, 0.26765f, 0.267634f, 0.267619f, 0.267603f, 0.267587f, 0.267571f, 0.267556f, 0.26754f, 0.267524f,
+0.267508f, 0.267492f, 0.267477f, 0.267461f, 0.267445f, 0.267429f, 0.267413f, 0.267398f, 0.267382f, 0.267366f, 0.26735f, 0.267335f, 0.267319f, 0.267303f, 0.267287f, 0.267271f, 0.267256f, 0.26724f, 0.267224f, 0.267208f,
+0.267193f, 0.267177f, 0.267161f, 0.267145f, 0.267129f, 0.267114f, 0.267098f, 0.267082f, 0.267066f, 0.267051f, 0.267035f, 0.267019f, 0.267003f, 0.266988f, 0.266972f, 0.266956f, 0.26694f, 0.266924f, 0.266909f, 0.266893f,
+0.266877f, 0.266861f, 0.266846f, 0.26683f, 0.266814f, 0.266798f, 0.266783f, 0.266767f, 0.266751f, 0.266735f, 0.26672f, 0.266704f, 0.266688f, 0.266672f, 0.266657f, 0.266641f, 0.266625f, 0.266609f, 0.266593f, 0.266578f,
+0.266562f, 0.266546f, 0.26653f, 0.266515f, 0.266499f, 0.266483f, 0.266467f, 0.266452f, 0.266436f, 0.26642f, 0.266404f, 0.266389f, 0.266373f, 0.266357f, 0.266341f, 0.266326f, 0.26631f, 0.266294f, 0.266278f, 0.266263f,
+0.266247f, 0.266231f, 0.266215f, 0.2662f, 0.266184f, 0.266168f, 0.266152f, 0.266137f, 0.266121f, 0.266105f, 0.266089f, 0.266074f, 0.266058f, 0.266042f, 0.266027f, 0.266011f, 0.265995f, 0.265979f, 0.265964f, 0.265948f,
+0.265932f, 0.265916f, 0.265901f, 0.265885f, 0.265869f, 0.265853f, 0.265838f, 0.265822f, 0.265806f, 0.26579f, 0.265775f, 0.265759f, 0.265743f, 0.265728f, 0.265712f, 0.265696f, 0.26568f, 0.265665f, 0.265649f, 0.265633f,
+0.265617f, 0.265602f, 0.265586f, 0.26557f, 0.265555f, 0.265539f, 0.265523f, 0.265507f, 0.265492f, 0.265476f, 0.26546f, 0.265444f, 0.265429f, 0.265413f, 0.265397f, 0.265382f, 0.265366f, 0.26535f, 0.265334f, 0.265319f,
+0.265303f, 0.265287f, 0.265272f, 0.265256f, 0.26524f, 0.265224f, 0.265209f, 0.265193f, 0.265177f, 0.265162f, 0.265146f, 0.26513f, 0.265114f, 0.265099f, 0.265083f, 0.265067f, 0.265052f, 0.265036f, 0.26502f, 0.265004f,
+0.264989f, 0.264973f, 0.264957f, 0.264942f, 0.264926f, 0.26491f, 0.264894f, 0.264879f, 0.264863f, 0.264847f, 0.264832f, 0.264816f, 0.2648f, 0.264784f, 0.264769f, 0.264753f, 0.264737f, 0.264722f, 0.264706f, 0.26469f,
+0.264675f, 0.264659f, 0.264643f, 0.264627f, 0.264612f, 0.264596f, 0.26458f, 0.264565f, 0.264549f, 0.264533f, 0.264518f, 0.264502f, 0.264486f, 0.264471f, 0.264455f, 0.264439f, 0.264423f, 0.264408f, 0.264392f, 0.264376f,
+0.264361f, 0.264345f, 0.264329f, 0.264314f, 0.264298f, 0.264282f, 0.264267f, 0.264251f, 0.264235f, 0.264219f, 0.264204f, 0.264188f, 0.264172f, 0.264157f, 0.264141f, 0.264125f, 0.26411f, 0.264094f, 0.264078f, 0.264063f,
+0.264047f, 0.264031f, 0.264016f, 0.264f, 0.263984f, 0.263969f, 0.263953f, 0.263937f, 0.263922f, 0.263906f, 0.26389f, 0.263874f, 0.263859f, 0.263843f, 0.263827f, 0.263812f, 0.263796f, 0.26378f, 0.263765f, 0.263749f,
+0.263733f, 0.263718f, 0.263702f, 0.263686f, 0.263671f, 0.263655f, 0.263639f, 0.263624f, 0.263608f, 0.263592f, 0.263577f, 0.263561f, 0.263545f, 0.26353f, 0.263514f, 0.263498f, 0.263483f, 0.263467f, 0.263451f, 0.263436f,
+0.26342f, 0.263404f, 0.263389f, 0.263373f, 0.263357f, 0.263342f, 0.263326f, 0.26331f, 0.263295f, 0.263279f, 0.263263f, 0.263248f, 0.263232f, 0.263216f, 0.263201f, 0.263185f, 0.26317f, 0.263154f, 0.263138f, 0.263123f,
+0.263107f, 0.263091f, 0.263076f, 0.26306f, 0.263044f, 0.263029f, 0.263013f, 0.262997f, 0.262982f, 0.262966f, 0.26295f, 0.262935f, 0.262919f, 0.262903f, 0.262888f, 0.262872f, 0.262856f, 0.262841f, 0.262825f, 0.26281f,
+0.262794f, 0.262778f, 0.262763f, 0.262747f, 0.262731f, 0.262716f, 0.2627f, 0.262684f, 0.262669f, 0.262653f, 0.262637f, 0.262622f, 0.262606f, 0.262591f, 0.262575f, 0.262559f, 0.262544f, 0.262528f, 0.262512f, 0.262497f,
+0.262481f, 0.262465f, 0.26245f, 0.262434f, 0.262419f, 0.262403f, 0.262387f, 0.262372f, 0.262356f, 0.26234f, 0.262325f, 0.262309f, 0.262294f, 0.262278f, 0.262262f, 0.262247f, 0.262231f, 0.262215f, 0.2622f, 0.262184f,
+0.262169f, 0.262153f, 0.262137f, 0.262122f, 0.262106f, 0.26209f, 0.262075f, 0.262059f, 0.262044f, 0.262028f, 0.262012f, 0.261997f, 0.261981f, 0.261965f, 0.26195f, 0.261934f, 0.261919f, 0.261903f, 0.261887f, 0.261872f,
+0.261856f, 0.26184f, 0.261825f, 0.261809f, 0.261794f, 0.261778f, 0.261762f, 0.261747f, 0.261731f, 0.261716f, 0.2617f, 0.261684f, 0.261669f, 0.261653f, 0.261637f, 0.261622f, 0.261606f, 0.261591f, 0.261575f, 0.261559f,
+0.261544f, 0.261528f, 0.261513f, 0.261497f, 0.261481f, 0.261466f, 0.26145f, 0.261435f, 0.261419f, 0.261403f, 0.261388f, 0.261372f, 0.261357f, 0.261341f, 0.261325f, 0.26131f, 0.261294f, 0.261279f, 0.261263f, 0.261247f,
+0.261232f, 0.261216f, 0.261201f, 0.261185f, 0.261169f, 0.261154f, 0.261138f, 0.261123f, 0.261107f, 0.261091f, 0.261076f, 0.26106f, 0.261045f, 0.261029f, 0.261013f, 0.260998f, 0.260982f, 0.260967f, 0.260951f, 0.260936f,
+0.26092f, 0.260904f, 0.260889f, 0.260873f, 0.260858f, 0.260842f, 0.260826f, 0.260811f, 0.260795f, 0.26078f, 0.260764f, 0.260748f, 0.260733f, 0.260717f, 0.260702f, 0.260686f, 0.260671f, 0.260655f, 0.260639f, 0.260624f,
+0.260608f, 0.260593f, 0.260577f, 0.260562f, 0.260546f, 0.26053f, 0.260515f, 0.260499f, 0.260484f, 0.260468f, 0.260452f, 0.260437f, 0.260421f, 0.260406f, 0.26039f, 0.260375f, 0.260359f, 0.260343f, 0.260328f, 0.260312f,
+0.260297f, 0.260281f, 0.260266f, 0.26025f, 0.260234f, 0.260219f, 0.260203f, 0.260188f, 0.260172f, 0.260157f, 0.260141f, 0.260126f, 0.26011f, 0.260094f, 0.260079f, 0.260063f, 0.260048f, 0.260032f, 0.260017f, 0.260001f,
+0.259985f, 0.25997f, 0.259954f, 0.259939f, 0.259923f, 0.259908f, 0.259892f, 0.259877f, 0.259861f, 0.259845f, 0.25983f, 0.259814f, 0.259799f, 0.259783f, 0.259768f, 0.259752f, 0.259737f, 0.259721f, 0.259705f, 0.25969f,
+0.259674f, 0.259659f, 0.259643f, 0.259628f, 0.259612f, 0.259597f, 0.259581f, 0.259565f, 0.25955f, 0.259534f, 0.259519f, 0.259503f, 0.259488f, 0.259472f, 0.259457f, 0.259441f, 0.259426f, 0.25941f, 0.259394f, 0.259379f,
+0.259363f, 0.259348f, 0.259332f, 0.259317f, 0.259301f, 0.259286f, 0.25927f, 0.259255f, 0.259239f, 0.259224f, 0.259208f, 0.259192f, 0.259177f, 0.259161f, 0.259146f, 0.25913f, 0.259115f, 0.259099f, 0.259084f, 0.259068f,
+0.259053f, 0.259037f, 0.259022f, 0.259006f, 0.258991f, 0.258975f, 0.258959f, 0.258944f, 0.258928f, 0.258913f, 0.258897f, 0.258882f, 0.258866f, 0.258851f, 0.258835f, 0.25882f, 0.258804f, 0.258789f, 0.258773f, 0.258758f,
+0.258742f, 0.258727f, 0.258711f, 0.258696f, 0.25868f, 0.258664f, 0.258649f, 0.258633f, 0.258618f, 0.258602f, 0.258587f, 0.258571f, 0.258556f, 0.25854f, 0.258525f, 0.258509f, 0.258494f, 0.258478f, 0.258463f, 0.258447f,
+0.258432f, 0.258416f, 0.258401f, 0.258385f, 0.25837f, 0.258354f, 0.258339f, 0.258323f, 0.258308f, 0.258292f, 0.258277f, 0.258261f, 0.258246f, 0.25823f, 0.258215f, 0.258199f, 0.258184f, 0.258168f, 0.258153f, 0.258137f,
+0.258122f, 0.258106f, 0.258091f, 0.258075f, 0.25806f, 0.258044f, 0.258029f, 0.258013f, 0.257998f, 0.257982f, 0.257967f, 0.257951f, 0.257936f, 0.25792f, 0.257905f, 0.257889f, 0.257874f, 0.257858f, 0.257843f, 0.257827f,
+0.257812f, 0.257796f, 0.257781f, 0.257765f, 0.25775f, 0.257734f, 0.257719f, 0.257703f, 0.257688f, 0.257672f, 0.257657f, 0.257641f, 0.257626f, 0.25761f, 0.257595f, 0.257579f, 0.257564f, 0.257548f, 0.257533f, 0.257517f,
+0.257502f, 0.257486f, 0.257471f, 0.257455f, 0.25744f, 0.257424f, 0.257409f, 0.257393f, 0.257378f, 0.257362f, 0.257347f, 0.257331f, 0.257316f, 0.2573f, 0.257285f, 0.257269f, 0.257254f, 0.257239f, 0.257223f, 0.257208f,
+0.257192f, 0.257177f, 0.257161f, 0.257146f, 0.25713f, 0.257115f, 0.257099f, 0.257084f, 0.257068f, 0.257053f, 0.257037f, 0.257022f, 0.257006f, 0.256991f, 0.256975f, 0.25696f, 0.256945f, 0.256929f, 0.256914f, 0.256898f,
+0.256883f, 0.256867f, 0.256852f, 0.256836f, 0.256821f, 0.256805f, 0.25679f, 0.256774f, 0.256759f, 0.256743f, 0.256728f, 0.256713f, 0.256697f, 0.256682f, 0.256666f, 0.256651f, 0.256635f, 0.25662f, 0.256604f, 0.256589f,
+0.256573f, 0.256558f, 0.256542f, 0.256527f, 0.256512f, 0.256496f, 0.256481f, 0.256465f, 0.25645f, 0.256434f, 0.256419f, 0.256403f, 0.256388f, 0.256372f, 0.256357f, 0.256342f, 0.256326f, 0.256311f, 0.256295f, 0.25628f,
+0.256264f, 0.256249f, 0.256233f, 0.256218f, 0.256203f, 0.256187f, 0.256172f, 0.256156f, 0.256141f, 0.256125f, 0.25611f, 0.256094f, 0.256079f, 0.256064f, 0.256048f, 0.256033f, 0.256017f, 0.256002f, 0.255986f, 0.255971f,
+0.255955f, 0.25594f, 0.255925f, 0.255909f, 0.255894f, 0.255878f, 0.255863f, 0.255847f, 0.255832f, 0.255817f, 0.255801f, 0.255786f, 0.25577f, 0.255755f, 0.255739f, 0.255724f, 0.255708f, 0.255693f, 0.255678f, 0.255662f,
+0.255647f, 0.255631f, 0.255616f, 0.2556f, 0.255585f, 0.25557f, 0.255554f, 0.255539f, 0.255523f, 0.255508f, 0.255492f, 0.255477f, 0.255462f, 0.255446f, 0.255431f, 0.255415f, 0.2554f, 0.255385f, 0.255369f, 0.255354f,
+0.255338f, 0.255323f, 0.255307f, 0.255292f, 0.255277f, 0.255261f, 0.255246f, 0.25523f, 0.255215f, 0.255199f, 0.255184f, 0.255169f, 0.255153f, 0.255138f, 0.255122f, 0.255107f, 0.255092f, 0.255076f, 0.255061f, 0.255045f,
+0.25503f, 0.255015f, 0.254999f, 0.254984f, 0.254968f, 0.254953f, 0.254937f, 0.254922f, 0.254907f, 0.254891f, 0.254876f, 0.25486f, 0.254845f, 0.25483f, 0.254814f, 0.254799f, 0.254783f, 0.254768f, 0.254753f, 0.254737f,
+0.254722f, 0.254706f, 0.254691f, 0.254676f, 0.25466f, 0.254645f, 0.254629f, 0.254614f, 0.254599f, 0.254583f, 0.254568f, 0.254552f, 0.254537f, 0.254522f, 0.254506f, 0.254491f, 0.254475f, 0.25446f, 0.254445f, 0.254429f,
+0.254414f, 0.254398f, 0.254383f, 0.254368f, 0.254352f, 0.254337f, 0.254321f, 0.254306f, 0.254291f, 0.254275f, 0.25426f, 0.254245f, 0.254229f, 0.254214f, 0.254198f, 0.254183f, 0.254168f, 0.254152f, 0.254137f, 0.254121f,
+0.254106f, 0.254091f, 0.254075f, 0.25406f, 0.254045f, 0.254029f, 0.254014f, 0.253998f, 0.253983f, 0.253968f, 0.253952f, 0.253937f, 0.253922f, 0.253906f, 0.253891f, 0.253875f, 0.25386f, 0.253845f, 0.253829f, 0.253814f,
+0.253798f, 0.253783f, 0.253768f, 0.253752f, 0.253737f, 0.253722f, 0.253706f, 0.253691f, 0.253676f, 0.25366f, 0.253645f, 0.253629f, 0.253614f, 0.253599f, 0.253583f, 0.253568f, 0.253553f, 0.253537f, 0.253522f, 0.253506f,
+0.253491f, 0.253476f, 0.25346f, 0.253445f, 0.25343f, 0.253414f, 0.253399f, 0.253384f, 0.253368f, 0.253353f, 0.253337f, 0.253322f, 0.253307f, 0.253291f, 0.253276f, 0.253261f, 0.253245f, 0.25323f, 0.253215f, 0.253199f,
+0.253184f, 0.253169f, 0.253153f, 0.253138f, 0.253122f, 0.253107f, 0.253092f, 0.253076f, 0.253061f, 0.253046f, 0.25303f, 0.253015f, 0.253f, 0.252984f, 0.252969f, 0.252954f, 0.252938f, 0.252923f, 0.252908f, 0.252892f,
+0.252877f, 0.252862f, 0.252846f, 0.252831f, 0.252815f, 0.2528f, 0.252785f, 0.252769f, 0.252754f, 0.252739f, 0.252723f, 0.252708f, 0.252693f, 0.252677f, 0.252662f, 0.252647f, 0.252631f, 0.252616f, 0.252601f, 0.252585f,
+0.25257f, 0.252555f, 0.252539f, 0.252524f, 0.252509f, 0.252493f, 0.252478f, 0.252463f, 0.252447f, 0.252432f, 0.252417f, 0.252401f, 0.252386f, 0.252371f, 0.252355f, 0.25234f, 0.252325f, 0.252309f, 0.252294f, 0.252279f,
+0.252263f, 0.252248f, 0.252233f, 0.252217f, 0.252202f, 0.252187f, 0.252171f, 0.252156f, 0.252141f, 0.252125f, 0.25211f, 0.252095f, 0.25208f, 0.252064f, 0.252049f, 0.252034f, 0.252018f, 0.252003f, 0.251988f, 0.251972f,
+0.251957f, 0.251942f, 0.251926f, 0.251911f, 0.251896f, 0.25188f, 0.251865f, 0.25185f, 0.251834f, 0.251819f, 0.251804f, 0.251788f, 0.251773f, 0.251758f, 0.251743f, 0.251727f, 0.251712f, 0.251697f, 0.251681f, 0.251666f,
+0.251651f, 0.251635f, 0.25162f, 0.251605f, 0.251589f, 0.251574f, 0.251559f, 0.251544f, 0.251528f, 0.251513f, 0.251498f, 0.251482f, 0.251467f, 0.251452f, 0.251436f, 0.251421f, 0.251406f, 0.25139f, 0.251375f, 0.25136f,
+0.251345f, 0.251329f, 0.251314f, 0.251299f, 0.251283f, 0.251268f, 0.251253f, 0.251237f, 0.251222f, 0.251207f, 0.251192f, 0.251176f, 0.251161f, 0.251146f, 0.25113f, 0.251115f, 0.2511f, 0.251085f, 0.251069f, 0.251054f,
+0.251039f, 0.251023f, 0.251008f, 0.250993f, 0.250978f, 0.250962f, 0.250947f, 0.250932f, 0.250916f, 0.250901f, 0.250886f, 0.250871f, 0.250855f, 0.25084f, 0.250825f, 0.250809f, 0.250794f, 0.250779f, 0.250764f, 0.250748f,
+0.250733f, 0.250718f, 0.250702f, 0.250687f, 0.250672f, 0.250657f, 0.250641f, 0.250626f, 0.250611f, 0.250595f, 0.25058f, 0.250565f, 0.25055f, 0.250534f, 0.250519f, 0.250504f, 0.250489f, 0.250473f, 0.250458f, 0.250443f,
+0.250427f, 0.250412f, 0.250397f, 0.250382f, 0.250366f, 0.250351f, 0.250336f, 0.250321f, 0.250305f, 0.25029f, 0.250275f, 0.250259f, 0.250244f, 0.250229f, 0.250214f, 0.250198f, 0.250183f, 0.250168f, 0.250153f, 0.250137f,
+0.250122f, 0.250107f, 0.250092f, 0.250076f, 0.250061f, 0.250046f, 0.250031f, 0.250015f, 0.25f, 0.249985f, 0.249969f, 0.249954f, 0.249939f, 0.249924f, 0.249908f, 0.249893f, 0.249878f, 0.249863f, 0.249847f, 0.249832f,
+0.249817f, 0.249802f, 0.249786f, 0.249771f, 0.249756f, 0.249741f, 0.249725f, 0.24971f, 0.249695f, 0.24968f, 0.249664f, 0.249649f, 0.249634f, 0.249619f, 0.249603f, 0.249588f, 0.249573f, 0.249558f, 0.249542f, 0.249527f,
+0.249512f, 0.249497f, 0.249481f, 0.249466f, 0.249451f, 0.249436f, 0.249421f, 0.249405f, 0.24939f, 0.249375f, 0.24936f, 0.249344f, 0.249329f, 0.249314f, 0.249299f, 0.249283f, 0.249268f, 0.249253f, 0.249238f, 0.249222f,
+0.249207f, 0.249192f, 0.249177f, 0.249161f, 0.249146f, 0.249131f, 0.249116f, 0.249101f, 0.249085f, 0.24907f, 0.249055f, 0.24904f, 0.249024f, 0.249009f, 0.248994f, 0.248979f, 0.248963f, 0.248948f, 0.248933f, 0.248918f,
+0.248903f, 0.248887f, 0.248872f, 0.248857f, 0.248842f, 0.248826f, 0.248811f, 0.248796f, 0.248781f, 0.248766f, 0.24875f, 0.248735f, 0.24872f, 0.248705f, 0.248689f, 0.248674f, 0.248659f, 0.248644f, 0.248629f, 0.248613f,
+0.248598f, 0.248583f, 0.248568f, 0.248553f, 0.248537f, 0.248522f, 0.248507f, 0.248492f, 0.248476f, 0.248461f, 0.248446f, 0.248431f, 0.248416f, 0.2484f, 0.248385f, 0.24837f, 0.248355f, 0.24834f, 0.248324f, 0.248309f,
+0.248294f, 0.248279f, 0.248264f, 0.248248f, 0.248233f, 0.248218f, 0.248203f, 0.248188f, 0.248172f, 0.248157f, 0.248142f, 0.248127f, 0.248111f, 0.248096f, 0.248081f, 0.248066f, 0.248051f, 0.248035f, 0.24802f, 0.248005f,
+0.24799f, 0.247975f, 0.24796f, 0.247944f, 0.247929f, 0.247914f, 0.247899f, 0.247884f, 0.247868f, 0.247853f, 0.247838f, 0.247823f, 0.247808f, 0.247792f, 0.247777f, 0.247762f, 0.247747f, 0.247732f, 0.247716f, 0.247701f,
+0.247686f, 0.247671f, 0.247656f, 0.24764f, 0.247625f, 0.24761f, 0.247595f, 0.24758f, 0.247565f, 0.247549f, 0.247534f, 0.247519f, 0.247504f, 0.247489f, 0.247473f, 0.247458f, 0.247443f, 0.247428f, 0.247413f, 0.247398f,
+0.247382f, 0.247367f, 0.247352f, 0.247337f, 0.247322f, 0.247306f, 0.247291f, 0.247276f, 0.247261f, 0.247246f, 0.247231f, 0.247215f, 0.2472f, 0.247185f, 0.24717f, 0.247155f, 0.24714f, 0.247124f, 0.247109f, 0.247094f,
+0.247079f, 0.247064f, 0.247049f, 0.247033f, 0.247018f, 0.247003f, 0.246988f, 0.246973f, 0.246958f, 0.246942f, 0.246927f, 0.246912f, 0.246897f, 0.246882f, 0.246867f, 0.246851f, 0.246836f, 0.246821f, 0.246806f, 0.246791f,
+0.246776f, 0.24676f, 0.246745f, 0.24673f, 0.246715f, 0.2467f, 0.246685f, 0.246669f, 0.246654f, 0.246639f, 0.246624f, 0.246609f, 0.246594f, 0.246579f, 0.246563f, 0.246548f, 0.246533f, 0.246518f, 0.246503f, 0.246488f,
+0.246472f, 0.246457f, 0.246442f, 0.246427f, 0.246412f, 0.246397f, 0.246382f, 0.246366f, 0.246351f, 0.246336f, 0.246321f, 0.246306f, 0.246291f, 0.246276f, 0.24626f, 0.246245f, 0.24623f, 0.246215f, 0.2462f, 0.246185f,
+0.24617f, 0.246154f, 0.246139f, 0.246124f, 0.246109f, 0.246094f, 0.246079f, 0.246064f, 0.246048f, 0.246033f, 0.246018f, 0.246003f, 0.245988f, 0.245973f, 0.245958f, 0.245943f, 0.245927f, 0.245912f, 0.245897f, 0.245882f,
+0.245867f, 0.245852f, 0.245837f, 0.245821f, 0.245806f, 0.245791f, 0.245776f, 0.245761f, 0.245746f, 0.245731f, 0.245716f, 0.2457f, 0.245685f, 0.24567f, 0.245655f, 0.24564f, 0.245625f, 0.24561f, 0.245595f, 0.245579f,
+0.245564f, 0.245549f, 0.245534f, 0.245519f, 0.245504f, 0.245489f, 0.245474f, 0.245458f, 0.245443f, 0.245428f, 0.245413f, 0.245398f, 0.245383f, 0.245368f, 0.245353f, 0.245337f, 0.245322f, 0.245307f, 0.245292f, 0.245277f,
+0.245262f, 0.245247f, 0.245232f, 0.245217f, 0.245201f, 0.245186f, 0.245171f, 0.245156f, 0.245141f, 0.245126f, 0.245111f, 0.245096f, 0.245081f, 0.245065f, 0.24505f, 0.245035f, 0.24502f, 0.245005f, 0.24499f, 0.244975f,
+0.24496f, 0.244945f, 0.24493f, 0.244914f, 0.244899f, 0.244884f, 0.244869f, 0.244854f, 0.244839f, 0.244824f, 0.244809f, 0.244794f, 0.244779f, 0.244763f, 0.244748f, 0.244733f, 0.244718f, 0.244703f, 0.244688f, 0.244673f,
+0.244658f, 0.244643f, 0.244628f, 0.244612f, 0.244597f, 0.244582f, 0.244567f, 0.244552f, 0.244537f, 0.244522f, 0.244507f, 0.244492f, 0.244477f, 0.244462f, 0.244446f, 0.244431f, 0.244416f, 0.244401f, 0.244386f, 0.244371f,
+0.244356f, 0.244341f, 0.244326f, 0.244311f, 0.244296f, 0.244281f, 0.244265f, 0.24425f, 0.244235f, 0.24422f, 0.244205f, 0.24419f, 0.244175f, 0.24416f, 0.244145f, 0.24413f, 0.244115f, 0.2441f, 0.244084f, 0.244069f,
+0.244054f, 0.244039f, 0.244024f, 0.244009f, 0.243994f, 0.243979f, 0.243964f, 0.243949f, 0.243934f, 0.243919f, 0.243904f, 0.243889f, 0.243873f, 0.243858f, 0.243843f, 0.243828f, 0.243813f, 0.243798f, 0.243783f, 0.243768f,
+0.243753f, 0.243738f, 0.243723f, 0.243708f, 0.243693f, 0.243678f, 0.243663f, 0.243647f, 0.243632f, 0.243617f, 0.243602f, 0.243587f, 0.243572f, 0.243557f, 0.243542f, 0.243527f, 0.243512f, 0.243497f, 0.243482f, 0.243467f,
+0.243452f, 0.243437f, 0.243422f, 0.243406f, 0.243391f, 0.243376f, 0.243361f, 0.243346f, 0.243331f, 0.243316f, 0.243301f, 0.243286f, 0.243271f, 0.243256f, 0.243241f, 0.243226f, 0.243211f, 0.243196f, 0.243181f, 0.243166f,
+0.243151f, 0.243136f, 0.24312f, 0.243105f, 0.24309f, 0.243075f, 0.24306f, 0.243045f, 0.24303f, 0.243015f, 0.243f, 0.242985f, 0.24297f, 0.242955f, 0.24294f, 0.242925f, 0.24291f, 0.242895f, 0.24288f, 0.242865f,
+0.24285f, 0.242835f, 0.24282f, 0.242805f, 0.24279f, 0.242775f, 0.242759f, 0.242744f, 0.242729f, 0.242714f, 0.242699f, 0.242684f, 0.242669f, 0.242654f, 0.242639f, 0.242624f, 0.242609f, 0.242594f, 0.242579f, 0.242564f,
+0.242549f, 0.242534f, 0.242519f, 0.242504f, 0.242489f, 0.242474f, 0.242459f, 0.242444f, 0.242429f, 0.242414f, 0.242399f, 0.242384f, 0.242369f, 0.242354f, 0.242339f, 0.242324f, 0.242309f, 0.242294f, 0.242279f, 0.242264f,
+0.242249f, 0.242234f, 0.242218f, 0.242203f, 0.242188f, 0.242173f, 0.242158f, 0.242143f, 0.242128f, 0.242113f, 0.242098f, 0.242083f, 0.242068f, 0.242053f, 0.242038f, 0.242023f, 0.242008f, 0.241993f, 0.241978f, 0.241963f,
+0.241948f, 0.241933f, 0.241918f, 0.241903f, 0.241888f, 0.241873f, 0.241858f, 0.241843f, 0.241828f, 0.241813f, 0.241798f, 0.241783f, 0.241768f, 0.241753f, 0.241738f, 0.241723f, 0.241708f, 0.241693f, 0.241678f, 0.241663f,
+0.241648f, 0.241633f, 0.241618f, 0.241603f, 0.241588f, 0.241573f, 0.241558f, 0.241543f, 0.241528f, 0.241513f, 0.241498f, 0.241483f, 0.241468f, 0.241453f, 0.241438f, 0.241423f, 0.241408f, 0.241393f, 0.241378f, 0.241363f,
+0.241348f, 0.241333f, 0.241318f, 0.241303f, 0.241288f, 0.241273f, 0.241258f, 0.241243f, 0.241228f, 0.241213f, 0.241198f, 0.241183f, 0.241168f, 0.241153f, 0.241138f, 0.241123f, 0.241108f, 0.241093f, 0.241078f, 0.241063f,
+0.241048f, 0.241033f, 0.241018f, 0.241003f, 0.240988f, 0.240973f, 0.240959f, 0.240944f, 0.240929f, 0.240914f, 0.240899f, 0.240884f, 0.240869f, 0.240854f, 0.240839f, 0.240824f, 0.240809f, 0.240794f, 0.240779f, 0.240764f,
+0.240749f, 0.240734f, 0.240719f, 0.240704f, 0.240689f, 0.240674f, 0.240659f, 0.240644f, 0.240629f, 0.240614f, 0.240599f, 0.240584f, 0.240569f, 0.240554f, 0.240539f, 0.240524f, 0.240509f, 0.240494f, 0.240479f, 0.240464f,
+0.240449f, 0.240434f, 0.24042f, 0.240405f, 0.24039f, 0.240375f, 0.24036f, 0.240345f, 0.24033f, 0.240315f, 0.2403f, 0.240285f, 0.24027f, 0.240255f, 0.24024f, 0.240225f, 0.24021f, 0.240195f, 0.24018f, 0.240165f,
+0.24015f, 0.240135f, 0.24012f, 0.240105f, 0.24009f, 0.240075f, 0.240061f, 0.240046f, 0.240031f, 0.240016f, 0.240001f, 0.239986f, 0.239971f, 0.239956f, 0.239941f, 0.239926f, 0.239911f, 0.239896f, 0.239881f, 0.239866f,
+0.239851f, 0.239836f, 0.239821f, 0.239806f, 0.239791f, 0.239777f, 0.239762f, 0.239747f, 0.239732f, 0.239717f, 0.239702f, 0.239687f, 0.239672f, 0.239657f, 0.239642f, 0.239627f, 0.239612f, 0.239597f, 0.239582f, 0.239567f,
+0.239552f, 0.239537f, 0.239523f, 0.239508f, 0.239493f, 0.239478f, 0.239463f, 0.239448f, 0.239433f, 0.239418f, 0.239403f, 0.239388f, 0.239373f, 0.239358f, 0.239343f, 0.239328f, 0.239313f, 0.239299f, 0.239284f, 0.239269f,
+0.239254f, 0.239239f, 0.239224f, 0.239209f, 0.239194f, 0.239179f, 0.239164f, 0.239149f, 0.239134f, 0.239119f, 0.239105f, 0.23909f, 0.239075f, 0.23906f, 0.239045f, 0.23903f, 0.239015f, 0.239f, 0.238985f, 0.23897f,
+0.238955f, 0.23894f, 0.238925f, 0.238911f, 0.238896f, 0.238881f, 0.238866f, 0.238851f, 0.238836f, 0.238821f, 0.238806f, 0.238791f, 0.238776f, 0.238761f, 0.238747f, 0.238732f, 0.238717f, 0.238702f, 0.238687f, 0.238672f,
+0.238657f, 0.238642f, 0.238627f, 0.238612f, 0.238597f, 0.238583f, 0.238568f, 0.238553f, 0.238538f, 0.238523f, 0.238508f, 0.238493f, 0.238478f, 0.238463f, 0.238448f, 0.238433f, 0.238419f, 0.238404f, 0.238389f, 0.238374f,
+0.238359f, 0.238344f, 0.238329f, 0.238314f, 0.238299f, 0.238284f, 0.23827f, 0.238255f, 0.23824f, 0.238225f, 0.23821f, 0.238195f, 0.23818f, 0.238165f, 0.23815f, 0.238136f, 0.238121f, 0.238106f, 0.238091f, 0.238076f,
+0.238061f, 0.238046f, 0.238031f, 0.238016f, 0.238002f, 0.237987f, 0.237972f, 0.237957f, 0.237942f, 0.237927f, 0.237912f, 0.237897f, 0.237882f, 0.237868f, 0.237853f, 0.237838f, 0.237823f, 0.237808f, 0.237793f, 0.237778f,
+0.237763f, 0.237748f, 0.237734f, 0.237719f, 0.237704f, 0.237689f, 0.237674f, 0.237659f, 0.237644f, 0.237629f, 0.237615f, 0.2376f, 0.237585f, 0.23757f, 0.237555f, 0.23754f, 0.237525f, 0.23751f, 0.237496f, 0.237481f,
+0.237466f, 0.237451f, 0.237436f, 0.237421f, 0.237406f, 0.237392f, 0.237377f, 0.237362f, 0.237347f, 0.237332f, 0.237317f, 0.237302f, 0.237287f, 0.237273f, 0.237258f, 0.237243f, 0.237228f, 0.237213f, 0.237198f, 0.237183f,
+0.237169f, 0.237154f, 0.237139f, 0.237124f, 0.237109f, 0.237094f, 0.237079f, 0.237065f, 0.23705f, 0.237035f, 0.23702f, 0.237005f, 0.23699f, 0.236975f, 0.236961f, 0.236946f, 0.236931f, 0.236916f, 0.236901f, 0.236886f,
+0.236871f, 0.236857f, 0.236842f, 0.236827f, 0.236812f, 0.236797f, 0.236782f, 0.236767f, 0.236753f, 0.236738f, 0.236723f, 0.236708f, 0.236693f, 0.236678f, 0.236663f, 0.236649f, 0.236634f, 0.236619f, 0.236604f, 0.236589f,
+0.236574f, 0.23656f, 0.236545f, 0.23653f, 0.236515f, 0.2365f, 0.236485f, 0.236471f, 0.236456f, 0.236441f, 0.236426f, 0.236411f, 0.236396f, 0.236381f, 0.236367f, 0.236352f, 0.236337f, 0.236322f, 0.236307f, 0.236292f,
+0.236278f, 0.236263f, 0.236248f, 0.236233f, 0.236218f, 0.236203f, 0.236189f, 0.236174f, 0.236159f, 0.236144f, 0.236129f, 0.236114f, 0.2361f, 0.236085f, 0.23607f, 0.236055f, 0.23604f, 0.236026f, 0.236011f, 0.235996f,
+0.235981f, 0.235966f, 0.235951f, 0.235937f, 0.235922f, 0.235907f, 0.235892f, 0.235877f, 0.235862f, 0.235848f, 0.235833f, 0.235818f, 0.235803f, 0.235788f, 0.235774f, 0.235759f, 0.235744f, 0.235729f, 0.235714f, 0.235699f,
+0.235685f, 0.23567f, 0.235655f, 0.23564f, 0.235625f, 0.235611f, 0.235596f, 0.235581f, 0.235566f, 0.235551f, 0.235537f, 0.235522f, 0.235507f, 0.235492f, 0.235477f, 0.235462f, 0.235448f, 0.235433f, 0.235418f, 0.235403f,
+0.235388f, 0.235374f, 0.235359f, 0.235344f, 0.235329f, 0.235314f, 0.2353f, 0.235285f, 0.23527f, 0.235255f, 0.23524f, 0.235226f, 0.235211f, 0.235196f, 0.235181f, 0.235166f, 0.235152f, 0.235137f, 0.235122f, 0.235107f,
+0.235092f, 0.235078f, 0.235063f, 0.235048f, 0.235033f, 0.235018f, 0.235004f, 0.234989f, 0.234974f, 0.234959f, 0.234944f, 0.23493f, 0.234915f, 0.2349f, 0.234885f, 0.234871f, 0.234856f, 0.234841f, 0.234826f, 0.234811f,
+0.234797f, 0.234782f, 0.234767f, 0.234752f, 0.234737f, 0.234723f, 0.234708f, 0.234693f, 0.234678f, 0.234663f, 0.234649f, 0.234634f, 0.234619f, 0.234604f, 0.23459f, 0.234575f, 0.23456f, 0.234545f, 0.23453f, 0.234516f,
+0.234501f, 0.234486f, 0.234471f, 0.234457f, 0.234442f, 0.234427f, 0.234412f, 0.234397f, 0.234383f, 0.234368f, 0.234353f, 0.234338f, 0.234324f, 0.234309f, 0.234294f, 0.234279f, 0.234265f, 0.23425f, 0.234235f, 0.23422f,
+0.234205f, 0.234191f, 0.234176f, 0.234161f, 0.234146f, 0.234132f, 0.234117f, 0.234102f, 0.234087f, 0.234073f, 0.234058f, 0.234043f, 0.234028f, 0.234013f, 0.233999f, 0.233984f, 0.233969f, 0.233954f, 0.23394f, 0.233925f,
+0.23391f, 0.233895f, 0.233881f, 0.233866f, 0.233851f, 0.233836f, 0.233822f, 0.233807f, 0.233792f, 0.233777f, 0.233763f, 0.233748f, 0.233733f, 0.233718f, 0.233704f, 0.233689f, 0.233674f, 0.233659f, 0.233645f, 0.23363f,
+0.233615f, 0.2336f, 0.233586f, 0.233571f, 0.233556f, 0.233541f, 0.233527f, 0.233512f, 0.233497f, 0.233482f, 0.233468f, 0.233453f, 0.233438f, 0.233423f, 0.233409f, 0.233394f, 0.233379f, 0.233364f, 0.23335f, 0.233335f,
+0.23332f, 0.233305f, 0.233291f, 0.233276f, 0.233261f, 0.233246f, 0.233232f, 0.233217f, 0.233202f, 0.233187f, 0.233173f, 0.233158f, 0.233143f, 0.233129f, 0.233114f, 0.233099f, 0.233084f, 0.23307f, 0.233055f, 0.23304f,
+0.233025f, 0.233011f, 0.232996f, 0.232981f, 0.232966f, 0.232952f, 0.232937f, 0.232922f, 0.232908f, 0.232893f, 0.232878f, 0.232863f, 0.232849f, 0.232834f, 0.232819f, 0.232804f, 0.23279f, 0.232775f, 0.23276f, 0.232746f,
+0.232731f, 0.232716f, 0.232701f, 0.232687f, 0.232672f, 0.232657f, 0.232643f, 0.232628f, 0.232613f, 0.232598f, 0.232584f, 0.232569f, 0.232554f, 0.23254f, 0.232525f, 0.23251f, 0.232495f, 0.232481f, 0.232466f, 0.232451f,
+0.232437f, 0.232422f, 0.232407f, 0.232392f, 0.232378f, 0.232363f, 0.232348f, 0.232334f, 0.232319f, 0.232304f, 0.232289f, 0.232275f, 0.23226f, 0.232245f, 0.232231f, 0.232216f, 0.232201f, 0.232186f, 0.232172f, 0.232157f,
+0.232142f, 0.232128f, 0.232113f, 0.232098f, 0.232084f, 0.232069f, 0.232054f, 0.232039f, 0.232025f, 0.23201f, 0.231995f, 0.231981f, 0.231966f, 0.231951f, 0.231937f, 0.231922f, 0.231907f, 0.231892f, 0.231878f, 0.231863f,
+0.231848f, 0.231834f, 0.231819f, 0.231804f, 0.23179f, 0.231775f, 0.23176f, 0.231746f, 0.231731f, 0.231716f, 0.231701f, 0.231687f, 0.231672f, 0.231657f, 0.231643f, 0.231628f, 0.231613f, 0.231599f, 0.231584f, 0.231569f,
+0.231555f, 0.23154f, 0.231525f, 0.231511f, 0.231496f, 0.231481f, 0.231466f, 0.231452f, 0.231437f, 0.231422f, 0.231408f, 0.231393f, 0.231378f, 0.231364f, 0.231349f, 0.231334f, 0.23132f, 0.231305f, 0.23129f, 0.231276f,
+0.231261f, 0.231246f, 0.231232f, 0.231217f, 0.231202f, 0.231188f, 0.231173f, 0.231158f, 0.231144f, 0.231129f, 0.231114f, 0.2311f, 0.231085f, 0.23107f, 0.231056f, 0.231041f, 0.231026f, 0.231012f, 0.230997f, 0.230982f,
+0.230968f, 0.230953f, 0.230938f, 0.230924f, 0.230909f, 0.230894f, 0.23088f, 0.230865f, 0.23085f, 0.230836f, 0.230821f, 0.230806f, 0.230792f, 0.230777f, 0.230762f, 0.230748f, 0.230733f, 0.230718f, 0.230704f, 0.230689f,
+0.230674f, 0.23066f, 0.230645f, 0.23063f, 0.230616f, 0.230601f, 0.230586f, 0.230572f, 0.230557f, 0.230542f, 0.230528f, 0.230513f, 0.230498f, 0.230484f, 0.230469f, 0.230454f, 0.23044f, 0.230425f, 0.230411f, 0.230396f,
+0.230381f, 0.230367f, 0.230352f, 0.230337f, 0.230323f, 0.230308f, 0.230293f, 0.230279f, 0.230264f, 0.230249f, 0.230235f, 0.23022f, 0.230206f, 0.230191f, 0.230176f, 0.230162f, 0.230147f, 0.230132f, 0.230118f, 0.230103f,
+0.230088f, 0.230074f, 0.230059f, 0.230044f, 0.23003f, 0.230015f, 0.230001f, 0.229986f, 0.229971f, 0.229957f, 0.229942f, 0.229927f, 0.229913f, 0.229898f, 0.229883f, 0.229869f, 0.229854f, 0.22984f, 0.229825f, 0.22981f,
+0.229796f, 0.229781f, 0.229766f, 0.229752f, 0.229737f, 0.229723f, 0.229708f, 0.229693f, 0.229679f, 0.229664f, 0.229649f, 0.229635f, 0.22962f, 0.229606f, 0.229591f, 0.229576f, 0.229562f, 0.229547f, 0.229532f, 0.229518f,
+0.229503f, 0.229489f, 0.229474f, 0.229459f, 0.229445f, 0.22943f, 0.229416f, 0.229401f, 0.229386f, 0.229372f, 0.229357f, 0.229342f, 0.229328f, 0.229313f, 0.229299f, 0.229284f, 0.229269f, 0.229255f, 0.22924f, 0.229226f,
+0.229211f, 0.229196f, 0.229182f, 0.229167f, 0.229152f, 0.229138f, 0.229123f, 0.229109f, 0.229094f, 0.229079f, 0.229065f, 0.22905f, 0.229036f, 0.229021f, 0.229006f, 0.228992f, 0.228977f, 0.228963f, 0.228948f, 0.228933f,
+0.228919f, 0.228904f, 0.22889f, 0.228875f, 0.22886f, 0.228846f, 0.228831f, 0.228817f, 0.228802f, 0.228787f, 0.228773f, 0.228758f, 0.228744f, 0.228729f, 0.228714f, 0.2287f, 0.228685f, 0.228671f, 0.228656f, 0.228641f,
+0.228627f, 0.228612f, 0.228598f, 0.228583f, 0.228568f, 0.228554f, 0.228539f, 0.228525f, 0.22851f, 0.228496f, 0.228481f, 0.228466f, 0.228452f, 0.228437f, 0.228423f, 0.228408f, 0.228393f, 0.228379f, 0.228364f, 0.22835f,
+0.228335f, 0.228321f, 0.228306f, 0.228291f, 0.228277f, 0.228262f, 0.228248f, 0.228233f, 0.228218f, 0.228204f, 0.228189f, 0.228175f, 0.22816f, 0.228146f, 0.228131f, 0.228116f, 0.228102f, 0.228087f, 0.228073f, 0.228058f,
+0.228044f, 0.228029f, 0.228014f, 0.228f, 0.227985f, 0.227971f, 0.227956f, 0.227942f, 0.227927f, 0.227912f, 0.227898f, 0.227883f, 0.227869f, 0.227854f, 0.22784f, 0.227825f, 0.22781f, 0.227796f, 0.227781f, 0.227767f,
+0.227752f, 0.227738f, 0.227723f, 0.227708f, 0.227694f, 0.227679f, 0.227665f, 0.22765f, 0.227636f, 0.227621f, 0.227607f, 0.227592f, 0.227577f, 0.227563f, 0.227548f, 0.227534f, 0.227519f, 0.227505f, 0.22749f, 0.227476f,
+0.227461f, 0.227446f, 0.227432f, 0.227417f, 0.227403f, 0.227388f, 0.227374f, 0.227359f, 0.227345f, 0.22733f, 0.227315f, 0.227301f, 0.227286f, 0.227272f, 0.227257f, 0.227243f, 0.227228f, 0.227214f, 0.227199f, 0.227185f,
+0.22717f, 0.227155f, 0.227141f, 0.227126f, 0.227112f, 0.227097f, 0.227083f, 0.227068f, 0.227054f, 0.227039f, 0.227025f, 0.22701f, 0.226995f, 0.226981f, 0.226966f, 0.226952f, 0.226937f, 0.226923f, 0.226908f, 0.226894f,
+0.226879f, 0.226865f, 0.22685f, 0.226836f, 0.226821f, 0.226807f, 0.226792f, 0.226777f, 0.226763f, 0.226748f, 0.226734f, 0.226719f, 0.226705f, 0.22669f, 0.226676f, 0.226661f, 0.226647f, 0.226632f, 0.226618f, 0.226603f,
+0.226589f, 0.226574f, 0.226559f, 0.226545f, 0.22653f, 0.226516f, 0.226501f, 0.226487f, 0.226472f, 0.226458f, 0.226443f, 0.226429f, 0.226414f, 0.2264f, 0.226385f, 0.226371f, 0.226356f, 0.226342f, 0.226327f, 0.226313f,
+0.226298f, 0.226284f, 0.226269f, 0.226255f, 0.22624f, 0.226226f, 0.226211f, 0.226196f, 0.226182f, 0.226167f, 0.226153f, 0.226138f, 0.226124f, 0.226109f, 0.226095f, 0.22608f, 0.226066f, 0.226051f, 0.226037f, 0.226022f,
+0.226008f, 0.225993f, 0.225979f, 0.225964f, 0.22595f, 0.225935f, 0.225921f, 0.225906f, 0.225892f, 0.225877f, 0.225863f, 0.225848f, 0.225834f, 0.225819f, 0.225805f, 0.22579f, 0.225776f, 0.225761f, 0.225747f, 0.225732f,
+0.225718f, 0.225703f, 0.225689f, 0.225674f, 0.22566f, 0.225645f, 0.225631f, 0.225616f, 0.225602f, 0.225587f, 0.225573f, 0.225558f, 0.225544f, 0.225529f, 0.225515f, 0.2255f, 0.225486f, 0.225471f, 0.225457f, 0.225442f,
+0.225428f, 0.225413f, 0.225399f, 0.225384f, 0.22537f, 0.225355f, 0.225341f, 0.225326f, 0.225312f, 0.225298f, 0.225283f, 0.225269f, 0.225254f, 0.22524f, 0.225225f, 0.225211f, 0.225196f, 0.225182f, 0.225167f, 0.225153f,
+0.225138f, 0.225124f, 0.225109f, 0.225095f, 0.22508f, 0.225066f, 0.225051f, 0.225037f, 0.225022f, 0.225008f, 0.224993f, 0.224979f, 0.224964f, 0.22495f, 0.224936f, 0.224921f, 0.224907f, 0.224892f, 0.224878f, 0.224863f,
+0.224849f, 0.224834f, 0.22482f, 0.224805f, 0.224791f, 0.224776f, 0.224762f, 0.224747f, 0.224733f, 0.224718f, 0.224704f, 0.22469f, 0.224675f, 0.224661f, 0.224646f, 0.224632f, 0.224617f, 0.224603f, 0.224588f, 0.224574f,
+0.224559f, 0.224545f, 0.22453f, 0.224516f, 0.224502f, 0.224487f, 0.224473f, 0.224458f, 0.224444f, 0.224429f, 0.224415f, 0.2244f, 0.224386f, 0.224371f, 0.224357f, 0.224342f, 0.224328f, 0.224314f, 0.224299f, 0.224285f,
+0.22427f, 0.224256f, 0.224241f, 0.224227f, 0.224212f, 0.224198f, 0.224184f, 0.224169f, 0.224155f, 0.22414f, 0.224126f, 0.224111f, 0.224097f, 0.224082f, 0.224068f, 0.224053f, 0.224039f, 0.224025f, 0.22401f, 0.223996f,
+0.223981f, 0.223967f, 0.223952f, 0.223938f, 0.223924f, 0.223909f, 0.223895f, 0.22388f, 0.223866f, 0.223851f, 0.223837f, 0.223822f, 0.223808f, 0.223794f, 0.223779f, 0.223765f, 0.22375f, 0.223736f, 0.223721f, 0.223707f,
+0.223693f, 0.223678f, 0.223664f, 0.223649f, 0.223635f, 0.22362f, 0.223606f, 0.223591f, 0.223577f, 0.223563f, 0.223548f, 0.223534f, 0.223519f, 0.223505f, 0.22349f, 0.223476f, 0.223462f, 0.223447f, 0.223433f, 0.223418f,
+0.223404f, 0.22339f, 0.223375f, 0.223361f, 0.223346f, 0.223332f, 0.223317f, 0.223303f, 0.223289f, 0.223274f, 0.22326f, 0.223245f, 0.223231f, 0.223216f, 0.223202f, 0.223188f, 0.223173f, 0.223159f, 0.223144f, 0.22313f,
+0.223116f, 0.223101f, 0.223087f, 0.223072f, 0.223058f, 0.223043f, 0.223029f, 0.223015f, 0.223f, 0.222986f, 0.222971f, 0.222957f, 0.222943f, 0.222928f, 0.222914f, 0.222899f, 0.222885f, 0.222871f, 0.222856f, 0.222842f,
+0.222827f, 0.222813f, 0.222799f, 0.222784f, 0.22277f, 0.222755f, 0.222741f, 0.222727f, 0.222712f, 0.222698f, 0.222683f, 0.222669f, 0.222654f, 0.22264f, 0.222626f, 0.222611f, 0.222597f, 0.222583f, 0.222568f, 0.222554f,
+0.222539f, 0.222525f, 0.222511f, 0.222496f, 0.222482f, 0.222467f, 0.222453f, 0.222439f, 0.222424f, 0.22241f, 0.222395f, 0.222381f, 0.222367f, 0.222352f, 0.222338f, 0.222323f, 0.222309f, 0.222295f, 0.22228f, 0.222266f,
+0.222251f, 0.222237f, 0.222223f, 0.222208f, 0.222194f, 0.22218f, 0.222165f, 0.222151f, 0.222136f, 0.222122f, 0.222108f, 0.222093f, 0.222079f, 0.222064f, 0.22205f, 0.222036f, 0.222021f, 0.222007f, 0.221993f, 0.221978f,
+0.221964f, 0.221949f, 0.221935f, 0.221921f, 0.221906f, 0.221892f, 0.221878f, 0.221863f, 0.221849f, 0.221834f, 0.22182f, 0.221806f, 0.221791f, 0.221777f, 0.221763f, 0.221748f, 0.221734f, 0.221719f, 0.221705f, 0.221691f,
+0.221676f, 0.221662f, 0.221648f, 0.221633f, 0.221619f, 0.221605f, 0.22159f, 0.221576f, 0.221561f, 0.221547f, 0.221533f, 0.221518f, 0.221504f, 0.22149f, 0.221475f, 0.221461f, 0.221447f, 0.221432f, 0.221418f, 0.221403f,
+0.221389f, 0.221375f, 0.22136f, 0.221346f, 0.221332f, 0.221317f, 0.221303f, 0.221289f, 0.221274f, 0.22126f, 0.221246f, 0.221231f, 0.221217f, 0.221202f, 0.221188f, 0.221174f, 0.221159f, 0.221145f, 0.221131f, 0.221116f,
+0.221102f, 0.221088f, 0.221073f, 0.221059f, 0.221045f, 0.22103f, 0.221016f, 0.221002f, 0.220987f, 0.220973f, 0.220959f, 0.220944f, 0.22093f, 0.220915f, 0.220901f, 0.220887f, 0.220872f, 0.220858f, 0.220844f, 0.220829f,
+0.220815f, 0.220801f, 0.220786f, 0.220772f, 0.220758f, 0.220743f, 0.220729f, 0.220715f, 0.2207f, 0.220686f, 0.220672f, 0.220657f, 0.220643f, 0.220629f, 0.220614f, 0.2206f, 0.220586f, 0.220571f, 0.220557f, 0.220543f,
+0.220528f, 0.220514f, 0.2205f, 0.220485f, 0.220471f, 0.220457f, 0.220442f, 0.220428f, 0.220414f, 0.220399f, 0.220385f, 0.220371f, 0.220356f, 0.220342f, 0.220328f, 0.220313f, 0.220299f, 0.220285f, 0.22027f, 0.220256f,
+0.220242f, 0.220228f, 0.220213f, 0.220199f, 0.220185f, 0.22017f, 0.220156f, 0.220142f, 0.220127f, 0.220113f, 0.220099f, 0.220084f, 0.22007f, 0.220056f, 0.220041f, 0.220027f, 0.220013f, 0.219998f, 0.219984f, 0.21997f,
+0.219956f, 0.219941f, 0.219927f, 0.219913f, 0.219898f, 0.219884f, 0.21987f, 0.219855f, 0.219841f, 0.219827f, 0.219812f, 0.219798f, 0.219784f, 0.219769f, 0.219755f, 0.219741f, 0.219727f, 0.219712f, 0.219698f, 0.219684f,
+0.219669f, 0.219655f, 0.219641f, 0.219626f, 0.219612f, 0.219598f, 0.219584f, 0.219569f, 0.219555f, 0.219541f, 0.219526f, 0.219512f, 0.219498f, 0.219483f, 0.219469f, 0.219455f, 0.219441f, 0.219426f, 0.219412f, 0.219398f,
+0.219383f, 0.219369f, 0.219355f, 0.21934f, 0.219326f, 0.219312f, 0.219298f, 0.219283f, 0.219269f, 0.219255f, 0.21924f, 0.219226f, 0.219212f, 0.219198f, 0.219183f, 0.219169f, 0.219155f, 0.21914f, 0.219126f, 0.219112f,
+0.219098f, 0.219083f, 0.219069f, 0.219055f, 0.21904f, 0.219026f, 0.219012f, 0.218998f, 0.218983f, 0.218969f, 0.218955f, 0.21894f, 0.218926f, 0.218912f, 0.218898f, 0.218883f, 0.218869f, 0.218855f, 0.218841f, 0.218826f,
+0.218812f, 0.218798f, 0.218783f, 0.218769f, 0.218755f, 0.218741f, 0.218726f, 0.218712f, 0.218698f, 0.218684f, 0.218669f, 0.218655f, 0.218641f, 0.218626f, 0.218612f, 0.218598f, 0.218584f, 0.218569f, 0.218555f, 0.218541f,
+0.218527f, 0.218512f, 0.218498f, 0.218484f, 0.21847f, 0.218455f, 0.218441f, 0.218427f, 0.218412f, 0.218398f, 0.218384f, 0.21837f, 0.218355f, 0.218341f, 0.218327f, 0.218313f, 0.218298f, 0.218284f, 0.21827f, 0.218256f,
+0.218241f, 0.218227f, 0.218213f, 0.218199f, 0.218184f, 0.21817f, 0.218156f, 0.218142f, 0.218127f, 0.218113f, 0.218099f, 0.218085f, 0.21807f, 0.218056f, 0.218042f, 0.218028f, 0.218013f, 0.217999f, 0.217985f, 0.217971f,
+0.217956f, 0.217942f, 0.217928f, 0.217914f, 0.217899f, 0.217885f, 0.217871f, 0.217857f, 0.217842f, 0.217828f, 0.217814f, 0.2178f, 0.217785f, 0.217771f, 0.217757f, 0.217743f, 0.217728f, 0.217714f, 0.2177f, 0.217686f,
+0.217671f, 0.217657f, 0.217643f, 0.217629f, 0.217615f, 0.2176f, 0.217586f, 0.217572f, 0.217558f, 0.217543f, 0.217529f, 0.217515f, 0.217501f, 0.217486f, 0.217472f, 0.217458f, 0.217444f, 0.217429f, 0.217415f, 0.217401f,
+0.217387f, 0.217373f, 0.217358f, 0.217344f, 0.21733f, 0.217316f, 0.217301f, 0.217287f, 0.217273f, 0.217259f, 0.217245f, 0.21723f, 0.217216f, 0.217202f, 0.217188f, 0.217173f, 0.217159f, 0.217145f, 0.217131f, 0.217117f,
+0.217102f, 0.217088f, 0.217074f, 0.21706f, 0.217045f, 0.217031f, 0.217017f, 0.217003f, 0.216989f, 0.216974f, 0.21696f, 0.216946f, 0.216932f, 0.216917f, 0.216903f, 0.216889f, 0.216875f, 0.216861f, 0.216846f, 0.216832f,
+0.216818f, 0.216804f, 0.21679f, 0.216775f, 0.216761f, 0.216747f, 0.216733f, 0.216719f, 0.216704f, 0.21669f, 0.216676f, 0.216662f, 0.216648f, 0.216633f, 0.216619f, 0.216605f, 0.216591f, 0.216577f, 0.216562f, 0.216548f,
+0.216534f, 0.21652f, 0.216505f, 0.216491f, 0.216477f, 0.216463f, 0.216449f, 0.216435f, 0.21642f, 0.216406f, 0.216392f, 0.216378f, 0.216364f, 0.216349f, 0.216335f, 0.216321f, 0.216307f, 0.216293f, 0.216278f, 0.216264f,
+0.21625f, 0.216236f, 0.216222f, 0.216207f, 0.216193f, 0.216179f, 0.216165f, 0.216151f, 0.216136f, 0.216122f, 0.216108f, 0.216094f, 0.21608f, 0.216066f, 0.216051f, 0.216037f, 0.216023f, 0.216009f, 0.215995f, 0.21598f,
+0.215966f, 0.215952f, 0.215938f, 0.215924f, 0.21591f, 0.215895f, 0.215881f, 0.215867f, 0.215853f, 0.215839f, 0.215824f, 0.21581f, 0.215796f, 0.215782f, 0.215768f, 0.215754f, 0.215739f, 0.215725f, 0.215711f, 0.215697f,
+0.215683f, 0.215669f, 0.215654f, 0.21564f, 0.215626f, 0.215612f, 0.215598f, 0.215583f, 0.215569f, 0.215555f, 0.215541f, 0.215527f, 0.215513f, 0.215498f, 0.215484f, 0.21547f, 0.215456f, 0.215442f, 0.215428f, 0.215413f,
+0.215399f, 0.215385f, 0.215371f, 0.215357f, 0.215343f, 0.215329f, 0.215314f, 0.2153f, 0.215286f, 0.215272f, 0.215258f, 0.215244f, 0.215229f, 0.215215f, 0.215201f, 0.215187f, 0.215173f, 0.215159f, 0.215144f, 0.21513f,
+0.215116f, 0.215102f, 0.215088f, 0.215074f, 0.21506f, 0.215045f, 0.215031f, 0.215017f, 0.215003f, 0.214989f, 0.214975f, 0.21496f, 0.214946f, 0.214932f, 0.214918f, 0.214904f, 0.21489f, 0.214876f, 0.214861f, 0.214847f,
+0.214833f, 0.214819f, 0.214805f, 0.214791f, 0.214777f, 0.214762f, 0.214748f, 0.214734f, 0.21472f, 0.214706f, 0.214692f, 0.214678f, 0.214663f, 0.214649f, 0.214635f, 0.214621f, 0.214607f, 0.214593f, 0.214579f, 0.214564f,
+0.21455f, 0.214536f, 0.214522f, 0.214508f, 0.214494f, 0.21448f, 0.214466f, 0.214451f, 0.214437f, 0.214423f, 0.214409f, 0.214395f, 0.214381f, 0.214367f, 0.214352f, 0.214338f, 0.214324f, 0.21431f, 0.214296f, 0.214282f,
+0.214268f, 0.214254f, 0.214239f, 0.214225f, 0.214211f, 0.214197f, 0.214183f, 0.214169f, 0.214155f, 0.214141f, 0.214126f, 0.214112f, 0.214098f, 0.214084f, 0.21407f, 0.214056f, 0.214042f, 0.214028f, 0.214014f, 0.213999f,
+0.213985f, 0.213971f, 0.213957f, 0.213943f, 0.213929f, 0.213915f, 0.213901f, 0.213886f, 0.213872f, 0.213858f, 0.213844f, 0.21383f, 0.213816f, 0.213802f, 0.213788f, 0.213774f, 0.213759f, 0.213745f, 0.213731f, 0.213717f,
+0.213703f, 0.213689f, 0.213675f, 0.213661f, 0.213647f, 0.213633f, 0.213618f, 0.213604f, 0.21359f, 0.213576f, 0.213562f, 0.213548f, 0.213534f, 0.21352f, 0.213506f, 0.213491f, 0.213477f, 0.213463f, 0.213449f, 0.213435f,
+0.213421f, 0.213407f, 0.213393f, 0.213379f, 0.213365f, 0.213351f, 0.213336f, 0.213322f, 0.213308f, 0.213294f, 0.21328f, 0.213266f, 0.213252f, 0.213238f, 0.213224f, 0.21321f, 0.213195f, 0.213181f, 0.213167f, 0.213153f,
+0.213139f, 0.213125f, 0.213111f, 0.213097f, 0.213083f, 0.213069f, 0.213055f, 0.213041f, 0.213026f, 0.213012f, 0.212998f, 0.212984f, 0.21297f, 0.212956f, 0.212942f, 0.212928f, 0.212914f, 0.2129f, 0.212886f, 0.212872f,
+0.212857f, 0.212843f, 0.212829f, 0.212815f, 0.212801f, 0.212787f, 0.212773f, 0.212759f, 0.212745f, 0.212731f, 0.212717f, 0.212703f, 0.212689f, 0.212674f, 0.21266f, 0.212646f, 0.212632f, 0.212618f, 0.212604f, 0.21259f,
+0.212576f, 0.212562f, 0.212548f, 0.212534f, 0.21252f, 0.212506f, 0.212492f, 0.212477f, 0.212463f, 0.212449f, 0.212435f, 0.212421f, 0.212407f, 0.212393f, 0.212379f, 0.212365f, 0.212351f, 0.212337f, 0.212323f, 0.212309f,
+0.212295f, 0.212281f, 0.212266f, 0.212252f, 0.212238f, 0.212224f, 0.21221f, 0.212196f, 0.212182f, 0.212168f, 0.212154f, 0.21214f, 0.212126f, 0.212112f, 0.212098f, 0.212084f, 0.21207f, 0.212056f, 0.212042f, 0.212028f,
+0.212013f, 0.211999f, 0.211985f, 0.211971f, 0.211957f, 0.211943f, 0.211929f, 0.211915f, 0.211901f, 0.211887f, 0.211873f, 0.211859f, 0.211845f, 0.211831f, 0.211817f, 0.211803f, 0.211789f, 0.211775f, 0.211761f, 0.211747f,
+0.211733f, 0.211718f, 0.211704f, 0.21169f, 0.211676f, 0.211662f, 0.211648f, 0.211634f, 0.21162f, 0.211606f, 0.211592f, 0.211578f, 0.211564f, 0.21155f, 0.211536f, 0.211522f, 0.211508f, 0.211494f, 0.21148f, 0.211466f,
+0.211452f, 0.211438f, 0.211424f, 0.21141f, 0.211396f, 0.211382f, 0.211368f, 0.211354f, 0.21134f, 0.211326f, 0.211311f, 0.211297f, 0.211283f, 0.211269f, 0.211255f, 0.211241f, 0.211227f, 0.211213f, 0.211199f, 0.211185f,
+0.211171f, 0.211157f, 0.211143f, 0.211129f, 0.211115f, 0.211101f, 0.211087f, 0.211073f, 0.211059f, 0.211045f, 0.211031f, 0.211017f, 0.211003f, 0.210989f, 0.210975f, 0.210961f, 0.210947f, 0.210933f, 0.210919f, 0.210905f,
+0.210891f, 0.210877f, 0.210863f, 0.210849f, 0.210835f, 0.210821f, 0.210807f, 0.210793f, 0.210779f, 0.210765f, 0.210751f, 0.210737f, 0.210723f, 0.210709f, 0.210695f, 0.210681f, 0.210667f, 0.210653f, 0.210639f, 0.210625f,
+0.210611f, 0.210597f, 0.210583f, 0.210569f, 0.210555f, 0.210541f, 0.210527f, 0.210513f, 0.210499f, 0.210485f, 0.210471f, 0.210457f, 0.210443f, 0.210429f, 0.210415f, 0.210401f, 0.210387f, 0.210373f, 0.210359f, 0.210345f,
+0.210331f, 0.210317f, 0.210303f, 0.210289f, 0.210275f, 0.210261f, 0.210247f, 0.210233f, 0.210219f, 0.210205f, 0.210191f, 0.210177f, 0.210163f, 0.210149f, 0.210135f, 0.210121f, 0.210107f, 0.210093f, 0.210079f, 0.210065f,
+0.210051f, 0.210037f, 0.210023f, 0.210009f, 0.209995f, 0.209981f, 0.209967f, 0.209953f, 0.209939f, 0.209925f, 0.209911f, 0.209897f, 0.209883f, 0.209869f, 0.209855f, 0.209841f, 0.209827f, 0.209813f, 0.209799f, 0.209785f,
+0.209771f, 0.209757f, 0.209743f, 0.209729f, 0.209715f, 0.209701f, 0.209687f, 0.209673f, 0.209659f, 0.209645f, 0.209631f, 0.209617f, 0.209603f, 0.209589f, 0.209576f, 0.209562f, 0.209548f, 0.209534f, 0.20952f, 0.209506f,
+0.209492f, 0.209478f, 0.209464f, 0.20945f, 0.209436f, 0.209422f, 0.209408f, 0.209394f, 0.20938f, 0.209366f, 0.209352f, 0.209338f, 0.209324f, 0.20931f, 0.209296f, 0.209282f, 0.209268f, 0.209254f, 0.20924f, 0.209226f,
+0.209212f, 0.209198f, 0.209185f, 0.209171f, 0.209157f, 0.209143f, 0.209129f, 0.209115f, 0.209101f, 0.209087f, 0.209073f, 0.209059f, 0.209045f, 0.209031f, 0.209017f, 0.209003f, 0.208989f, 0.208975f, 0.208961f, 0.208947f,
+0.208933f, 0.208919f, 0.208905f, 0.208892f, 0.208878f, 0.208864f, 0.20885f, 0.208836f, 0.208822f, 0.208808f, 0.208794f, 0.20878f, 0.208766f, 0.208752f, 0.208738f, 0.208724f, 0.20871f, 0.208696f, 0.208682f, 0.208668f,
+0.208654f, 0.208641f, 0.208627f, 0.208613f, 0.208599f, 0.208585f, 0.208571f, 0.208557f, 0.208543f, 0.208529f, 0.208515f, 0.208501f, 0.208487f, 0.208473f, 0.208459f, 0.208445f, 0.208431f, 0.208418f, 0.208404f, 0.20839f,
+0.208376f, 0.208362f, 0.208348f, 0.208334f, 0.20832f, 0.208306f, 0.208292f, 0.208278f, 0.208264f, 0.20825f, 0.208236f, 0.208223f, 0.208209f, 0.208195f, 0.208181f, 0.208167f, 0.208153f, 0.208139f, 0.208125f, 0.208111f,
+0.208097f, 0.208083f, 0.208069f, 0.208055f, 0.208042f, 0.208028f, 0.208014f, 0.208f, 0.207986f, 0.207972f, 0.207958f, 0.207944f, 0.20793f, 0.207916f, 0.207902f, 0.207888f, 0.207875f, 0.207861f, 0.207847f, 0.207833f,
+0.207819f, 0.207805f, 0.207791f, 0.207777f, 0.207763f, 0.207749f, 0.207735f, 0.207722f, 0.207708f, 0.207694f, 0.20768f, 0.207666f, 0.207652f, 0.207638f, 0.207624f, 0.20761f, 0.207596f, 0.207582f, 0.207569f, 0.207555f,
+0.207541f, 0.207527f, 0.207513f, 0.207499f, 0.207485f, 0.207471f, 0.207457f, 0.207443f, 0.20743f, 0.207416f, 0.207402f, 0.207388f, 0.207374f, 0.20736f, 0.207346f, 0.207332f, 0.207318f, 0.207304f, 0.207291f, 0.207277f,
+0.207263f, 0.207249f, 0.207235f, 0.207221f, 0.207207f, 0.207193f, 0.207179f, 0.207166f, 0.207152f, 0.207138f, 0.207124f, 0.20711f, 0.207096f, 0.207082f, 0.207068f, 0.207054f, 0.207041f, 0.207027f, 0.207013f, 0.206999f,
+0.206985f, 0.206971f, 0.206957f, 0.206943f, 0.206929f, 0.206916f, 0.206902f, 0.206888f, 0.206874f, 0.20686f, 0.206846f, 0.206832f, 0.206818f, 0.206805f, 0.206791f, 0.206777f, 0.206763f, 0.206749f, 0.206735f, 0.206721f,
+0.206707f, 0.206694f, 0.20668f, 0.206666f, 0.206652f, 0.206638f, 0.206624f, 0.20661f, 0.206596f, 0.206583f, 0.206569f, 0.206555f, 0.206541f, 0.206527f, 0.206513f, 0.206499f, 0.206485f, 0.206472f, 0.206458f, 0.206444f,
+0.20643f, 0.206416f, 0.206402f, 0.206388f, 0.206375f, 0.206361f, 0.206347f, 0.206333f, 0.206319f, 0.206305f, 0.206291f, 0.206278f, 0.206264f, 0.20625f, 0.206236f, 0.206222f, 0.206208f, 0.206194f, 0.206181f, 0.206167f,
+0.206153f, 0.206139f, 0.206125f, 0.206111f, 0.206097f, 0.206084f, 0.20607f, 0.206056f, 0.206042f, 0.206028f, 0.206014f, 0.206f, 0.205987f, 0.205973f, 0.205959f, 0.205945f, 0.205931f, 0.205917f, 0.205903f, 0.20589f,
+0.205876f, 0.205862f, 0.205848f, 0.205834f, 0.20582f, 0.205807f, 0.205793f, 0.205779f, 0.205765f, 0.205751f, 0.205737f, 0.205723f, 0.20571f, 0.205696f, 0.205682f, 0.205668f, 0.205654f, 0.20564f, 0.205627f, 0.205613f,
+0.205599f, 0.205585f, 0.205571f, 0.205557f, 0.205544f, 0.20553f, 0.205516f, 0.205502f, 0.205488f, 0.205474f, 0.205461f, 0.205447f, 0.205433f, 0.205419f, 0.205405f, 0.205391f, 0.205378f, 0.205364f, 0.20535f, 0.205336f,
+0.205322f, 0.205308f, 0.205295f, 0.205281f, 0.205267f, 0.205253f, 0.205239f, 0.205225f, 0.205212f, 0.205198f, 0.205184f, 0.20517f, 0.205156f, 0.205143f, 0.205129f, 0.205115f, 0.205101f, 0.205087f, 0.205073f, 0.20506f,
+0.205046f, 0.205032f, 0.205018f, 0.205004f, 0.204991f, 0.204977f, 0.204963f, 0.204949f, 0.204935f, 0.204921f, 0.204908f, 0.204894f, 0.20488f, 0.204866f, 0.204852f, 0.204839f, 0.204825f, 0.204811f, 0.204797f, 0.204783f,
+0.20477f, 0.204756f, 0.204742f, 0.204728f, 0.204714f, 0.2047f, 0.204687f, 0.204673f, 0.204659f, 0.204645f, 0.204631f, 0.204618f, 0.204604f, 0.20459f, 0.204576f, 0.204562f, 0.204549f, 0.204535f, 0.204521f, 0.204507f,
+0.204493f, 0.20448f, 0.204466f, 0.204452f, 0.204438f, 0.204424f, 0.204411f, 0.204397f, 0.204383f, 0.204369f, 0.204355f, 0.204342f, 0.204328f, 0.204314f, 0.2043f, 0.204286f, 0.204273f, 0.204259f, 0.204245f, 0.204231f,
+0.204217f, 0.204204f, 0.20419f, 0.204176f, 0.204162f, 0.204149f, 0.204135f, 0.204121f, 0.204107f, 0.204093f, 0.20408f, 0.204066f, 0.204052f, 0.204038f, 0.204024f, 0.204011f, 0.203997f, 0.203983f, 0.203969f, 0.203956f,
+0.203942f, 0.203928f, 0.203914f, 0.2039f, 0.203887f, 0.203873f, 0.203859f, 0.203845f, 0.203832f, 0.203818f, 0.203804f, 0.20379f, 0.203776f, 0.203763f, 0.203749f, 0.203735f, 0.203721f, 0.203708f, 0.203694f, 0.20368f,
+0.203666f, 0.203652f, 0.203639f, 0.203625f, 0.203611f, 0.203597f, 0.203584f, 0.20357f, 0.203556f, 0.203542f, 0.203529f, 0.203515f, 0.203501f, 0.203487f, 0.203473f, 0.20346f, 0.203446f, 0.203432f, 0.203418f, 0.203405f,
+0.203391f, 0.203377f, 0.203363f, 0.20335f, 0.203336f, 0.203322f, 0.203308f, 0.203295f, 0.203281f, 0.203267f, 0.203253f, 0.20324f, 0.203226f, 0.203212f, 0.203198f, 0.203184f, 0.203171f, 0.203157f, 0.203143f, 0.203129f,
+0.203116f, 0.203102f, 0.203088f, 0.203074f, 0.203061f, 0.203047f, 0.203033f, 0.203019f, 0.203006f, 0.202992f, 0.202978f, 0.202964f, 0.202951f, 0.202937f, 0.202923f, 0.202909f, 0.202896f, 0.202882f, 0.202868f, 0.202854f,
+0.202841f, 0.202827f, 0.202813f, 0.202799f, 0.202786f, 0.202772f, 0.202758f, 0.202745f, 0.202731f, 0.202717f, 0.202703f, 0.20269f, 0.202676f, 0.202662f, 0.202648f, 0.202635f, 0.202621f, 0.202607f, 0.202593f, 0.20258f,
+0.202566f, 0.202552f, 0.202538f, 0.202525f, 0.202511f, 0.202497f, 0.202484f, 0.20247f, 0.202456f, 0.202442f, 0.202429f, 0.202415f, 0.202401f, 0.202387f, 0.202374f, 0.20236f, 0.202346f, 0.202332f, 0.202319f, 0.202305f,
+0.202291f, 0.202278f, 0.202264f, 0.20225f, 0.202236f, 0.202223f, 0.202209f, 0.202195f, 0.202182f, 0.202168f, 0.202154f, 0.20214f, 0.202127f, 0.202113f, 0.202099f, 0.202085f, 0.202072f, 0.202058f, 0.202044f, 0.202031f,
+0.202017f, 0.202003f, 0.201989f, 0.201976f, 0.201962f, 0.201948f, 0.201935f, 0.201921f, 0.201907f, 0.201893f, 0.20188f, 0.201866f, 0.201852f, 0.201839f, 0.201825f, 0.201811f, 0.201797f, 0.201784f, 0.20177f, 0.201756f,
+0.201743f, 0.201729f, 0.201715f, 0.201702f, 0.201688f, 0.201674f, 0.20166f, 0.201647f, 0.201633f, 0.201619f, 0.201606f, 0.201592f, 0.201578f, 0.201564f, 0.201551f, 0.201537f, 0.201523f, 0.20151f, 0.201496f, 0.201482f,
+0.201469f, 0.201455f, 0.201441f, 0.201428f, 0.201414f, 0.2014f, 0.201386f, 0.201373f, 0.201359f, 0.201345f, 0.201332f, 0.201318f, 0.201304f, 0.201291f, 0.201277f, 0.201263f, 0.201249f, 0.201236f, 0.201222f, 0.201208f,
+0.201195f, 0.201181f, 0.201167f, 0.201154f, 0.20114f, 0.201126f, 0.201113f, 0.201099f, 0.201085f, 0.201072f, 0.201058f, 0.201044f, 0.201031f, 0.201017f, 0.201003f, 0.200989f, 0.200976f, 0.200962f, 0.200948f, 0.200935f,
+0.200921f, 0.200907f, 0.200894f, 0.20088f, 0.200866f, 0.200853f, 0.200839f, 0.200825f, 0.200812f, 0.200798f, 0.200784f, 0.200771f, 0.200757f, 0.200743f, 0.20073f, 0.200716f, 0.200702f, 0.200689f, 0.200675f, 0.200661f,
+0.200648f, 0.200634f, 0.20062f, 0.200607f, 0.200593f, 0.200579f, 0.200566f, 0.200552f, 0.200538f, 0.200525f, 0.200511f, 0.200497f, 0.200484f, 0.20047f, 0.200456f, 0.200443f, 0.200429f, 0.200415f, 0.200402f, 0.200388f,
+0.200374f, 0.200361f, 0.200347f, 0.200333f, 0.20032f, 0.200306f, 0.200292f, 0.200279f, 0.200265f, 0.200251f, 0.200238f, 0.200224f, 0.20021f, 0.200197f, 0.200183f, 0.200169f, 0.200156f, 0.200142f, 0.200128f, 0.200115f,
+0.200101f, 0.200087f, 0.200074f, 0.20006f, 0.200047f, 0.200033f, 0.200019f, 0.200006f, 0.199992f, 0.199978f, 0.199965f, 0.199951f, 0.199937f, 0.199924f, 0.19991f, 0.199896f, 0.199883f, 0.199869f, 0.199855f, 0.199842f,
+0.199828f, 0.199815f, 0.199801f, 0.199787f, 0.199774f, 0.19976f, 0.199746f, 0.199733f, 0.199719f, 0.199705f, 0.199692f, 0.199678f, 0.199665f, 0.199651f, 0.199637f, 0.199624f, 0.19961f, 0.199596f, 0.199583f, 0.199569f,
+0.199555f, 0.199542f, 0.199528f, 0.199515f, 0.199501f, 0.199487f, 0.199474f, 0.19946f, 0.199446f, 0.199433f, 0.199419f, 0.199406f, 0.199392f, 0.199378f, 0.199365f, 0.199351f, 0.199337f, 0.199324f, 0.19931f, 0.199297f,
+0.199283f, 0.199269f, 0.199256f, 0.199242f, 0.199228f, 0.199215f, 0.199201f, 0.199188f, 0.199174f, 0.19916f, 0.199147f, 0.199133f, 0.199119f, 0.199106f, 0.199092f, 0.199079f, 0.199065f, 0.199051f, 0.199038f, 0.199024f,
+0.199011f, 0.198997f, 0.198983f, 0.19897f, 0.198956f, 0.198942f, 0.198929f, 0.198915f, 0.198902f, 0.198888f, 0.198874f, 0.198861f, 0.198847f, 0.198834f, 0.19882f, 0.198806f, 0.198793f, 0.198779f, 0.198766f, 0.198752f,
+0.198738f, 0.198725f, 0.198711f, 0.198698f, 0.198684f, 0.19867f, 0.198657f, 0.198643f, 0.19863f, 0.198616f, 0.198602f, 0.198589f, 0.198575f, 0.198562f, 0.198548f, 0.198534f, 0.198521f, 0.198507f, 0.198494f, 0.19848f,
+0.198466f, 0.198453f, 0.198439f, 0.198426f, 0.198412f, 0.198398f, 0.198385f, 0.198371f, 0.198358f, 0.198344f, 0.19833f, 0.198317f, 0.198303f, 0.19829f, 0.198276f, 0.198262f, 0.198249f, 0.198235f, 0.198222f, 0.198208f,
+0.198195f, 0.198181f, 0.198167f, 0.198154f, 0.19814f, 0.198127f, 0.198113f, 0.198099f, 0.198086f, 0.198072f, 0.198059f, 0.198045f, 0.198032f, 0.198018f, 0.198004f, 0.197991f, 0.197977f, 0.197964f, 0.19795f, 0.197936f,
+0.197923f, 0.197909f, 0.197896f, 0.197882f, 0.197869f, 0.197855f, 0.197841f, 0.197828f, 0.197814f, 0.197801f, 0.197787f, 0.197774f, 0.19776f, 0.197746f, 0.197733f, 0.197719f, 0.197706f, 0.197692f, 0.197679f, 0.197665f,
+0.197651f, 0.197638f, 0.197624f, 0.197611f, 0.197597f, 0.197584f, 0.19757f, 0.197556f, 0.197543f, 0.197529f, 0.197516f, 0.197502f, 0.197489f, 0.197475f, 0.197462f, 0.197448f, 0.197434f, 0.197421f, 0.197407f, 0.197394f,
+0.19738f, 0.197367f, 0.197353f, 0.19734f, 0.197326f, 0.197312f, 0.197299f, 0.197285f, 0.197272f, 0.197258f, 0.197245f, 0.197231f, 0.197218f, 0.197204f, 0.19719f, 0.197177f, 0.197163f, 0.19715f, 0.197136f, 0.197123f,
+0.197109f, 0.197096f, 0.197082f, 0.197068f, 0.197055f, 0.197041f, 0.197028f, 0.197014f, 0.197001f, 0.196987f, 0.196974f, 0.19696f, 0.196947f, 0.196933f, 0.196919f, 0.196906f, 0.196892f, 0.196879f, 0.196865f, 0.196852f,
+0.196838f, 0.196825f, 0.196811f, 0.196798f, 0.196784f, 0.196771f, 0.196757f, 0.196743f, 0.19673f, 0.196716f, 0.196703f, 0.196689f, 0.196676f, 0.196662f, 0.196649f, 0.196635f, 0.196622f, 0.196608f, 0.196595f, 0.196581f,
+0.196568f, 0.196554f, 0.19654f, 0.196527f, 0.196513f, 0.1965f, 0.196486f, 0.196473f, 0.196459f, 0.196446f, 0.196432f, 0.196419f, 0.196405f, 0.196392f, 0.196378f, 0.196365f, 0.196351f, 0.196338f, 0.196324f, 0.196311f,
+0.196297f, 0.196284f, 0.19627f, 0.196256f, 0.196243f, 0.196229f, 0.196216f, 0.196202f, 0.196189f, 0.196175f, 0.196162f, 0.196148f, 0.196135f, 0.196121f, 0.196108f, 0.196094f, 0.196081f, 0.196067f, 0.196054f, 0.19604f,
+0.196027f, 0.196013f, 0.196f, 0.195986f, 0.195973f, 0.195959f, 0.195946f, 0.195932f, 0.195919f, 0.195905f, 0.195892f, 0.195878f, 0.195865f, 0.195851f, 0.195838f, 0.195824f, 0.195811f, 0.195797f, 0.195784f, 0.19577f,
+0.195757f, 0.195743f, 0.19573f, 0.195716f, 0.195703f, 0.195689f, 0.195676f, 0.195662f, 0.195649f, 0.195635f, 0.195622f, 0.195608f, 0.195595f, 0.195581f, 0.195568f, 0.195554f, 0.195541f, 0.195527f, 0.195514f, 0.1955f,
+0.195487f, 0.195473f, 0.19546f, 0.195446f, 0.195433f, 0.195419f, 0.195406f, 0.195392f, 0.195379f, 0.195365f, 0.195352f, 0.195338f, 0.195325f, 0.195311f, 0.195298f, 0.195284f, 0.195271f, 0.195257f, 0.195244f, 0.19523f,
+0.195217f, 0.195203f, 0.19519f, 0.195176f, 0.195163f, 0.195149f, 0.195136f, 0.195122f, 0.195109f, 0.195096f, 0.195082f, 0.195069f, 0.195055f, 0.195042f, 0.195028f, 0.195015f, 0.195001f, 0.194988f, 0.194974f, 0.194961f,
+0.194947f, 0.194934f, 0.19492f, 0.194907f, 0.194893f, 0.19488f, 0.194866f, 0.194853f, 0.194839f, 0.194826f, 0.194813f, 0.194799f, 0.194786f, 0.194772f, 0.194759f, 0.194745f, 0.194732f, 0.194718f, 0.194705f, 0.194691f,
+0.194678f, 0.194664f, 0.194651f, 0.194637f, 0.194624f, 0.194611f, 0.194597f, 0.194584f, 0.19457f, 0.194557f, 0.194543f, 0.19453f, 0.194516f, 0.194503f, 0.194489f, 0.194476f, 0.194462f, 0.194449f, 0.194436f, 0.194422f,
+0.194409f, 0.194395f, 0.194382f, 0.194368f, 0.194355f, 0.194341f, 0.194328f, 0.194314f, 0.194301f, 0.194288f, 0.194274f, 0.194261f, 0.194247f, 0.194234f, 0.19422f, 0.194207f, 0.194193f, 0.19418f, 0.194167f, 0.194153f,
+0.19414f, 0.194126f, 0.194113f, 0.194099f, 0.194086f, 0.194072f, 0.194059f, 0.194046f, 0.194032f, 0.194019f, 0.194005f, 0.193992f, 0.193978f, 0.193965f, 0.193951f, 0.193938f, 0.193925f, 0.193911f, 0.193898f, 0.193884f,
+0.193871f, 0.193857f, 0.193844f, 0.19383f, 0.193817f, 0.193804f, 0.19379f, 0.193777f, 0.193763f, 0.19375f, 0.193736f, 0.193723f, 0.19371f, 0.193696f, 0.193683f, 0.193669f, 0.193656f, 0.193642f, 0.193629f, 0.193616f,
+0.193602f, 0.193589f, 0.193575f, 0.193562f, 0.193548f, 0.193535f, 0.193522f, 0.193508f, 0.193495f, 0.193481f, 0.193468f, 0.193454f, 0.193441f, 0.193428f, 0.193414f, 0.193401f, 0.193387f, 0.193374f, 0.193361f, 0.193347f,
+0.193334f, 0.19332f, 0.193307f, 0.193293f, 0.19328f, 0.193267f, 0.193253f, 0.19324f, 0.193226f, 0.193213f, 0.1932f, 0.193186f, 0.193173f, 0.193159f, 0.193146f, 0.193132f, 0.193119f, 0.193106f, 0.193092f, 0.193079f,
+0.193065f, 0.193052f, 0.193039f, 0.193025f, 0.193012f, 0.192998f, 0.192985f, 0.192972f, 0.192958f, 0.192945f, 0.192931f, 0.192918f, 0.192905f, 0.192891f, 0.192878f, 0.192864f, 0.192851f, 0.192838f, 0.192824f, 0.192811f,
+0.192797f, 0.192784f, 0.192771f, 0.192757f, 0.192744f, 0.19273f, 0.192717f, 0.192704f, 0.19269f, 0.192677f, 0.192663f, 0.19265f, 0.192637f, 0.192623f, 0.19261f, 0.192596f, 0.192583f, 0.19257f, 0.192556f, 0.192543f,
+0.192529f, 0.192516f, 0.192503f, 0.192489f, 0.192476f, 0.192462f, 0.192449f, 0.192436f, 0.192422f, 0.192409f, 0.192396f, 0.192382f, 0.192369f, 0.192355f, 0.192342f, 0.192329f, 0.192315f, 0.192302f, 0.192288f, 0.192275f,
+0.192262f, 0.192248f, 0.192235f, 0.192222f, 0.192208f, 0.192195f, 0.192181f, 0.192168f, 0.192155f, 0.192141f, 0.192128f, 0.192115f, 0.192101f, 0.192088f, 0.192074f, 0.192061f, 0.192048f, 0.192034f, 0.192021f, 0.192008f,
+0.191994f, 0.191981f, 0.191967f, 0.191954f, 0.191941f, 0.191927f, 0.191914f, 0.191901f, 0.191887f, 0.191874f, 0.19186f, 0.191847f, 0.191834f, 0.19182f, 0.191807f, 0.191794f, 0.19178f, 0.191767f, 0.191754f, 0.19174f,
+0.191727f, 0.191713f, 0.1917f, 0.191687f, 0.191673f, 0.19166f, 0.191647f, 0.191633f, 0.19162f, 0.191607f, 0.191593f, 0.19158f, 0.191567f, 0.191553f, 0.19154f, 0.191526f, 0.191513f, 0.1915f, 0.191486f, 0.191473f,
+0.19146f, 0.191446f, 0.191433f, 0.19142f, 0.191406f, 0.191393f, 0.19138f, 0.191366f, 0.191353f, 0.191339f, 0.191326f, 0.191313f, 0.191299f, 0.191286f, 0.191273f, 0.191259f, 0.191246f, 0.191233f, 0.191219f, 0.191206f,
+0.191193f, 0.191179f, 0.191166f, 0.191153f, 0.191139f, 0.191126f, 0.191113f, 0.191099f, 0.191086f, 0.191073f, 0.191059f, 0.191046f, 0.191033f, 0.191019f, 0.191006f, 0.190993f, 0.190979f, 0.190966f, 0.190953f, 0.190939f,
+0.190926f, 0.190913f, 0.190899f, 0.190886f, 0.190873f, 0.190859f, 0.190846f, 0.190833f, 0.190819f, 0.190806f, 0.190793f, 0.190779f, 0.190766f, 0.190753f, 0.190739f, 0.190726f, 0.190713f, 0.190699f, 0.190686f, 0.190673f,
+0.190659f, 0.190646f, 0.190633f, 0.190619f, 0.190606f, 0.190593f, 0.190579f, 0.190566f, 0.190553f, 0.190539f, 0.190526f, 0.190513f, 0.190499f, 0.190486f, 0.190473f, 0.190459f, 0.190446f, 0.190433f, 0.19042f, 0.190406f,
+0.190393f, 0.19038f, 0.190366f, 0.190353f, 0.19034f, 0.190326f, 0.190313f, 0.1903f, 0.190286f, 0.190273f, 0.19026f, 0.190246f, 0.190233f, 0.19022f, 0.190207f, 0.190193f, 0.19018f, 0.190167f, 0.190153f, 0.19014f,
+0.190127f, 0.190113f, 0.1901f, 0.190087f, 0.190073f, 0.19006f, 0.190047f, 0.190034f, 0.19002f, 0.190007f, 0.189994f, 0.18998f, 0.189967f, 0.189954f, 0.18994f, 0.189927f, 0.189914f, 0.189901f, 0.189887f, 0.189874f,
+0.189861f, 0.189847f, 0.189834f, 0.189821f, 0.189807f, 0.189794f, 0.189781f, 0.189768f, 0.189754f, 0.189741f, 0.189728f, 0.189714f, 0.189701f, 0.189688f, 0.189674f, 0.189661f, 0.189648f, 0.189635f, 0.189621f, 0.189608f,
+0.189595f, 0.189581f, 0.189568f, 0.189555f, 0.189542f, 0.189528f, 0.189515f, 0.189502f, 0.189488f, 0.189475f, 0.189462f, 0.189449f, 0.189435f, 0.189422f, 0.189409f, 0.189395f, 0.189382f, 0.189369f, 0.189356f, 0.189342f,
+0.189329f, 0.189316f, 0.189303f, 0.189289f, 0.189276f, 0.189263f, 0.189249f, 0.189236f, 0.189223f, 0.18921f, 0.189196f, 0.189183f, 0.18917f, 0.189157f, 0.189143f, 0.18913f, 0.189117f, 0.189103f, 0.18909f, 0.189077f,
+0.189064f, 0.18905f, 0.189037f, 0.189024f, 0.189011f, 0.188997f, 0.188984f, 0.188971f, 0.188957f, 0.188944f, 0.188931f, 0.188918f, 0.188904f, 0.188891f, 0.188878f, 0.188865f, 0.188851f, 0.188838f, 0.188825f, 0.188812f,
+0.188798f, 0.188785f, 0.188772f, 0.188759f, 0.188745f, 0.188732f, 0.188719f, 0.188706f, 0.188692f, 0.188679f, 0.188666f, 0.188652f, 0.188639f, 0.188626f, 0.188613f, 0.188599f, 0.188586f, 0.188573f, 0.18856f, 0.188546f,
+0.188533f, 0.18852f, 0.188507f, 0.188493f, 0.18848f, 0.188467f, 0.188454f, 0.18844f, 0.188427f, 0.188414f, 0.188401f, 0.188387f, 0.188374f, 0.188361f, 0.188348f, 0.188334f, 0.188321f, 0.188308f, 0.188295f, 0.188282f,
+0.188268f, 0.188255f, 0.188242f, 0.188229f, 0.188215f, 0.188202f, 0.188189f, 0.188176f, 0.188162f, 0.188149f, 0.188136f, 0.188123f, 0.188109f, 0.188096f, 0.188083f, 0.18807f, 0.188056f, 0.188043f, 0.18803f, 0.188017f,
+0.188004f, 0.18799f, 0.187977f, 0.187964f, 0.187951f, 0.187937f, 0.187924f, 0.187911f, 0.187898f, 0.187884f, 0.187871f, 0.187858f, 0.187845f, 0.187832f, 0.187818f, 0.187805f, 0.187792f, 0.187779f, 0.187765f, 0.187752f,
+0.187739f, 0.187726f, 0.187713f, 0.187699f, 0.187686f, 0.187673f, 0.18766f, 0.187646f, 0.187633f, 0.18762f, 0.187607f, 0.187594f, 0.18758f, 0.187567f, 0.187554f, 0.187541f, 0.187527f, 0.187514f, 0.187501f, 0.187488f,
+0.187475f, 0.187461f, 0.187448f, 0.187435f, 0.187422f, 0.187409f, 0.187395f, 0.187382f, 0.187369f, 0.187356f, 0.187343f, 0.187329f, 0.187316f, 0.187303f, 0.18729f, 0.187276f, 0.187263f, 0.18725f, 0.187237f, 0.187224f,
+0.18721f, 0.187197f, 0.187184f, 0.187171f, 0.187158f, 0.187144f, 0.187131f, 0.187118f, 0.187105f, 0.187092f, 0.187078f, 0.187065f, 0.187052f, 0.187039f, 0.187026f, 0.187012f, 0.186999f, 0.186986f, 0.186973f, 0.18696f,
+0.186946f, 0.186933f, 0.18692f, 0.186907f, 0.186894f, 0.18688f, 0.186867f, 0.186854f, 0.186841f, 0.186828f, 0.186815f, 0.186801f, 0.186788f, 0.186775f, 0.186762f, 0.186749f, 0.186735f, 0.186722f, 0.186709f, 0.186696f,
+0.186683f, 0.186669f, 0.186656f, 0.186643f, 0.18663f, 0.186617f, 0.186604f, 0.18659f, 0.186577f, 0.186564f, 0.186551f, 0.186538f, 0.186524f, 0.186511f, 0.186498f, 0.186485f, 0.186472f, 0.186459f, 0.186445f, 0.186432f,
+0.186419f, 0.186406f, 0.186393f, 0.186379f, 0.186366f, 0.186353f, 0.18634f, 0.186327f, 0.186314f, 0.1863f, 0.186287f, 0.186274f, 0.186261f, 0.186248f, 0.186235f, 0.186221f, 0.186208f, 0.186195f, 0.186182f, 0.186169f,
+0.186156f, 0.186142f, 0.186129f, 0.186116f, 0.186103f, 0.18609f, 0.186077f, 0.186063f, 0.18605f, 0.186037f, 0.186024f, 0.186011f, 0.185998f, 0.185984f, 0.185971f, 0.185958f, 0.185945f, 0.185932f, 0.185919f, 0.185906f,
+0.185892f, 0.185879f, 0.185866f, 0.185853f, 0.18584f, 0.185827f, 0.185813f, 0.1858f, 0.185787f, 0.185774f, 0.185761f, 0.185748f, 0.185734f, 0.185721f, 0.185708f, 0.185695f, 0.185682f, 0.185669f, 0.185656f, 0.185642f,
+0.185629f, 0.185616f, 0.185603f, 0.18559f, 0.185577f, 0.185564f, 0.18555f, 0.185537f, 0.185524f, 0.185511f, 0.185498f, 0.185485f, 0.185472f, 0.185458f, 0.185445f, 0.185432f, 0.185419f, 0.185406f, 0.185393f, 0.18538f,
+0.185366f, 0.185353f, 0.18534f, 0.185327f, 0.185314f, 0.185301f, 0.185288f, 0.185274f, 0.185261f, 0.185248f, 0.185235f, 0.185222f, 0.185209f, 0.185196f, 0.185183f, 0.185169f, 0.185156f, 0.185143f, 0.18513f, 0.185117f,
+0.185104f, 0.185091f, 0.185077f, 0.185064f, 0.185051f, 0.185038f, 0.185025f, 0.185012f, 0.184999f, 0.184986f, 0.184972f, 0.184959f, 0.184946f, 0.184933f, 0.18492f, 0.184907f, 0.184894f, 0.184881f, 0.184867f, 0.184854f,
+0.184841f, 0.184828f, 0.184815f, 0.184802f, 0.184789f, 0.184776f, 0.184763f, 0.184749f, 0.184736f, 0.184723f, 0.18471f, 0.184697f, 0.184684f, 0.184671f, 0.184658f, 0.184644f, 0.184631f, 0.184618f, 0.184605f, 0.184592f,
+0.184579f, 0.184566f, 0.184553f, 0.18454f, 0.184526f, 0.184513f, 0.1845f, 0.184487f, 0.184474f, 0.184461f, 0.184448f, 0.184435f, 0.184422f, 0.184408f, 0.184395f, 0.184382f, 0.184369f, 0.184356f, 0.184343f, 0.18433f,
+0.184317f, 0.184304f, 0.184291f, 0.184277f, 0.184264f, 0.184251f, 0.184238f, 0.184225f, 0.184212f, 0.184199f, 0.184186f, 0.184173f, 0.18416f, 0.184146f, 0.184133f, 0.18412f, 0.184107f, 0.184094f, 0.184081f, 0.184068f,
+0.184055f, 0.184042f, 0.184029f, 0.184016f, 0.184002f, 0.183989f, 0.183976f, 0.183963f, 0.18395f, 0.183937f, 0.183924f, 0.183911f, 0.183898f, 0.183885f, 0.183872f, 0.183858f, 0.183845f, 0.183832f, 0.183819f, 0.183806f,
+0.183793f, 0.18378f, 0.183767f, 0.183754f, 0.183741f, 0.183728f, 0.183715f, 0.183701f, 0.183688f, 0.183675f, 0.183662f, 0.183649f, 0.183636f, 0.183623f, 0.18361f, 0.183597f, 0.183584f, 0.183571f, 0.183558f, 0.183545f,
+0.183531f, 0.183518f, 0.183505f, 0.183492f, 0.183479f, 0.183466f, 0.183453f, 0.18344f, 0.183427f, 0.183414f, 0.183401f, 0.183388f, 0.183375f, 0.183362f, 0.183349f, 0.183335f, 0.183322f, 0.183309f, 0.183296f, 0.183283f,
+0.18327f, 0.183257f, 0.183244f, 0.183231f, 0.183218f, 0.183205f, 0.183192f, 0.183179f, 0.183166f, 0.183153f, 0.183139f, 0.183126f, 0.183113f, 0.1831f, 0.183087f, 0.183074f, 0.183061f, 0.183048f, 0.183035f, 0.183022f,
+0.183009f, 0.182996f, 0.182983f, 0.18297f, 0.182957f, 0.182944f, 0.182931f, 0.182918f, 0.182904f, 0.182891f, 0.182878f, 0.182865f, 0.182852f, 0.182839f, 0.182826f, 0.182813f, 0.1828f, 0.182787f, 0.182774f, 0.182761f,
+0.182748f, 0.182735f, 0.182722f, 0.182709f, 0.182696f, 0.182683f, 0.18267f, 0.182657f, 0.182644f, 0.182631f, 0.182617f, 0.182604f, 0.182591f, 0.182578f, 0.182565f, 0.182552f, 0.182539f, 0.182526f, 0.182513f, 0.1825f,
+0.182487f, 0.182474f, 0.182461f, 0.182448f, 0.182435f, 0.182422f, 0.182409f, 0.182396f, 0.182383f, 0.18237f, 0.182357f, 0.182344f, 0.182331f, 0.182318f, 0.182305f, 0.182292f, 0.182279f, 0.182266f, 0.182252f, 0.182239f,
+0.182226f, 0.182213f, 0.1822f, 0.182187f, 0.182174f, 0.182161f, 0.182148f, 0.182135f, 0.182122f, 0.182109f, 0.182096f, 0.182083f, 0.18207f, 0.182057f, 0.182044f, 0.182031f, 0.182018f, 0.182005f, 0.181992f, 0.181979f,
+0.181966f, 0.181953f, 0.18194f, 0.181927f, 0.181914f, 0.181901f, 0.181888f, 0.181875f, 0.181862f, 0.181849f, 0.181836f, 0.181823f, 0.18181f, 0.181797f, 0.181784f, 0.181771f, 0.181758f, 0.181745f, 0.181732f, 0.181719f,
+0.181706f, 0.181693f, 0.18168f, 0.181667f, 0.181654f, 0.181641f, 0.181628f, 0.181615f, 0.181602f, 0.181589f, 0.181576f, 0.181563f, 0.18155f, 0.181537f, 0.181524f, 0.181511f, 0.181498f, 0.181485f, 0.181472f, 0.181459f,
+0.181446f, 0.181433f, 0.18142f, 0.181407f, 0.181394f, 0.181381f, 0.181368f, 0.181355f, 0.181342f, 0.181329f, 0.181316f, 0.181303f, 0.18129f, 0.181277f, 0.181264f, 0.181251f, 0.181238f, 0.181225f, 0.181212f, 0.181199f,
+0.181186f, 0.181173f, 0.18116f, 0.181147f, 0.181134f, 0.181121f, 0.181108f, 0.181095f, 0.181082f, 0.181069f, 0.181056f, 0.181043f, 0.18103f, 0.181017f, 0.181004f, 0.180991f, 0.180978f, 0.180965f, 0.180952f, 0.180939f,
+0.180926f, 0.180913f, 0.1809f, 0.180887f, 0.180874f, 0.180861f, 0.180848f, 0.180835f, 0.180822f, 0.180809f, 0.180796f, 0.180783f, 0.18077f, 0.180757f, 0.180744f, 0.180731f, 0.180718f, 0.180705f, 0.180692f, 0.180679f,
+0.180667f, 0.180654f, 0.180641f, 0.180628f, 0.180615f, 0.180602f, 0.180589f, 0.180576f, 0.180563f, 0.18055f, 0.180537f, 0.180524f, 0.180511f, 0.180498f, 0.180485f, 0.180472f, 0.180459f, 0.180446f, 0.180433f, 0.18042f,
+0.180407f, 0.180394f, 0.180381f, 0.180368f, 0.180355f, 0.180342f, 0.180329f, 0.180316f, 0.180303f, 0.180291f, 0.180278f, 0.180265f, 0.180252f, 0.180239f, 0.180226f, 0.180213f, 0.1802f, 0.180187f, 0.180174f, 0.180161f,
+0.180148f, 0.180135f, 0.180122f, 0.180109f, 0.180096f, 0.180083f, 0.18007f, 0.180057f, 0.180044f, 0.180031f, 0.180019f, 0.180006f, 0.179993f, 0.17998f, 0.179967f, 0.179954f, 0.179941f, 0.179928f, 0.179915f, 0.179902f,
+0.179889f, 0.179876f, 0.179863f, 0.17985f, 0.179837f, 0.179824f, 0.179811f, 0.179798f, 0.179786f, 0.179773f, 0.17976f, 0.179747f, 0.179734f, 0.179721f, 0.179708f, 0.179695f, 0.179682f, 0.179669f, 0.179656f, 0.179643f,
+0.17963f, 0.179617f, 0.179604f, 0.179591f, 0.179579f, 0.179566f, 0.179553f, 0.17954f, 0.179527f, 0.179514f, 0.179501f, 0.179488f, 0.179475f, 0.179462f, 0.179449f, 0.179436f, 0.179423f, 0.17941f, 0.179398f, 0.179385f,
+0.179372f, 0.179359f, 0.179346f, 0.179333f, 0.17932f, 0.179307f, 0.179294f, 0.179281f, 0.179268f, 0.179255f, 0.179242f, 0.17923f, 0.179217f, 0.179204f, 0.179191f, 0.179178f, 0.179165f, 0.179152f, 0.179139f, 0.179126f,
+0.179113f, 0.1791f, 0.179087f, 0.179075f, 0.179062f, 0.179049f, 0.179036f, 0.179023f, 0.17901f, 0.178997f, 0.178984f, 0.178971f, 0.178958f, 0.178945f, 0.178933f, 0.17892f, 0.178907f, 0.178894f, 0.178881f, 0.178868f,
+0.178855f, 0.178842f, 0.178829f, 0.178816f, 0.178803f, 0.178791f, 0.178778f, 0.178765f, 0.178752f, 0.178739f, 0.178726f, 0.178713f, 0.1787f, 0.178687f, 0.178674f, 0.178662f, 0.178649f, 0.178636f, 0.178623f, 0.17861f,
+0.178597f, 0.178584f, 0.178571f, 0.178558f, 0.178545f, 0.178533f, 0.17852f, 0.178507f, 0.178494f, 0.178481f, 0.178468f, 0.178455f, 0.178442f, 0.178429f, 0.178417f, 0.178404f, 0.178391f, 0.178378f, 0.178365f, 0.178352f,
+0.178339f, 0.178326f, 0.178313f, 0.178301f, 0.178288f, 0.178275f, 0.178262f, 0.178249f, 0.178236f, 0.178223f, 0.17821f, 0.178197f, 0.178185f, 0.178172f, 0.178159f, 0.178146f, 0.178133f, 0.17812f, 0.178107f, 0.178094f,
+0.178082f, 0.178069f, 0.178056f, 0.178043f, 0.17803f, 0.178017f, 0.178004f, 0.177991f, 0.177979f, 0.177966f, 0.177953f, 0.17794f, 0.177927f, 0.177914f, 0.177901f, 0.177888f, 0.177876f, 0.177863f, 0.17785f, 0.177837f,
+0.177824f, 0.177811f, 0.177798f, 0.177785f, 0.177773f, 0.17776f, 0.177747f, 0.177734f, 0.177721f, 0.177708f, 0.177695f, 0.177683f, 0.17767f, 0.177657f, 0.177644f, 0.177631f, 0.177618f, 0.177605f, 0.177592f, 0.17758f,
+0.177567f, 0.177554f, 0.177541f, 0.177528f, 0.177515f, 0.177502f, 0.17749f, 0.177477f, 0.177464f, 0.177451f, 0.177438f, 0.177425f, 0.177412f, 0.1774f, 0.177387f, 0.177374f, 0.177361f, 0.177348f, 0.177335f, 0.177323f,
+0.17731f, 0.177297f, 0.177284f, 0.177271f, 0.177258f, 0.177245f, 0.177233f, 0.17722f, 0.177207f, 0.177194f, 0.177181f, 0.177168f, 0.177155f, 0.177143f, 0.17713f, 0.177117f, 0.177104f, 0.177091f, 0.177078f, 0.177066f,
+0.177053f, 0.17704f, 0.177027f, 0.177014f, 0.177001f, 0.176989f, 0.176976f, 0.176963f, 0.17695f, 0.176937f, 0.176924f, 0.176912f, 0.176899f, 0.176886f, 0.176873f, 0.17686f, 0.176847f, 0.176835f, 0.176822f, 0.176809f,
+0.176796f, 0.176783f, 0.17677f, 0.176758f, 0.176745f, 0.176732f, 0.176719f, 0.176706f, 0.176693f, 0.176681f, 0.176668f, 0.176655f, 0.176642f, 0.176629f, 0.176616f, 0.176604f, 0.176591f, 0.176578f, 0.176565f, 0.176552f,
+0.176539f, 0.176527f, 0.176514f, 0.176501f, 0.176488f, 0.176475f, 0.176463f, 0.17645f, 0.176437f, 0.176424f, 0.176411f, 0.176398f, 0.176386f, 0.176373f, 0.17636f, 0.176347f, 0.176334f, 0.176322f, 0.176309f, 0.176296f,
+0.176283f, 0.17627f, 0.176257f, 0.176245f, 0.176232f, 0.176219f, 0.176206f, 0.176193f, 0.176181f, 0.176168f, 0.176155f, 0.176142f, 0.176129f, 0.176117f, 0.176104f, 0.176091f, 0.176078f, 0.176065f, 0.176053f, 0.17604f,
+0.176027f, 0.176014f, 0.176001f, 0.175989f, 0.175976f, 0.175963f, 0.17595f, 0.175937f, 0.175925f, 0.175912f, 0.175899f, 0.175886f, 0.175873f, 0.175861f, 0.175848f, 0.175835f, 0.175822f, 0.175809f, 0.175797f, 0.175784f,
+0.175771f, 0.175758f, 0.175745f, 0.175733f, 0.17572f, 0.175707f, 0.175694f, 0.175681f, 0.175669f, 0.175656f, 0.175643f, 0.17563f, 0.175617f, 0.175605f, 0.175592f, 0.175579f, 0.175566f, 0.175554f, 0.175541f, 0.175528f,
+0.175515f, 0.175502f, 0.17549f, 0.175477f, 0.175464f, 0.175451f, 0.175438f, 0.175426f, 0.175413f, 0.1754f, 0.175387f, 0.175375f, 0.175362f, 0.175349f, 0.175336f, 0.175323f, 0.175311f, 0.175298f, 0.175285f, 0.175272f,
+0.17526f, 0.175247f, 0.175234f, 0.175221f, 0.175208f, 0.175196f, 0.175183f, 0.17517f, 0.175157f, 0.175145f, 0.175132f, 0.175119f, 0.175106f, 0.175094f, 0.175081f, 0.175068f, 0.175055f, 0.175042f, 0.17503f, 0.175017f,
+0.175004f, 0.174991f, 0.174979f, 0.174966f, 0.174953f, 0.17494f, 0.174928f, 0.174915f, 0.174902f, 0.174889f, 0.174876f, 0.174864f, 0.174851f, 0.174838f, 0.174825f, 0.174813f, 0.1748f, 0.174787f, 0.174774f, 0.174762f,
+0.174749f, 0.174736f, 0.174723f, 0.174711f, 0.174698f, 0.174685f, 0.174672f, 0.17466f, 0.174647f, 0.174634f, 0.174621f, 0.174609f, 0.174596f, 0.174583f, 0.17457f, 0.174558f, 0.174545f, 0.174532f, 0.174519f, 0.174507f,
+0.174494f, 0.174481f, 0.174468f, 0.174456f, 0.174443f, 0.17443f, 0.174417f, 0.174405f, 0.174392f, 0.174379f, 0.174366f, 0.174354f, 0.174341f, 0.174328f, 0.174315f, 0.174303f, 0.17429f, 0.174277f, 0.174264f, 0.174252f,
+0.174239f, 0.174226f, 0.174214f, 0.174201f, 0.174188f, 0.174175f, 0.174163f, 0.17415f, 0.174137f, 0.174124f, 0.174112f, 0.174099f, 0.174086f, 0.174073f, 0.174061f, 0.174048f, 0.174035f, 0.174022f, 0.17401f, 0.173997f,
+0.173984f, 0.173972f, 0.173959f, 0.173946f, 0.173933f, 0.173921f, 0.173908f, 0.173895f, 0.173882f, 0.17387f, 0.173857f, 0.173844f, 0.173832f, 0.173819f, 0.173806f, 0.173793f, 0.173781f, 0.173768f, 0.173755f, 0.173743f,
+0.17373f, 0.173717f, 0.173704f, 0.173692f, 0.173679f, 0.173666f, 0.173653f, 0.173641f, 0.173628f, 0.173615f, 0.173603f, 0.17359f, 0.173577f, 0.173564f, 0.173552f, 0.173539f, 0.173526f, 0.173514f, 0.173501f, 0.173488f,
+0.173476f, 0.173463f, 0.17345f, 0.173437f, 0.173425f, 0.173412f, 0.173399f, 0.173387f, 0.173374f, 0.173361f, 0.173348f, 0.173336f, 0.173323f, 0.17331f, 0.173298f, 0.173285f, 0.173272f, 0.173259f, 0.173247f, 0.173234f,
+0.173221f, 0.173209f, 0.173196f, 0.173183f, 0.173171f, 0.173158f, 0.173145f, 0.173132f, 0.17312f, 0.173107f, 0.173094f, 0.173082f, 0.173069f, 0.173056f, 0.173044f, 0.173031f, 0.173018f, 0.173006f, 0.172993f, 0.17298f,
+0.172967f, 0.172955f, 0.172942f, 0.172929f, 0.172917f, 0.172904f, 0.172891f, 0.172879f, 0.172866f, 0.172853f, 0.172841f, 0.172828f, 0.172815f, 0.172802f, 0.17279f, 0.172777f, 0.172764f, 0.172752f, 0.172739f, 0.172726f,
+0.172714f, 0.172701f, 0.172688f, 0.172676f, 0.172663f, 0.17265f, 0.172638f, 0.172625f, 0.172612f, 0.1726f, 0.172587f, 0.172574f, 0.172562f, 0.172549f, 0.172536f, 0.172524f, 0.172511f, 0.172498f, 0.172485f, 0.172473f,
+0.17246f, 0.172447f, 0.172435f, 0.172422f, 0.172409f, 0.172397f, 0.172384f, 0.172371f, 0.172359f, 0.172346f, 0.172333f, 0.172321f, 0.172308f, 0.172295f, 0.172283f, 0.17227f, 0.172257f, 0.172245f, 0.172232f, 0.172219f,
+0.172207f, 0.172194f, 0.172181f, 0.172169f, 0.172156f, 0.172143f, 0.172131f, 0.172118f, 0.172105f, 0.172093f, 0.17208f, 0.172067f, 0.172055f, 0.172042f, 0.17203f, 0.172017f, 0.172004f, 0.171992f, 0.171979f, 0.171966f,
+0.171954f, 0.171941f, 0.171928f, 0.171916f, 0.171903f, 0.17189f, 0.171878f, 0.171865f, 0.171852f, 0.17184f, 0.171827f, 0.171814f, 0.171802f, 0.171789f, 0.171776f, 0.171764f, 0.171751f, 0.171739f, 0.171726f, 0.171713f,
+0.171701f, 0.171688f, 0.171675f, 0.171663f, 0.17165f, 0.171637f, 0.171625f, 0.171612f, 0.171599f, 0.171587f, 0.171574f, 0.171561f, 0.171549f, 0.171536f, 0.171524f, 0.171511f, 0.171498f, 0.171486f, 0.171473f, 0.17146f,
+0.171448f, 0.171435f, 0.171422f, 0.17141f, 0.171397f, 0.171385f, 0.171372f, 0.171359f, 0.171347f, 0.171334f, 0.171321f, 0.171309f, 0.171296f, 0.171284f, 0.171271f, 0.171258f, 0.171246f, 0.171233f, 0.17122f, 0.171208f,
+0.171195f, 0.171182f, 0.17117f, 0.171157f, 0.171145f, 0.171132f, 0.171119f, 0.171107f, 0.171094f, 0.171082f, 0.171069f, 0.171056f, 0.171044f, 0.171031f, 0.171018f, 0.171006f, 0.170993f, 0.170981f, 0.170968f, 0.170955f,
+0.170943f, 0.17093f, 0.170917f, 0.170905f, 0.170892f, 0.17088f, 0.170867f, 0.170854f, 0.170842f, 0.170829f, 0.170817f, 0.170804f, 0.170791f, 0.170779f, 0.170766f, 0.170753f, 0.170741f, 0.170728f, 0.170716f, 0.170703f,
+0.17069f, 0.170678f, 0.170665f, 0.170653f, 0.17064f, 0.170627f, 0.170615f, 0.170602f, 0.17059f, 0.170577f, 0.170564f, 0.170552f, 0.170539f, 0.170527f, 0.170514f, 0.170501f, 0.170489f, 0.170476f, 0.170464f, 0.170451f,
+0.170438f, 0.170426f, 0.170413f, 0.170401f, 0.170388f, 0.170375f, 0.170363f, 0.17035f, 0.170338f, 0.170325f, 0.170312f, 0.1703f, 0.170287f, 0.170275f, 0.170262f, 0.170249f, 0.170237f, 0.170224f, 0.170212f, 0.170199f,
+0.170186f, 0.170174f, 0.170161f, 0.170149f, 0.170136f, 0.170124f, 0.170111f, 0.170098f, 0.170086f, 0.170073f, 0.170061f, 0.170048f, 0.170035f, 0.170023f, 0.17001f, 0.169998f, 0.169985f, 0.169973f, 0.16996f, 0.169947f,
+0.169935f, 0.169922f, 0.16991f, 0.169897f, 0.169884f, 0.169872f, 0.169859f, 0.169847f, 0.169834f, 0.169822f, 0.169809f, 0.169796f, 0.169784f, 0.169771f, 0.169759f, 0.169746f, 0.169734f, 0.169721f, 0.169708f, 0.169696f,
+0.169683f, 0.169671f, 0.169658f, 0.169646f, 0.169633f, 0.16962f, 0.169608f, 0.169595f, 0.169583f, 0.16957f, 0.169558f, 0.169545f, 0.169532f, 0.16952f, 0.169507f, 0.169495f, 0.169482f, 0.16947f, 0.169457f, 0.169444f,
+0.169432f, 0.169419f, 0.169407f, 0.169394f, 0.169382f, 0.169369f, 0.169357f, 0.169344f, 0.169331f, 0.169319f, 0.169306f, 0.169294f, 0.169281f, 0.169269f, 0.169256f, 0.169244f, 0.169231f, 0.169218f, 0.169206f, 0.169193f,
+0.169181f, 0.169168f, 0.169156f, 0.169143f, 0.169131f, 0.169118f, 0.169105f, 0.169093f, 0.16908f, 0.169068f, 0.169055f, 0.169043f, 0.16903f, 0.169018f, 0.169005f, 0.168993f, 0.16898f, 0.168967f, 0.168955f, 0.168942f,
+0.16893f, 0.168917f, 0.168905f, 0.168892f, 0.16888f, 0.168867f, 0.168855f, 0.168842f, 0.16883f, 0.168817f, 0.168804f, 0.168792f, 0.168779f, 0.168767f, 0.168754f, 0.168742f, 0.168729f, 0.168717f, 0.168704f, 0.168692f,
+0.168679f, 0.168667f, 0.168654f, 0.168641f, 0.168629f, 0.168616f, 0.168604f, 0.168591f, 0.168579f, 0.168566f, 0.168554f, 0.168541f, 0.168529f, 0.168516f, 0.168504f, 0.168491f, 0.168479f, 0.168466f, 0.168454f, 0.168441f,
+0.168428f, 0.168416f, 0.168403f, 0.168391f, 0.168378f, 0.168366f, 0.168353f, 0.168341f, 0.168328f, 0.168316f, 0.168303f, 0.168291f, 0.168278f, 0.168266f, 0.168253f, 0.168241f, 0.168228f, 0.168216f, 0.168203f, 0.168191f,
+0.168178f, 0.168166f, 0.168153f, 0.168141f, 0.168128f, 0.168116f, 0.168103f, 0.16809f, 0.168078f, 0.168065f, 0.168053f, 0.16804f, 0.168028f, 0.168015f, 0.168003f, 0.16799f, 0.167978f, 0.167965f, 0.167953f, 0.16794f,
+0.167928f, 0.167915f, 0.167903f, 0.16789f, 0.167878f, 0.167865f, 0.167853f, 0.16784f, 0.167828f, 0.167815f, 0.167803f, 0.16779f, 0.167778f, 0.167765f, 0.167753f, 0.16774f, 0.167728f, 0.167715f, 0.167703f, 0.16769f,
+0.167678f, 0.167665f, 0.167653f, 0.16764f, 0.167628f, 0.167615f, 0.167603f, 0.16759f, 0.167578f, 0.167565f, 0.167553f, 0.16754f, 0.167528f, 0.167515f, 0.167503f, 0.16749f, 0.167478f, 0.167465f, 0.167453f, 0.167441f,
+0.167428f, 0.167416f, 0.167403f, 0.167391f, 0.167378f, 0.167366f, 0.167353f, 0.167341f, 0.167328f, 0.167316f, 0.167303f, 0.167291f, 0.167278f, 0.167266f, 0.167253f, 0.167241f, 0.167228f, 0.167216f, 0.167203f, 0.167191f,
+0.167178f, 0.167166f, 0.167153f, 0.167141f, 0.167128f, 0.167116f, 0.167104f, 0.167091f, 0.167079f, 0.167066f, 0.167054f, 0.167041f, 0.167029f, 0.167016f, 0.167004f, 0.166991f, 0.166979f, 0.166966f, 0.166954f, 0.166941f,
+0.166929f, 0.166916f, 0.166904f, 0.166891f, 0.166879f, 0.166867f, 0.166854f, 0.166842f, 0.166829f, 0.166817f, 0.166804f, 0.166792f, 0.166779f, 0.166767f, 0.166754f, 0.166742f, 0.166729f, 0.166717f, 0.166705f, 0.166692f,
+0.16668f, 0.166667f, 0.166655f, 0.166642f, 0.16663f, 0.166617f, 0.166605f, 0.166592f, 0.16658f, 0.166568f, 0.166555f, 0.166543f, 0.16653f, 0.166518f, 0.166505f, 0.166493f, 0.16648f, 0.166468f, 0.166455f, 0.166443f,
+0.166431f, 0.166418f, 0.166406f, 0.166393f, 0.166381f, 0.166368f, 0.166356f, 0.166343f, 0.166331f, 0.166319f, 0.166306f, 0.166294f, 0.166281f, 0.166269f, 0.166256f, 0.166244f, 0.166231f, 0.166219f, 0.166207f, 0.166194f,
+0.166182f, 0.166169f, 0.166157f, 0.166144f, 0.166132f, 0.166119f, 0.166107f, 0.166095f, 0.166082f, 0.16607f, 0.166057f, 0.166045f, 0.166032f, 0.16602f, 0.166008f, 0.165995f, 0.165983f, 0.16597f, 0.165958f, 0.165945f,
+0.165933f, 0.16592f, 0.165908f, 0.165896f, 0.165883f, 0.165871f, 0.165858f, 0.165846f, 0.165833f, 0.165821f, 0.165809f, 0.165796f, 0.165784f, 0.165771f, 0.165759f, 0.165746f, 0.165734f, 0.165722f, 0.165709f, 0.165697f,
+0.165684f, 0.165672f, 0.16566f, 0.165647f, 0.165635f, 0.165622f, 0.16561f, 0.165597f, 0.165585f, 0.165573f, 0.16556f, 0.165548f, 0.165535f, 0.165523f, 0.165511f, 0.165498f, 0.165486f, 0.165473f, 0.165461f, 0.165448f,
+0.165436f, 0.165424f, 0.165411f, 0.165399f, 0.165386f, 0.165374f, 0.165362f, 0.165349f, 0.165337f, 0.165324f, 0.165312f, 0.1653f, 0.165287f, 0.165275f, 0.165262f, 0.16525f, 0.165237f, 0.165225f, 0.165213f, 0.1652f,
+0.165188f, 0.165175f, 0.165163f, 0.165151f, 0.165138f, 0.165126f, 0.165113f, 0.165101f, 0.165089f, 0.165076f, 0.165064f, 0.165051f, 0.165039f, 0.165027f, 0.165014f, 0.165002f, 0.164989f, 0.164977f, 0.164965f, 0.164952f,
+0.16494f, 0.164928f, 0.164915f, 0.164903f, 0.16489f, 0.164878f, 0.164866f, 0.164853f, 0.164841f, 0.164828f, 0.164816f, 0.164804f, 0.164791f, 0.164779f, 0.164766f, 0.164754f, 0.164742f, 0.164729f, 0.164717f, 0.164704f,
+0.164692f, 0.16468f, 0.164667f, 0.164655f, 0.164643f, 0.16463f, 0.164618f, 0.164605f, 0.164593f, 0.164581f, 0.164568f, 0.164556f, 0.164544f, 0.164531f, 0.164519f, 0.164506f, 0.164494f, 0.164482f, 0.164469f, 0.164457f,
+0.164445f, 0.164432f, 0.16442f, 0.164407f, 0.164395f, 0.164383f, 0.16437f, 0.164358f, 0.164346f, 0.164333f, 0.164321f, 0.164308f, 0.164296f, 0.164284f, 0.164271f, 0.164259f, 0.164247f, 0.164234f, 0.164222f, 0.164209f,
+0.164197f, 0.164185f, 0.164172f, 0.16416f, 0.164148f, 0.164135f, 0.164123f, 0.164111f, 0.164098f, 0.164086f, 0.164073f, 0.164061f, 0.164049f, 0.164036f, 0.164024f, 0.164012f, 0.163999f, 0.163987f, 0.163975f, 0.163962f,
+0.16395f, 0.163938f, 0.163925f, 0.163913f, 0.1639f, 0.163888f, 0.163876f, 0.163863f, 0.163851f, 0.163839f, 0.163826f, 0.163814f, 0.163802f, 0.163789f, 0.163777f, 0.163765f, 0.163752f, 0.16374f, 0.163728f, 0.163715f,
+0.163703f, 0.16369f, 0.163678f, 0.163666f, 0.163653f, 0.163641f, 0.163629f, 0.163616f, 0.163604f, 0.163592f, 0.163579f, 0.163567f, 0.163555f, 0.163542f, 0.16353f, 0.163518f, 0.163505f, 0.163493f, 0.163481f, 0.163468f,
+0.163456f, 0.163444f, 0.163431f, 0.163419f, 0.163407f, 0.163394f, 0.163382f, 0.16337f, 0.163357f, 0.163345f, 0.163333f, 0.16332f, 0.163308f, 0.163296f, 0.163283f, 0.163271f, 0.163259f, 0.163246f, 0.163234f, 0.163222f,
+0.163209f, 0.163197f, 0.163185f, 0.163172f, 0.16316f, 0.163148f, 0.163135f, 0.163123f, 0.163111f, 0.163098f, 0.163086f, 0.163074f, 0.163061f, 0.163049f, 0.163037f, 0.163024f, 0.163012f, 0.163f, 0.162987f, 0.162975f,
+0.162963f, 0.16295f, 0.162938f, 0.162926f, 0.162914f, 0.162901f, 0.162889f, 0.162877f, 0.162864f, 0.162852f, 0.16284f, 0.162827f, 0.162815f, 0.162803f, 0.16279f, 0.162778f, 0.162766f, 0.162753f, 0.162741f, 0.162729f,
+0.162717f, 0.162704f, 0.162692f, 0.16268f, 0.162667f, 0.162655f, 0.162643f, 0.16263f, 0.162618f, 0.162606f, 0.162593f, 0.162581f, 0.162569f, 0.162557f, 0.162544f, 0.162532f, 0.16252f, 0.162507f, 0.162495f, 0.162483f,
+0.16247f, 0.162458f, 0.162446f, 0.162433f, 0.162421f, 0.162409f, 0.162397f, 0.162384f, 0.162372f, 0.16236f, 0.162347f, 0.162335f, 0.162323f, 0.162311f, 0.162298f, 0.162286f, 0.162274f, 0.162261f, 0.162249f, 0.162237f,
+0.162224f, 0.162212f, 0.1622f, 0.162188f, 0.162175f, 0.162163f, 0.162151f, 0.162138f, 0.162126f, 0.162114f, 0.162102f, 0.162089f, 0.162077f, 0.162065f, 0.162052f, 0.16204f, 0.162028f, 0.162016f, 0.162003f, 0.161991f,
+0.161979f, 0.161966f, 0.161954f, 0.161942f, 0.16193f, 0.161917f, 0.161905f, 0.161893f, 0.16188f, 0.161868f, 0.161856f, 0.161844f, 0.161831f, 0.161819f, 0.161807f, 0.161795f, 0.161782f, 0.16177f, 0.161758f, 0.161745f,
+0.161733f, 0.161721f, 0.161709f, 0.161696f, 0.161684f, 0.161672f, 0.16166f, 0.161647f, 0.161635f, 0.161623f, 0.16161f, 0.161598f, 0.161586f, 0.161574f, 0.161561f, 0.161549f, 0.161537f, 0.161525f, 0.161512f, 0.1615f,
+0.161488f, 0.161476f, 0.161463f, 0.161451f, 0.161439f, 0.161427f, 0.161414f, 0.161402f, 0.16139f, 0.161377f, 0.161365f, 0.161353f, 0.161341f, 0.161328f, 0.161316f, 0.161304f, 0.161292f, 0.161279f, 0.161267f, 0.161255f,
+0.161243f, 0.16123f, 0.161218f, 0.161206f, 0.161194f, 0.161181f, 0.161169f, 0.161157f, 0.161145f, 0.161132f, 0.16112f, 0.161108f, 0.161096f, 0.161083f, 0.161071f, 0.161059f, 0.161047f, 0.161034f, 0.161022f, 0.16101f,
+0.160998f, 0.160985f, 0.160973f, 0.160961f, 0.160949f, 0.160936f, 0.160924f, 0.160912f, 0.1609f, 0.160887f, 0.160875f, 0.160863f, 0.160851f, 0.160838f, 0.160826f, 0.160814f, 0.160802f, 0.16079f, 0.160777f, 0.160765f,
+0.160753f, 0.160741f, 0.160728f, 0.160716f, 0.160704f, 0.160692f, 0.160679f, 0.160667f, 0.160655f, 0.160643f, 0.160631f, 0.160618f, 0.160606f, 0.160594f, 0.160582f, 0.160569f, 0.160557f, 0.160545f, 0.160533f, 0.16052f,
+0.160508f, 0.160496f, 0.160484f, 0.160472f, 0.160459f, 0.160447f, 0.160435f, 0.160423f, 0.16041f, 0.160398f, 0.160386f, 0.160374f, 0.160362f, 0.160349f, 0.160337f, 0.160325f, 0.160313f, 0.1603f, 0.160288f, 0.160276f,
+0.160264f, 0.160252f, 0.160239f, 0.160227f, 0.160215f, 0.160203f, 0.16019f, 0.160178f, 0.160166f, 0.160154f, 0.160142f, 0.160129f, 0.160117f, 0.160105f, 0.160093f, 0.160081f, 0.160068f, 0.160056f, 0.160044f, 0.160032f,
+0.16002f, 0.160007f, 0.159995f, 0.159983f, 0.159971f, 0.159958f, 0.159946f, 0.159934f, 0.159922f, 0.15991f, 0.159897f, 0.159885f, 0.159873f, 0.159861f, 0.159849f, 0.159836f, 0.159824f, 0.159812f, 0.1598f, 0.159788f,
+0.159775f, 0.159763f, 0.159751f, 0.159739f, 0.159727f, 0.159714f, 0.159702f, 0.15969f, 0.159678f, 0.159666f, 0.159654f, 0.159641f, 0.159629f, 0.159617f, 0.159605f, 0.159593f, 0.15958f, 0.159568f, 0.159556f, 0.159544f,
+0.159532f, 0.159519f, 0.159507f, 0.159495f, 0.159483f, 0.159471f, 0.159458f, 0.159446f, 0.159434f, 0.159422f, 0.15941f, 0.159398f, 0.159385f, 0.159373f, 0.159361f, 0.159349f, 0.159337f, 0.159324f, 0.159312f, 0.1593f,
+0.159288f, 0.159276f, 0.159264f, 0.159251f, 0.159239f, 0.159227f, 0.159215f, 0.159203f, 0.15919f, 0.159178f, 0.159166f, 0.159154f, 0.159142f, 0.15913f, 0.159117f, 0.159105f, 0.159093f, 0.159081f, 0.159069f, 0.159057f,
+0.159044f, 0.159032f, 0.15902f, 0.159008f, 0.158996f, 0.158984f, 0.158971f, 0.158959f, 0.158947f, 0.158935f, 0.158923f, 0.158911f, 0.158898f, 0.158886f, 0.158874f, 0.158862f, 0.15885f, 0.158838f, 0.158825f, 0.158813f,
+0.158801f, 0.158789f, 0.158777f, 0.158765f, 0.158752f, 0.15874f, 0.158728f, 0.158716f, 0.158704f, 0.158692f, 0.158679f, 0.158667f, 0.158655f, 0.158643f, 0.158631f, 0.158619f, 0.158607f, 0.158594f, 0.158582f, 0.15857f,
+0.158558f, 0.158546f, 0.158534f, 0.158521f, 0.158509f, 0.158497f, 0.158485f, 0.158473f, 0.158461f, 0.158449f, 0.158436f, 0.158424f, 0.158412f, 0.1584f, 0.158388f, 0.158376f, 0.158364f, 0.158351f, 0.158339f, 0.158327f,
+0.158315f, 0.158303f, 0.158291f, 0.158279f, 0.158266f, 0.158254f, 0.158242f, 0.15823f, 0.158218f, 0.158206f, 0.158194f, 0.158181f, 0.158169f, 0.158157f, 0.158145f, 0.158133f, 0.158121f, 0.158109f, 0.158097f, 0.158084f,
+0.158072f, 0.15806f, 0.158048f, 0.158036f, 0.158024f, 0.158012f, 0.157999f, 0.157987f, 0.157975f, 0.157963f, 0.157951f, 0.157939f, 0.157927f, 0.157915f, 0.157902f, 0.15789f, 0.157878f, 0.157866f, 0.157854f, 0.157842f,
+0.15783f, 0.157818f, 0.157805f, 0.157793f, 0.157781f, 0.157769f, 0.157757f, 0.157745f, 0.157733f, 0.157721f, 0.157708f, 0.157696f, 0.157684f, 0.157672f, 0.15766f, 0.157648f, 0.157636f, 0.157624f, 0.157612f, 0.157599f,
+0.157587f, 0.157575f, 0.157563f, 0.157551f, 0.157539f, 0.157527f, 0.157515f, 0.157502f, 0.15749f, 0.157478f, 0.157466f, 0.157454f, 0.157442f, 0.15743f, 0.157418f, 0.157406f, 0.157394f, 0.157381f, 0.157369f, 0.157357f,
+0.157345f, 0.157333f, 0.157321f, 0.157309f, 0.157297f, 0.157285f, 0.157272f, 0.15726f, 0.157248f, 0.157236f, 0.157224f, 0.157212f, 0.1572f, 0.157188f, 0.157176f, 0.157164f, 0.157151f, 0.157139f, 0.157127f, 0.157115f,
+0.157103f, 0.157091f, 0.157079f, 0.157067f, 0.157055f, 0.157043f, 0.157031f, 0.157018f, 0.157006f, 0.156994f, 0.156982f, 0.15697f, 0.156958f, 0.156946f, 0.156934f, 0.156922f, 0.15691f, 0.156898f, 0.156885f, 0.156873f,
+0.156861f, 0.156849f, 0.156837f, 0.156825f, 0.156813f, 0.156801f, 0.156789f, 0.156777f, 0.156765f, 0.156752f, 0.15674f, 0.156728f, 0.156716f, 0.156704f, 0.156692f, 0.15668f, 0.156668f, 0.156656f, 0.156644f, 0.156632f,
+0.15662f, 0.156608f, 0.156595f, 0.156583f, 0.156571f, 0.156559f, 0.156547f, 0.156535f, 0.156523f, 0.156511f, 0.156499f, 0.156487f, 0.156475f, 0.156463f, 0.156451f, 0.156438f, 0.156426f, 0.156414f, 0.156402f, 0.15639f,
+0.156378f, 0.156366f, 0.156354f, 0.156342f, 0.15633f, 0.156318f, 0.156306f, 0.156294f, 0.156282f, 0.15627f, 0.156257f, 0.156245f, 0.156233f, 0.156221f, 0.156209f, 0.156197f, 0.156185f, 0.156173f, 0.156161f, 0.156149f,
+0.156137f, 0.156125f, 0.156113f, 0.156101f, 0.156089f, 0.156077f, 0.156065f, 0.156052f, 0.15604f, 0.156028f, 0.156016f, 0.156004f, 0.155992f, 0.15598f, 0.155968f, 0.155956f, 0.155944f, 0.155932f, 0.15592f, 0.155908f,
+0.155896f, 0.155884f, 0.155872f, 0.15586f, 0.155848f, 0.155836f, 0.155824f, 0.155811f, 0.155799f, 0.155787f, 0.155775f, 0.155763f, 0.155751f, 0.155739f, 0.155727f, 0.155715f, 0.155703f, 0.155691f, 0.155679f, 0.155667f,
+0.155655f, 0.155643f, 0.155631f, 0.155619f, 0.155607f, 0.155595f, 0.155583f, 0.155571f, 0.155559f, 0.155547f, 0.155535f, 0.155522f, 0.15551f, 0.155498f, 0.155486f, 0.155474f, 0.155462f, 0.15545f, 0.155438f, 0.155426f,
+0.155414f, 0.155402f, 0.15539f, 0.155378f, 0.155366f, 0.155354f, 0.155342f, 0.15533f, 0.155318f, 0.155306f, 0.155294f, 0.155282f, 0.15527f, 0.155258f, 0.155246f, 0.155234f, 0.155222f, 0.15521f, 0.155198f, 0.155186f,
+0.155174f, 0.155162f, 0.15515f, 0.155138f, 0.155126f, 0.155114f, 0.155102f, 0.15509f, 0.155078f, 0.155065f, 0.155053f, 0.155041f, 0.155029f, 0.155017f, 0.155005f, 0.154993f, 0.154981f, 0.154969f, 0.154957f, 0.154945f,
+0.154933f, 0.154921f, 0.154909f, 0.154897f, 0.154885f, 0.154873f, 0.154861f, 0.154849f, 0.154837f, 0.154825f, 0.154813f, 0.154801f, 0.154789f, 0.154777f, 0.154765f, 0.154753f, 0.154741f, 0.154729f, 0.154717f, 0.154705f,
+0.154693f, 0.154681f, 0.154669f, 0.154657f, 0.154645f, 0.154633f, 0.154621f, 0.154609f, 0.154597f, 0.154585f, 0.154573f, 0.154561f, 0.154549f, 0.154537f, 0.154525f, 0.154513f, 0.154501f, 0.154489f, 0.154477f, 0.154465f,
+0.154453f, 0.154441f, 0.154429f, 0.154417f, 0.154405f, 0.154393f, 0.154381f, 0.154369f, 0.154357f, 0.154345f, 0.154333f, 0.154321f, 0.154309f, 0.154297f, 0.154285f, 0.154273f, 0.154261f, 0.154249f, 0.154237f, 0.154225f,
+0.154213f, 0.154201f, 0.154189f, 0.154177f, 0.154166f, 0.154154f, 0.154142f, 0.15413f, 0.154118f, 0.154106f, 0.154094f, 0.154082f, 0.15407f, 0.154058f, 0.154046f, 0.154034f, 0.154022f, 0.15401f, 0.153998f, 0.153986f,
+0.153974f, 0.153962f, 0.15395f, 0.153938f, 0.153926f, 0.153914f, 0.153902f, 0.15389f, 0.153878f, 0.153866f, 0.153854f, 0.153842f, 0.15383f, 0.153818f, 0.153806f, 0.153794f, 0.153782f, 0.15377f, 0.153758f, 0.153746f,
+0.153734f, 0.153722f, 0.153711f, 0.153699f, 0.153687f, 0.153675f, 0.153663f, 0.153651f, 0.153639f, 0.153627f, 0.153615f, 0.153603f, 0.153591f, 0.153579f, 0.153567f, 0.153555f, 0.153543f, 0.153531f, 0.153519f, 0.153507f,
+0.153495f, 0.153483f, 0.153471f, 0.153459f, 0.153447f, 0.153435f, 0.153423f, 0.153412f, 0.1534f, 0.153388f, 0.153376f, 0.153364f, 0.153352f, 0.15334f, 0.153328f, 0.153316f, 0.153304f, 0.153292f, 0.15328f, 0.153268f,
+0.153256f, 0.153244f, 0.153232f, 0.15322f, 0.153208f, 0.153196f, 0.153185f, 0.153173f, 0.153161f, 0.153149f, 0.153137f, 0.153125f, 0.153113f, 0.153101f, 0.153089f, 0.153077f, 0.153065f, 0.153053f, 0.153041f, 0.153029f,
+0.153017f, 0.153005f, 0.152993f, 0.152982f, 0.15297f, 0.152958f, 0.152946f, 0.152934f, 0.152922f, 0.15291f, 0.152898f, 0.152886f, 0.152874f, 0.152862f, 0.15285f, 0.152838f, 0.152826f, 0.152814f, 0.152803f, 0.152791f,
+0.152779f, 0.152767f, 0.152755f, 0.152743f, 0.152731f, 0.152719f, 0.152707f, 0.152695f, 0.152683f, 0.152671f, 0.152659f, 0.152648f, 0.152636f, 0.152624f, 0.152612f, 0.1526f, 0.152588f, 0.152576f, 0.152564f, 0.152552f,
+0.15254f, 0.152528f, 0.152516f, 0.152504f, 0.152493f, 0.152481f, 0.152469f, 0.152457f, 0.152445f, 0.152433f, 0.152421f, 0.152409f, 0.152397f, 0.152385f, 0.152373f, 0.152361f, 0.15235f, 0.152338f, 0.152326f, 0.152314f,
+0.152302f, 0.15229f, 0.152278f, 0.152266f, 0.152254f, 0.152242f, 0.15223f, 0.152219f, 0.152207f, 0.152195f, 0.152183f, 0.152171f, 0.152159f, 0.152147f, 0.152135f, 0.152123f, 0.152111f, 0.1521f, 0.152088f, 0.152076f,
+0.152064f, 0.152052f, 0.15204f, 0.152028f, 0.152016f, 0.152004f, 0.151992f, 0.151981f, 0.151969f, 0.151957f, 0.151945f, 0.151933f, 0.151921f, 0.151909f, 0.151897f, 0.151885f, 0.151873f, 0.151862f, 0.15185f, 0.151838f,
+0.151826f, 0.151814f, 0.151802f, 0.15179f, 0.151778f, 0.151766f, 0.151755f, 0.151743f, 0.151731f, 0.151719f, 0.151707f, 0.151695f, 0.151683f, 0.151671f, 0.151659f, 0.151648f, 0.151636f, 0.151624f, 0.151612f, 0.1516f,
+0.151588f, 0.151576f, 0.151564f, 0.151553f, 0.151541f, 0.151529f, 0.151517f, 0.151505f, 0.151493f, 0.151481f, 0.151469f, 0.151458f, 0.151446f, 0.151434f, 0.151422f, 0.15141f, 0.151398f, 0.151386f, 0.151374f, 0.151363f,
+0.151351f, 0.151339f, 0.151327f, 0.151315f, 0.151303f, 0.151291f, 0.151279f, 0.151268f, 0.151256f, 0.151244f, 0.151232f, 0.15122f, 0.151208f, 0.151196f, 0.151184f, 0.151173f, 0.151161f, 0.151149f, 0.151137f, 0.151125f,
+0.151113f, 0.151101f, 0.15109f, 0.151078f, 0.151066f, 0.151054f, 0.151042f, 0.15103f, 0.151018f, 0.151007f, 0.150995f, 0.150983f, 0.150971f, 0.150959f, 0.150947f, 0.150935f, 0.150924f, 0.150912f, 0.1509f, 0.150888f,
+0.150876f, 0.150864f, 0.150852f, 0.150841f, 0.150829f, 0.150817f, 0.150805f, 0.150793f, 0.150781f, 0.150769f, 0.150758f, 0.150746f, 0.150734f, 0.150722f, 0.15071f, 0.150698f, 0.150687f, 0.150675f, 0.150663f, 0.150651f,
+0.150639f, 0.150627f, 0.150615f, 0.150604f, 0.150592f, 0.15058f, 0.150568f, 0.150556f, 0.150544f, 0.150533f, 0.150521f, 0.150509f, 0.150497f, 0.150485f, 0.150473f, 0.150462f, 0.15045f, 0.150438f, 0.150426f, 0.150414f,
+0.150402f, 0.15039f, 0.150379f, 0.150367f, 0.150355f, 0.150343f, 0.150331f, 0.150319f, 0.150308f, 0.150296f, 0.150284f, 0.150272f, 0.15026f, 0.150249f, 0.150237f, 0.150225f, 0.150213f, 0.150201f, 0.150189f, 0.150178f,
+0.150166f, 0.150154f, 0.150142f, 0.15013f, 0.150118f, 0.150107f, 0.150095f, 0.150083f, 0.150071f, 0.150059f, 0.150047f, 0.150036f, 0.150024f, 0.150012f, 0.15f, 0.149988f, 0.149977f, 0.149965f, 0.149953f, 0.149941f,
+0.149929f, 0.149917f, 0.149906f, 0.149894f, 0.149882f, 0.14987f, 0.149858f, 0.149847f, 0.149835f, 0.149823f, 0.149811f, 0.149799f, 0.149788f, 0.149776f, 0.149764f, 0.149752f, 0.14974f, 0.149728f, 0.149717f, 0.149705f,
+0.149693f, 0.149681f, 0.149669f, 0.149658f, 0.149646f, 0.149634f, 0.149622f, 0.14961f, 0.149599f, 0.149587f, 0.149575f, 0.149563f, 0.149551f, 0.14954f, 0.149528f, 0.149516f, 0.149504f, 0.149492f, 0.149481f, 0.149469f,
+0.149457f, 0.149445f, 0.149433f, 0.149422f, 0.14941f, 0.149398f, 0.149386f, 0.149374f, 0.149363f, 0.149351f, 0.149339f, 0.149327f, 0.149315f, 0.149304f, 0.149292f, 0.14928f, 0.149268f, 0.149256f, 0.149245f, 0.149233f,
+0.149221f, 0.149209f, 0.149198f, 0.149186f, 0.149174f, 0.149162f, 0.14915f, 0.149139f, 0.149127f, 0.149115f, 0.149103f, 0.149091f, 0.14908f, 0.149068f, 0.149056f, 0.149044f, 0.149033f, 0.149021f, 0.149009f, 0.148997f,
+0.148985f, 0.148974f, 0.148962f, 0.14895f, 0.148938f, 0.148927f, 0.148915f, 0.148903f, 0.148891f, 0.148879f, 0.148868f, 0.148856f, 0.148844f, 0.148832f, 0.148821f, 0.148809f, 0.148797f, 0.148785f, 0.148773f, 0.148762f,
+0.14875f, 0.148738f, 0.148726f, 0.148715f, 0.148703f, 0.148691f, 0.148679f, 0.148668f, 0.148656f, 0.148644f, 0.148632f, 0.148621f, 0.148609f, 0.148597f, 0.148585f, 0.148573f, 0.148562f, 0.14855f, 0.148538f, 0.148526f,
+0.148515f, 0.148503f, 0.148491f, 0.148479f, 0.148468f, 0.148456f, 0.148444f, 0.148432f, 0.148421f, 0.148409f, 0.148397f, 0.148385f, 0.148374f, 0.148362f, 0.14835f, 0.148338f, 0.148327f, 0.148315f, 0.148303f, 0.148291f,
+0.14828f, 0.148268f, 0.148256f, 0.148244f, 0.148233f, 0.148221f, 0.148209f, 0.148197f, 0.148186f, 0.148174f, 0.148162f, 0.14815f, 0.148139f, 0.148127f, 0.148115f, 0.148103f, 0.148092f, 0.14808f, 0.148068f, 0.148056f,
+0.148045f, 0.148033f, 0.148021f, 0.148009f, 0.147998f, 0.147986f, 0.147974f, 0.147962f, 0.147951f, 0.147939f, 0.147927f, 0.147915f, 0.147904f, 0.147892f, 0.14788f, 0.147869f, 0.147857f, 0.147845f, 0.147833f, 0.147822f,
+0.14781f, 0.147798f, 0.147786f, 0.147775f, 0.147763f, 0.147751f, 0.147739f, 0.147728f, 0.147716f, 0.147704f, 0.147693f, 0.147681f, 0.147669f, 0.147657f, 0.147646f, 0.147634f, 0.147622f, 0.14761f, 0.147599f, 0.147587f,
+0.147575f, 0.147564f, 0.147552f, 0.14754f, 0.147528f, 0.147517f, 0.147505f, 0.147493f, 0.147482f, 0.14747f, 0.147458f, 0.147446f, 0.147435f, 0.147423f, 0.147411f, 0.147399f, 0.147388f, 0.147376f, 0.147364f, 0.147353f,
+0.147341f, 0.147329f, 0.147317f, 0.147306f, 0.147294f, 0.147282f, 0.147271f, 0.147259f, 0.147247f, 0.147235f, 0.147224f, 0.147212f, 0.1472f, 0.147189f, 0.147177f, 0.147165f, 0.147154f, 0.147142f, 0.14713f, 0.147118f,
+0.147107f, 0.147095f, 0.147083f, 0.147072f, 0.14706f, 0.147048f, 0.147036f, 0.147025f, 0.147013f, 0.147001f, 0.14699f, 0.146978f, 0.146966f, 0.146955f, 0.146943f, 0.146931f, 0.146919f, 0.146908f, 0.146896f, 0.146884f,
+0.146873f, 0.146861f, 0.146849f, 0.146838f, 0.146826f, 0.146814f, 0.146803f, 0.146791f, 0.146779f, 0.146767f, 0.146756f, 0.146744f, 0.146732f, 0.146721f, 0.146709f, 0.146697f, 0.146686f, 0.146674f, 0.146662f, 0.146651f,
+0.146639f, 0.146627f, 0.146616f, 0.146604f, 0.146592f, 0.14658f, 0.146569f, 0.146557f, 0.146545f, 0.146534f, 0.146522f, 0.14651f, 0.146499f, 0.146487f, 0.146475f, 0.146464f, 0.146452f, 0.14644f, 0.146429f, 0.146417f,
+0.146405f, 0.146394f, 0.146382f, 0.14637f, 0.146359f, 0.146347f, 0.146335f, 0.146324f, 0.146312f, 0.1463f, 0.146289f, 0.146277f, 0.146265f, 0.146253f, 0.146242f, 0.14623f, 0.146218f, 0.146207f, 0.146195f, 0.146183f,
+0.146172f, 0.14616f, 0.146148f, 0.146137f, 0.146125f, 0.146113f, 0.146102f, 0.14609f, 0.146078f, 0.146067f, 0.146055f, 0.146043f, 0.146032f, 0.14602f, 0.146009f, 0.145997f, 0.145985f, 0.145974f, 0.145962f, 0.14595f,
+0.145939f, 0.145927f, 0.145915f, 0.145904f, 0.145892f, 0.14588f, 0.145869f, 0.145857f, 0.145845f, 0.145834f, 0.145822f, 0.14581f, 0.145799f, 0.145787f, 0.145775f, 0.145764f, 0.145752f, 0.14574f, 0.145729f, 0.145717f,
+0.145705f, 0.145694f, 0.145682f, 0.145671f, 0.145659f, 0.145647f, 0.145636f, 0.145624f, 0.145612f, 0.145601f, 0.145589f, 0.145577f, 0.145566f, 0.145554f, 0.145542f, 0.145531f, 0.145519f, 0.145508f, 0.145496f, 0.145484f,
+0.145473f, 0.145461f, 0.145449f, 0.145438f, 0.145426f, 0.145414f, 0.145403f, 0.145391f, 0.145379f, 0.145368f, 0.145356f, 0.145345f, 0.145333f, 0.145321f, 0.14531f, 0.145298f, 0.145286f, 0.145275f, 0.145263f, 0.145252f,
+0.14524f, 0.145228f, 0.145217f, 0.145205f, 0.145193f, 0.145182f, 0.14517f, 0.145158f, 0.145147f, 0.145135f, 0.145124f, 0.145112f, 0.1451f, 0.145089f, 0.145077f, 0.145065f, 0.145054f, 0.145042f, 0.145031f, 0.145019f,
+0.145007f, 0.144996f, 0.144984f, 0.144973f, 0.144961f, 0.144949f, 0.144938f, 0.144926f, 0.144914f, 0.144903f, 0.144891f, 0.14488f, 0.144868f, 0.144856f, 0.144845f, 0.144833f, 0.144821f, 0.14481f, 0.144798f, 0.144787f,
+0.144775f, 0.144763f, 0.144752f, 0.14474f, 0.144729f, 0.144717f, 0.144705f, 0.144694f, 0.144682f, 0.144671f, 0.144659f, 0.144647f, 0.144636f, 0.144624f, 0.144613f, 0.144601f, 0.144589f, 0.144578f, 0.144566f, 0.144555f,
+0.144543f, 0.144531f, 0.14452f, 0.144508f, 0.144497f, 0.144485f, 0.144473f, 0.144462f, 0.14445f, 0.144439f, 0.144427f, 0.144415f, 0.144404f, 0.144392f, 0.144381f, 0.144369f, 0.144357f, 0.144346f, 0.144334f, 0.144323f,
+0.144311f, 0.144299f, 0.144288f, 0.144276f, 0.144265f, 0.144253f, 0.144241f, 0.14423f, 0.144218f, 0.144207f, 0.144195f, 0.144183f, 0.144172f, 0.14416f, 0.144149f, 0.144137f, 0.144126f, 0.144114f, 0.144102f, 0.144091f,
+0.144079f, 0.144068f, 0.144056f, 0.144044f, 0.144033f, 0.144021f, 0.14401f, 0.143998f, 0.143987f, 0.143975f, 0.143963f, 0.143952f, 0.14394f, 0.143929f, 0.143917f, 0.143905f, 0.143894f, 0.143882f, 0.143871f, 0.143859f,
+0.143848f, 0.143836f, 0.143824f, 0.143813f, 0.143801f, 0.14379f, 0.143778f, 0.143767f, 0.143755f, 0.143743f, 0.143732f, 0.14372f, 0.143709f, 0.143697f, 0.143686f, 0.143674f, 0.143662f, 0.143651f, 0.143639f, 0.143628f,
+0.143616f, 0.143605f, 0.143593f, 0.143582f, 0.14357f, 0.143558f, 0.143547f, 0.143535f, 0.143524f, 0.143512f, 0.143501f, 0.143489f, 0.143477f, 0.143466f, 0.143454f, 0.143443f, 0.143431f, 0.14342f, 0.143408f, 0.143397f,
+0.143385f, 0.143373f, 0.143362f, 0.14335f, 0.143339f, 0.143327f, 0.143316f, 0.143304f, 0.143293f, 0.143281f, 0.143269f, 0.143258f, 0.143246f, 0.143235f, 0.143223f, 0.143212f, 0.1432f, 0.143189f, 0.143177f, 0.143166f,
+0.143154f, 0.143142f, 0.143131f, 0.143119f, 0.143108f, 0.143096f, 0.143085f, 0.143073f, 0.143062f, 0.14305f, 0.143039f, 0.143027f, 0.143015f, 0.143004f, 0.142992f, 0.142981f, 0.142969f, 0.142958f, 0.142946f, 0.142935f,
+0.142923f, 0.142912f, 0.1429f, 0.142889f, 0.142877f, 0.142865f, 0.142854f, 0.142842f, 0.142831f, 0.142819f, 0.142808f, 0.142796f, 0.142785f, 0.142773f, 0.142762f, 0.14275f, 0.142739f, 0.142727f, 0.142716f, 0.142704f,
+0.142692f, 0.142681f, 0.142669f, 0.142658f, 0.142646f, 0.142635f, 0.142623f, 0.142612f, 0.1426f, 0.142589f, 0.142577f, 0.142566f, 0.142554f, 0.142543f, 0.142531f, 0.14252f, 0.142508f, 0.142497f, 0.142485f, 0.142474f,
+0.142462f, 0.14245f, 0.142439f, 0.142427f, 0.142416f, 0.142404f, 0.142393f, 0.142381f, 0.14237f, 0.142358f, 0.142347f, 0.142335f, 0.142324f, 0.142312f, 0.142301f, 0.142289f, 0.142278f, 0.142266f, 0.142255f, 0.142243f,
+0.142232f, 0.14222f, 0.142209f, 0.142197f, 0.142186f, 0.142174f, 0.142163f, 0.142151f, 0.14214f, 0.142128f, 0.142117f, 0.142105f, 0.142094f, 0.142082f, 0.142071f, 0.142059f, 0.142048f, 0.142036f, 0.142025f, 0.142013f,
+0.142002f, 0.14199f, 0.141979f, 0.141967f, 0.141956f, 0.141944f, 0.141933f, 0.141921f, 0.14191f, 0.141898f, 0.141887f, 0.141875f, 0.141864f, 0.141852f, 0.141841f, 0.141829f, 0.141818f, 0.141806f, 0.141795f, 0.141783f,
+0.141772f, 0.14176f, 0.141749f, 0.141737f, 0.141726f, 0.141714f, 0.141703f, 0.141691f, 0.14168f, 0.141668f, 0.141657f, 0.141645f, 0.141634f, 0.141622f, 0.141611f, 0.141599f, 0.141588f, 0.141576f, 0.141565f, 0.141553f,
+0.141542f, 0.141531f, 0.141519f, 0.141508f, 0.141496f, 0.141485f, 0.141473f, 0.141462f, 0.14145f, 0.141439f, 0.141427f, 0.141416f, 0.141404f, 0.141393f, 0.141381f, 0.14137f, 0.141358f, 0.141347f, 0.141335f, 0.141324f,
+0.141312f, 0.141301f, 0.14129f, 0.141278f, 0.141267f, 0.141255f, 0.141244f, 0.141232f, 0.141221f, 0.141209f, 0.141198f, 0.141186f, 0.141175f, 0.141163f, 0.141152f, 0.14114f, 0.141129f, 0.141118f, 0.141106f, 0.141095f,
+0.141083f, 0.141072f, 0.14106f, 0.141049f, 0.141037f, 0.141026f, 0.141014f, 0.141003f, 0.140991f, 0.14098f, 0.140969f, 0.140957f, 0.140946f, 0.140934f, 0.140923f, 0.140911f, 0.1409f, 0.140888f, 0.140877f, 0.140865f,
+0.140854f, 0.140843f, 0.140831f, 0.14082f, 0.140808f, 0.140797f, 0.140785f, 0.140774f, 0.140762f, 0.140751f, 0.140739f, 0.140728f, 0.140717f, 0.140705f, 0.140694f, 0.140682f, 0.140671f, 0.140659f, 0.140648f, 0.140636f,
+0.140625f, 0.140614f, 0.140602f, 0.140591f, 0.140579f, 0.140568f, 0.140556f, 0.140545f, 0.140533f, 0.140522f, 0.140511f, 0.140499f, 0.140488f, 0.140476f, 0.140465f, 0.140453f, 0.140442f, 0.140431f, 0.140419f, 0.140408f,
+0.140396f, 0.140385f, 0.140373f, 0.140362f, 0.14035f, 0.140339f, 0.140328f, 0.140316f, 0.140305f, 0.140293f, 0.140282f, 0.14027f, 0.140259f, 0.140248f, 0.140236f, 0.140225f, 0.140213f, 0.140202f, 0.14019f, 0.140179f,
+0.140168f, 0.140156f, 0.140145f, 0.140133f, 0.140122f, 0.14011f, 0.140099f, 0.140088f, 0.140076f, 0.140065f, 0.140053f, 0.140042f, 0.140031f, 0.140019f, 0.140008f, 0.139996f, 0.139985f, 0.139973f, 0.139962f, 0.139951f,
+0.139939f, 0.139928f, 0.139916f, 0.139905f, 0.139894f, 0.139882f, 0.139871f, 0.139859f, 0.139848f, 0.139836f, 0.139825f, 0.139814f, 0.139802f, 0.139791f, 0.139779f, 0.139768f, 0.139757f, 0.139745f, 0.139734f, 0.139722f,
+0.139711f, 0.1397f, 0.139688f, 0.139677f, 0.139665f, 0.139654f, 0.139643f, 0.139631f, 0.13962f, 0.139608f, 0.139597f, 0.139586f, 0.139574f, 0.139563f, 0.139551f, 0.13954f, 0.139529f, 0.139517f, 0.139506f, 0.139494f,
+0.139483f, 0.139472f, 0.13946f, 0.139449f, 0.139437f, 0.139426f, 0.139415f, 0.139403f, 0.139392f, 0.13938f, 0.139369f, 0.139358f, 0.139346f, 0.139335f, 0.139323f, 0.139312f, 0.139301f, 0.139289f, 0.139278f, 0.139266f,
+0.139255f, 0.139244f, 0.139232f, 0.139221f, 0.13921f, 0.139198f, 0.139187f, 0.139175f, 0.139164f, 0.139153f, 0.139141f, 0.13913f, 0.139118f, 0.139107f, 0.139096f, 0.139084f, 0.139073f, 0.139062f, 0.13905f, 0.139039f,
+0.139027f, 0.139016f, 0.139005f, 0.138993f, 0.138982f, 0.138971f, 0.138959f, 0.138948f, 0.138936f, 0.138925f, 0.138914f, 0.138902f, 0.138891f, 0.13888f, 0.138868f, 0.138857f, 0.138845f, 0.138834f, 0.138823f, 0.138811f,
+0.1388f, 0.138789f, 0.138777f, 0.138766f, 0.138754f, 0.138743f, 0.138732f, 0.13872f, 0.138709f, 0.138698f, 0.138686f, 0.138675f, 0.138664f, 0.138652f, 0.138641f, 0.138629f, 0.138618f, 0.138607f, 0.138595f, 0.138584f,
+0.138573f, 0.138561f, 0.13855f, 0.138539f, 0.138527f, 0.138516f, 0.138504f, 0.138493f, 0.138482f, 0.13847f, 0.138459f, 0.138448f, 0.138436f, 0.138425f, 0.138414f, 0.138402f, 0.138391f, 0.13838f, 0.138368f, 0.138357f,
+0.138345f, 0.138334f, 0.138323f, 0.138311f, 0.1383f, 0.138289f, 0.138277f, 0.138266f, 0.138255f, 0.138243f, 0.138232f, 0.138221f, 0.138209f, 0.138198f, 0.138187f, 0.138175f, 0.138164f, 0.138153f, 0.138141f, 0.13813f,
+0.138119f, 0.138107f, 0.138096f, 0.138085f, 0.138073f, 0.138062f, 0.138051f, 0.138039f, 0.138028f, 0.138017f, 0.138005f, 0.137994f, 0.137983f, 0.137971f, 0.13796f, 0.137948f, 0.137937f, 0.137926f, 0.137914f, 0.137903f,
+0.137892f, 0.13788f, 0.137869f, 0.137858f, 0.137847f, 0.137835f, 0.137824f, 0.137813f, 0.137801f, 0.13779f, 0.137779f, 0.137767f, 0.137756f, 0.137745f, 0.137733f, 0.137722f, 0.137711f, 0.137699f, 0.137688f, 0.137677f,
+0.137665f, 0.137654f, 0.137643f, 0.137631f, 0.13762f, 0.137609f, 0.137597f, 0.137586f, 0.137575f, 0.137563f, 0.137552f, 0.137541f, 0.137529f, 0.137518f, 0.137507f, 0.137495f, 0.137484f, 0.137473f, 0.137462f, 0.13745f,
+0.137439f, 0.137428f, 0.137416f, 0.137405f, 0.137394f, 0.137382f, 0.137371f, 0.13736f, 0.137348f, 0.137337f, 0.137326f, 0.137314f, 0.137303f, 0.137292f, 0.137281f, 0.137269f, 0.137258f, 0.137247f, 0.137235f, 0.137224f,
+0.137213f, 0.137201f, 0.13719f, 0.137179f, 0.137168f, 0.137156f, 0.137145f, 0.137134f, 0.137122f, 0.137111f, 0.1371f, 0.137088f, 0.137077f, 0.137066f, 0.137055f, 0.137043f, 0.137032f, 0.137021f, 0.137009f, 0.136998f,
+0.136987f, 0.136975f, 0.136964f, 0.136953f, 0.136942f, 0.13693f, 0.136919f, 0.136908f, 0.136896f, 0.136885f, 0.136874f, 0.136863f, 0.136851f, 0.13684f, 0.136829f, 0.136817f, 0.136806f, 0.136795f, 0.136783f, 0.136772f,
+0.136761f, 0.13675f, 0.136738f, 0.136727f, 0.136716f, 0.136705f, 0.136693f, 0.136682f, 0.136671f, 0.136659f, 0.136648f, 0.136637f, 0.136626f, 0.136614f, 0.136603f, 0.136592f, 0.13658f, 0.136569f, 0.136558f, 0.136547f,
+0.136535f, 0.136524f, 0.136513f, 0.136501f, 0.13649f, 0.136479f, 0.136468f, 0.136456f, 0.136445f, 0.136434f, 0.136423f, 0.136411f, 0.1364f, 0.136389f, 0.136377f, 0.136366f, 0.136355f, 0.136344f, 0.136332f, 0.136321f,
+0.13631f, 0.136299f, 0.136287f, 0.136276f, 0.136265f, 0.136254f, 0.136242f, 0.136231f, 0.13622f, 0.136208f, 0.136197f, 0.136186f, 0.136175f, 0.136163f, 0.136152f, 0.136141f, 0.13613f, 0.136118f, 0.136107f, 0.136096f,
+0.136085f, 0.136073f, 0.136062f, 0.136051f, 0.13604f, 0.136028f, 0.136017f, 0.136006f, 0.135995f, 0.135983f, 0.135972f, 0.135961f, 0.13595f, 0.135938f, 0.135927f, 0.135916f, 0.135905f, 0.135893f, 0.135882f, 0.135871f,
+0.13586f, 0.135848f, 0.135837f, 0.135826f, 0.135815f, 0.135803f, 0.135792f, 0.135781f, 0.13577f, 0.135758f, 0.135747f, 0.135736f, 0.135725f, 0.135713f, 0.135702f, 0.135691f, 0.13568f, 0.135668f, 0.135657f, 0.135646f,
+0.135635f, 0.135623f, 0.135612f, 0.135601f, 0.13559f, 0.135578f, 0.135567f, 0.135556f, 0.135545f, 0.135534f, 0.135522f, 0.135511f, 0.1355f, 0.135489f, 0.135477f, 0.135466f, 0.135455f, 0.135444f, 0.135432f, 0.135421f,
+0.13541f, 0.135399f, 0.135388f, 0.135376f, 0.135365f, 0.135354f, 0.135343f, 0.135331f, 0.13532f, 0.135309f, 0.135298f, 0.135286f, 0.135275f, 0.135264f, 0.135253f, 0.135242f, 0.13523f, 0.135219f, 0.135208f, 0.135197f,
+0.135185f, 0.135174f, 0.135163f, 0.135152f, 0.135141f, 0.135129f, 0.135118f, 0.135107f, 0.135096f, 0.135085f, 0.135073f, 0.135062f, 0.135051f, 0.13504f, 0.135028f, 0.135017f, 0.135006f, 0.134995f, 0.134984f, 0.134972f,
+0.134961f, 0.13495f, 0.134939f, 0.134928f, 0.134916f, 0.134905f, 0.134894f, 0.134883f, 0.134871f, 0.13486f, 0.134849f, 0.134838f, 0.134827f, 0.134815f, 0.134804f, 0.134793f, 0.134782f, 0.134771f, 0.134759f, 0.134748f,
+0.134737f, 0.134726f, 0.134715f, 0.134703f, 0.134692f, 0.134681f, 0.13467f, 0.134659f, 0.134647f, 0.134636f, 0.134625f, 0.134614f, 0.134603f, 0.134591f, 0.13458f, 0.134569f, 0.134558f, 0.134547f, 0.134535f, 0.134524f,
+0.134513f, 0.134502f, 0.134491f, 0.13448f, 0.134468f, 0.134457f, 0.134446f, 0.134435f, 0.134424f, 0.134412f, 0.134401f, 0.13439f, 0.134379f, 0.134368f, 0.134356f, 0.134345f, 0.134334f, 0.134323f, 0.134312f, 0.134301f,
+0.134289f, 0.134278f, 0.134267f, 0.134256f, 0.134245f, 0.134233f, 0.134222f, 0.134211f, 0.1342f, 0.134189f, 0.134178f, 0.134166f, 0.134155f, 0.134144f, 0.134133f, 0.134122f, 0.13411f, 0.134099f, 0.134088f, 0.134077f,
+0.134066f, 0.134055f, 0.134043f, 0.134032f, 0.134021f, 0.13401f, 0.133999f, 0.133988f, 0.133976f, 0.133965f, 0.133954f, 0.133943f, 0.133932f, 0.133921f, 0.133909f, 0.133898f, 0.133887f, 0.133876f, 0.133865f, 0.133854f,
+0.133842f, 0.133831f, 0.13382f, 0.133809f, 0.133798f, 0.133787f, 0.133775f, 0.133764f, 0.133753f, 0.133742f, 0.133731f, 0.13372f, 0.133708f, 0.133697f, 0.133686f, 0.133675f, 0.133664f, 0.133653f, 0.133641f, 0.13363f,
+0.133619f, 0.133608f, 0.133597f, 0.133586f, 0.133575f, 0.133563f, 0.133552f, 0.133541f, 0.13353f, 0.133519f, 0.133508f, 0.133496f, 0.133485f, 0.133474f, 0.133463f, 0.133452f, 0.133441f, 0.13343f, 0.133418f, 0.133407f,
+0.133396f, 0.133385f, 0.133374f, 0.133363f, 0.133352f, 0.13334f, 0.133329f, 0.133318f, 0.133307f, 0.133296f, 0.133285f, 0.133274f, 0.133262f, 0.133251f, 0.13324f, 0.133229f, 0.133218f, 0.133207f, 0.133196f, 0.133184f,
+0.133173f, 0.133162f, 0.133151f, 0.13314f, 0.133129f, 0.133118f, 0.133107f, 0.133095f, 0.133084f, 0.133073f, 0.133062f, 0.133051f, 0.13304f, 0.133029f, 0.133017f, 0.133006f, 0.132995f, 0.132984f, 0.132973f, 0.132962f,
+0.132951f, 0.13294f, 0.132928f, 0.132917f, 0.132906f, 0.132895f, 0.132884f, 0.132873f, 0.132862f, 0.132851f, 0.132839f, 0.132828f, 0.132817f, 0.132806f, 0.132795f, 0.132784f, 0.132773f, 0.132762f, 0.13275f, 0.132739f,
+0.132728f, 0.132717f, 0.132706f, 0.132695f, 0.132684f, 0.132673f, 0.132662f, 0.13265f, 0.132639f, 0.132628f, 0.132617f, 0.132606f, 0.132595f, 0.132584f, 0.132573f, 0.132562f, 0.13255f, 0.132539f, 0.132528f, 0.132517f,
+0.132506f, 0.132495f, 0.132484f, 0.132473f, 0.132462f, 0.13245f, 0.132439f, 0.132428f, 0.132417f, 0.132406f, 0.132395f, 0.132384f, 0.132373f, 0.132362f, 0.13235f, 0.132339f, 0.132328f, 0.132317f, 0.132306f, 0.132295f,
+0.132284f, 0.132273f, 0.132262f, 0.132251f, 0.132239f, 0.132228f, 0.132217f, 0.132206f, 0.132195f, 0.132184f, 0.132173f, 0.132162f, 0.132151f, 0.13214f, 0.132129f, 0.132117f, 0.132106f, 0.132095f, 0.132084f, 0.132073f,
+0.132062f, 0.132051f, 0.13204f, 0.132029f, 0.132018f, 0.132007f, 0.131995f, 0.131984f, 0.131973f, 0.131962f, 0.131951f, 0.13194f, 0.131929f, 0.131918f, 0.131907f, 0.131896f, 0.131885f, 0.131874f, 0.131862f, 0.131851f,
+0.13184f, 0.131829f, 0.131818f, 0.131807f, 0.131796f, 0.131785f, 0.131774f, 0.131763f, 0.131752f, 0.131741f, 0.131729f, 0.131718f, 0.131707f, 0.131696f, 0.131685f, 0.131674f, 0.131663f, 0.131652f, 0.131641f, 0.13163f,
+0.131619f, 0.131608f, 0.131597f, 0.131586f, 0.131574f, 0.131563f, 0.131552f, 0.131541f, 0.13153f, 0.131519f, 0.131508f, 0.131497f, 0.131486f, 0.131475f, 0.131464f, 0.131453f, 0.131442f, 0.131431f, 0.13142f, 0.131408f,
+0.131397f, 0.131386f, 0.131375f, 0.131364f, 0.131353f, 0.131342f, 0.131331f, 0.13132f, 0.131309f, 0.131298f, 0.131287f, 0.131276f, 0.131265f, 0.131254f, 0.131243f, 0.131232f, 0.13122f, 0.131209f, 0.131198f, 0.131187f,
+0.131176f, 0.131165f, 0.131154f, 0.131143f, 0.131132f, 0.131121f, 0.13111f, 0.131099f, 0.131088f, 0.131077f, 0.131066f, 0.131055f, 0.131044f, 0.131033f, 0.131022f, 0.131011f, 0.130999f, 0.130988f, 0.130977f, 0.130966f,
+0.130955f, 0.130944f, 0.130933f, 0.130922f, 0.130911f, 0.1309f, 0.130889f, 0.130878f, 0.130867f, 0.130856f, 0.130845f, 0.130834f, 0.130823f, 0.130812f, 0.130801f, 0.13079f, 0.130779f, 0.130768f, 0.130757f, 0.130746f,
+0.130735f, 0.130723f, 0.130712f, 0.130701f, 0.13069f, 0.130679f, 0.130668f, 0.130657f, 0.130646f, 0.130635f, 0.130624f, 0.130613f, 0.130602f, 0.130591f, 0.13058f, 0.130569f, 0.130558f, 0.130547f, 0.130536f, 0.130525f,
+0.130514f, 0.130503f, 0.130492f, 0.130481f, 0.13047f, 0.130459f, 0.130448f, 0.130437f, 0.130426f, 0.130415f, 0.130404f, 0.130393f, 0.130382f, 0.130371f, 0.13036f, 0.130349f, 0.130338f, 0.130327f, 0.130316f, 0.130305f,
+0.130294f, 0.130282f, 0.130271f, 0.13026f, 0.130249f, 0.130238f, 0.130227f, 0.130216f, 0.130205f, 0.130194f, 0.130183f, 0.130172f, 0.130161f, 0.13015f, 0.130139f, 0.130128f, 0.130117f, 0.130106f, 0.130095f, 0.130084f,
+0.130073f, 0.130062f, 0.130051f, 0.13004f, 0.130029f, 0.130018f, 0.130007f, 0.129996f, 0.129985f, 0.129974f, 0.129963f, 0.129952f, 0.129941f, 0.12993f, 0.129919f, 0.129908f, 0.129897f, 0.129886f, 0.129875f, 0.129864f,
+0.129853f, 0.129842f, 0.129831f, 0.12982f, 0.129809f, 0.129798f, 0.129787f, 0.129776f, 0.129765f, 0.129754f, 0.129743f, 0.129732f, 0.129721f, 0.12971f, 0.129699f, 0.129688f, 0.129677f, 0.129666f, 0.129655f, 0.129644f,
+0.129633f, 0.129622f, 0.129611f, 0.1296f, 0.129589f, 0.129578f, 0.129567f, 0.129556f, 0.129546f, 0.129535f, 0.129524f, 0.129513f, 0.129502f, 0.129491f, 0.12948f, 0.129469f, 0.129458f, 0.129447f, 0.129436f, 0.129425f,
+0.129414f, 0.129403f, 0.129392f, 0.129381f, 0.12937f, 0.129359f, 0.129348f, 0.129337f, 0.129326f, 0.129315f, 0.129304f, 0.129293f, 0.129282f, 0.129271f, 0.12926f, 0.129249f, 0.129238f, 0.129227f, 0.129216f, 0.129205f,
+0.129194f, 0.129183f, 0.129172f, 0.129161f, 0.12915f, 0.129139f, 0.129128f, 0.129117f, 0.129107f, 0.129096f, 0.129085f, 0.129074f, 0.129063f, 0.129052f, 0.129041f, 0.12903f, 0.129019f, 0.129008f, 0.128997f, 0.128986f,
+0.128975f, 0.128964f, 0.128953f, 0.128942f, 0.128931f, 0.12892f, 0.128909f, 0.128898f, 0.128887f, 0.128876f, 0.128865f, 0.128854f, 0.128843f, 0.128833f, 0.128822f, 0.128811f, 0.1288f, 0.128789f, 0.128778f, 0.128767f,
+0.128756f, 0.128745f, 0.128734f, 0.128723f, 0.128712f, 0.128701f, 0.12869f, 0.128679f, 0.128668f, 0.128657f, 0.128646f, 0.128635f, 0.128624f, 0.128614f, 0.128603f, 0.128592f, 0.128581f, 0.12857f, 0.128559f, 0.128548f,
+0.128537f, 0.128526f, 0.128515f, 0.128504f, 0.128493f, 0.128482f, 0.128471f, 0.12846f, 0.128449f, 0.128439f, 0.128428f, 0.128417f, 0.128406f, 0.128395f, 0.128384f, 0.128373f, 0.128362f, 0.128351f, 0.12834f, 0.128329f,
+0.128318f, 0.128307f, 0.128296f, 0.128285f, 0.128275f, 0.128264f, 0.128253f, 0.128242f, 0.128231f, 0.12822f, 0.128209f, 0.128198f, 0.128187f, 0.128176f, 0.128165f, 0.128154f, 0.128143f, 0.128132f, 0.128122f, 0.128111f,
+0.1281f, 0.128089f, 0.128078f, 0.128067f, 0.128056f, 0.128045f, 0.128034f, 0.128023f, 0.128012f, 0.128001f, 0.12799f, 0.12798f, 0.127969f, 0.127958f, 0.127947f, 0.127936f, 0.127925f, 0.127914f, 0.127903f, 0.127892f,
+0.127881f, 0.12787f, 0.127859f, 0.127849f, 0.127838f, 0.127827f, 0.127816f, 0.127805f, 0.127794f, 0.127783f, 0.127772f, 0.127761f, 0.12775f, 0.127739f, 0.127729f, 0.127718f, 0.127707f, 0.127696f, 0.127685f, 0.127674f,
+0.127663f, 0.127652f, 0.127641f, 0.12763f, 0.12762f, 0.127609f, 0.127598f, 0.127587f, 0.127576f, 0.127565f, 0.127554f, 0.127543f, 0.127532f, 0.127521f, 0.127511f, 0.1275f, 0.127489f, 0.127478f, 0.127467f, 0.127456f,
+0.127445f, 0.127434f, 0.127423f, 0.127412f, 0.127402f, 0.127391f, 0.12738f, 0.127369f, 0.127358f, 0.127347f, 0.127336f, 0.127325f, 0.127314f, 0.127304f, 0.127293f, 0.127282f, 0.127271f, 0.12726f, 0.127249f, 0.127238f,
+0.127227f, 0.127216f, 0.127206f, 0.127195f, 0.127184f, 0.127173f, 0.127162f, 0.127151f, 0.12714f, 0.127129f, 0.127119f, 0.127108f, 0.127097f, 0.127086f, 0.127075f, 0.127064f, 0.127053f, 0.127042f, 0.127032f, 0.127021f,
+0.12701f, 0.126999f, 0.126988f, 0.126977f, 0.126966f, 0.126955f, 0.126945f, 0.126934f, 0.126923f, 0.126912f, 0.126901f, 0.12689f, 0.126879f, 0.126868f, 0.126858f, 0.126847f, 0.126836f, 0.126825f, 0.126814f, 0.126803f,
+0.126792f, 0.126781f, 0.126771f, 0.12676f, 0.126749f, 0.126738f, 0.126727f, 0.126716f, 0.126705f, 0.126695f, 0.126684f, 0.126673f, 0.126662f, 0.126651f, 0.12664f, 0.126629f, 0.126619f, 0.126608f, 0.126597f, 0.126586f,
+0.126575f, 0.126564f, 0.126553f, 0.126543f, 0.126532f, 0.126521f, 0.12651f, 0.126499f, 0.126488f, 0.126477f, 0.126467f, 0.126456f, 0.126445f, 0.126434f, 0.126423f, 0.126412f, 0.126401f, 0.126391f, 0.12638f, 0.126369f,
+0.126358f, 0.126347f, 0.126336f, 0.126325f, 0.126315f, 0.126304f, 0.126293f, 0.126282f, 0.126271f, 0.12626f, 0.12625f, 0.126239f, 0.126228f, 0.126217f, 0.126206f, 0.126195f, 0.126185f, 0.126174f, 0.126163f, 0.126152f,
+0.126141f, 0.12613f, 0.126119f, 0.126109f, 0.126098f, 0.126087f, 0.126076f, 0.126065f, 0.126054f, 0.126044f, 0.126033f, 0.126022f, 0.126011f, 0.126f, 0.125989f, 0.125979f, 0.125968f, 0.125957f, 0.125946f, 0.125935f,
+0.125924f, 0.125914f, 0.125903f, 0.125892f, 0.125881f, 0.12587f, 0.12586f, 0.125849f, 0.125838f, 0.125827f, 0.125816f, 0.125805f, 0.125795f, 0.125784f, 0.125773f, 0.125762f, 0.125751f, 0.12574f, 0.12573f, 0.125719f,
+0.125708f, 0.125697f, 0.125686f, 0.125676f, 0.125665f, 0.125654f, 0.125643f, 0.125632f, 0.125621f, 0.125611f, 0.1256f, 0.125589f, 0.125578f, 0.125567f, 0.125557f, 0.125546f, 0.125535f, 0.125524f, 0.125513f, 0.125502f,
+0.125492f, 0.125481f, 0.12547f, 0.125459f, 0.125448f, 0.125438f, 0.125427f, 0.125416f, 0.125405f, 0.125394f, 0.125384f, 0.125373f, 0.125362f, 0.125351f, 0.12534f, 0.12533f, 0.125319f, 0.125308f, 0.125297f, 0.125286f,
+0.125276f, 0.125265f, 0.125254f, 0.125243f, 0.125232f, 0.125222f, 0.125211f, 0.1252f, 0.125189f, 0.125178f, 0.125168f, 0.125157f, 0.125146f, 0.125135f, 0.125124f, 0.125114f, 0.125103f, 0.125092f, 0.125081f, 0.12507f,
+0.12506f, 0.125049f, 0.125038f, 0.125027f, 0.125016f, 0.125006f, 0.124995f, 0.124984f, 0.124973f, 0.124963f, 0.124952f, 0.124941f, 0.12493f, 0.124919f, 0.124909f, 0.124898f, 0.124887f, 0.124876f, 0.124865f, 0.124855f,
+0.124844f, 0.124833f, 0.124822f, 0.124812f, 0.124801f, 0.12479f, 0.124779f, 0.124768f, 0.124758f, 0.124747f, 0.124736f, 0.124725f, 0.124715f, 0.124704f, 0.124693f, 0.124682f, 0.124671f, 0.124661f, 0.12465f, 0.124639f,
+0.124628f, 0.124618f, 0.124607f, 0.124596f, 0.124585f, 0.124574f, 0.124564f, 0.124553f, 0.124542f, 0.124531f, 0.124521f, 0.12451f, 0.124499f, 0.124488f, 0.124478f, 0.124467f, 0.124456f, 0.124445f, 0.124434f, 0.124424f,
+0.124413f, 0.124402f, 0.124391f, 0.124381f, 0.12437f, 0.124359f, 0.124348f, 0.124338f, 0.124327f, 0.124316f, 0.124305f, 0.124295f, 0.124284f, 0.124273f, 0.124262f, 0.124252f, 0.124241f, 0.12423f, 0.124219f, 0.124208f,
+0.124198f, 0.124187f, 0.124176f, 0.124165f, 0.124155f, 0.124144f, 0.124133f, 0.124122f, 0.124112f, 0.124101f, 0.12409f, 0.124079f, 0.124069f, 0.124058f, 0.124047f, 0.124036f, 0.124026f, 0.124015f, 0.124004f, 0.123993f,
+0.123983f, 0.123972f, 0.123961f, 0.12395f, 0.12394f, 0.123929f, 0.123918f, 0.123908f, 0.123897f, 0.123886f, 0.123875f, 0.123865f, 0.123854f, 0.123843f, 0.123832f, 0.123822f, 0.123811f, 0.1238f, 0.123789f, 0.123779f,
+0.123768f, 0.123757f, 0.123746f, 0.123736f, 0.123725f, 0.123714f, 0.123704f, 0.123693f, 0.123682f, 0.123671f, 0.123661f, 0.12365f, 0.123639f, 0.123628f, 0.123618f, 0.123607f, 0.123596f, 0.123585f, 0.123575f, 0.123564f,
+0.123553f, 0.123543f, 0.123532f, 0.123521f, 0.12351f, 0.1235f, 0.123489f, 0.123478f, 0.123467f, 0.123457f, 0.123446f, 0.123435f, 0.123425f, 0.123414f, 0.123403f, 0.123392f, 0.123382f, 0.123371f, 0.12336f, 0.12335f,
+0.123339f, 0.123328f, 0.123317f, 0.123307f, 0.123296f, 0.123285f, 0.123275f, 0.123264f, 0.123253f, 0.123242f, 0.123232f, 0.123221f, 0.12321f, 0.1232f, 0.123189f, 0.123178f, 0.123167f, 0.123157f, 0.123146f, 0.123135f,
+0.123125f, 0.123114f, 0.123103f, 0.123092f, 0.123082f, 0.123071f, 0.12306f, 0.12305f, 0.123039f, 0.123028f, 0.123018f, 0.123007f, 0.122996f, 0.122985f, 0.122975f, 0.122964f, 0.122953f, 0.122943f, 0.122932f, 0.122921f,
+0.12291f, 0.1229f, 0.122889f, 0.122878f, 0.122868f, 0.122857f, 0.122846f, 0.122836f, 0.122825f, 0.122814f, 0.122804f, 0.122793f, 0.122782f, 0.122771f, 0.122761f, 0.12275f, 0.122739f, 0.122729f, 0.122718f, 0.122707f,
+0.122697f, 0.122686f, 0.122675f, 0.122665f, 0.122654f, 0.122643f, 0.122632f, 0.122622f, 0.122611f, 0.1226f, 0.12259f, 0.122579f, 0.122568f, 0.122558f, 0.122547f, 0.122536f, 0.122526f, 0.122515f, 0.122504f, 0.122494f,
+0.122483f, 0.122472f, 0.122462f, 0.122451f, 0.12244f, 0.12243f, 0.122419f, 0.122408f, 0.122397f, 0.122387f, 0.122376f, 0.122365f, 0.122355f, 0.122344f, 0.122333f, 0.122323f, 0.122312f, 0.122301f, 0.122291f, 0.12228f,
+0.122269f, 0.122259f, 0.122248f, 0.122237f, 0.122227f, 0.122216f, 0.122205f, 0.122195f, 0.122184f, 0.122173f, 0.122163f, 0.122152f, 0.122141f, 0.122131f, 0.12212f, 0.122109f, 0.122099f, 0.122088f, 0.122077f, 0.122067f,
+0.122056f, 0.122045f, 0.122035f, 0.122024f, 0.122013f, 0.122003f, 0.121992f, 0.121981f, 0.121971f, 0.12196f, 0.121949f, 0.121939f, 0.121928f, 0.121918f, 0.121907f, 0.121896f, 0.121886f, 0.121875f, 0.121864f, 0.121854f,
+0.121843f, 0.121832f, 0.121822f, 0.121811f, 0.1218f, 0.12179f, 0.121779f, 0.121768f, 0.121758f, 0.121747f, 0.121736f, 0.121726f, 0.121715f, 0.121704f, 0.121694f, 0.121683f, 0.121673f, 0.121662f, 0.121651f, 0.121641f,
+0.12163f, 0.121619f, 0.121609f, 0.121598f, 0.121587f, 0.121577f, 0.121566f, 0.121555f, 0.121545f, 0.121534f, 0.121524f, 0.121513f, 0.121502f, 0.121492f, 0.121481f, 0.12147f, 0.12146f, 0.121449f, 0.121438f, 0.121428f,
+0.121417f, 0.121407f, 0.121396f, 0.121385f, 0.121375f, 0.121364f, 0.121353f, 0.121343f, 0.121332f, 0.121322f, 0.121311f, 0.1213f, 0.12129f, 0.121279f, 0.121268f, 0.121258f, 0.121247f, 0.121236f, 0.121226f, 0.121215f,
+0.121205f, 0.121194f, 0.121183f, 0.121173f, 0.121162f, 0.121151f, 0.121141f, 0.12113f, 0.12112f, 0.121109f, 0.121098f, 0.121088f, 0.121077f, 0.121067f, 0.121056f, 0.121045f, 0.121035f, 0.121024f, 0.121013f, 0.121003f,
+0.120992f, 0.120982f, 0.120971f, 0.12096f, 0.12095f, 0.120939f, 0.120929f, 0.120918f, 0.120907f, 0.120897f, 0.120886f, 0.120875f, 0.120865f, 0.120854f, 0.120844f, 0.120833f, 0.120822f, 0.120812f, 0.120801f, 0.120791f,
+0.12078f, 0.120769f, 0.120759f, 0.120748f, 0.120738f, 0.120727f, 0.120716f, 0.120706f, 0.120695f, 0.120685f, 0.120674f, 0.120663f, 0.120653f, 0.120642f, 0.120632f, 0.120621f, 0.12061f, 0.1206f, 0.120589f, 0.120579f,
+0.120568f, 0.120557f, 0.120547f, 0.120536f, 0.120526f, 0.120515f, 0.120504f, 0.120494f, 0.120483f, 0.120473f, 0.120462f, 0.120451f, 0.120441f, 0.12043f, 0.12042f, 0.120409f, 0.120398f, 0.120388f, 0.120377f, 0.120367f,
+0.120356f, 0.120346f, 0.120335f, 0.120324f, 0.120314f, 0.120303f, 0.120293f, 0.120282f, 0.120271f, 0.120261f, 0.12025f, 0.12024f, 0.120229f, 0.120219f, 0.120208f, 0.120197f, 0.120187f, 0.120176f, 0.120166f, 0.120155f,
+0.120144f, 0.120134f, 0.120123f, 0.120113f, 0.120102f, 0.120092f, 0.120081f, 0.12007f, 0.12006f, 0.120049f, 0.120039f, 0.120028f, 0.120018f, 0.120007f, 0.119996f, 0.119986f, 0.119975f, 0.119965f, 0.119954f, 0.119944f,
+0.119933f, 0.119922f, 0.119912f, 0.119901f, 0.119891f, 0.11988f, 0.11987f, 0.119859f, 0.119848f, 0.119838f, 0.119827f, 0.119817f, 0.119806f, 0.119796f, 0.119785f, 0.119775f, 0.119764f, 0.119753f, 0.119743f, 0.119732f,
+0.119722f, 0.119711f, 0.119701f, 0.11969f, 0.11968f, 0.119669f, 0.119658f, 0.119648f, 0.119637f, 0.119627f, 0.119616f, 0.119606f, 0.119595f, 0.119585f, 0.119574f, 0.119563f, 0.119553f, 0.119542f, 0.119532f, 0.119521f,
+0.119511f, 0.1195f, 0.11949f, 0.119479f, 0.119468f, 0.119458f, 0.119447f, 0.119437f, 0.119426f, 0.119416f, 0.119405f, 0.119395f, 0.119384f, 0.119374f, 0.119363f, 0.119352f, 0.119342f, 0.119331f, 0.119321f, 0.11931f,
+0.1193f, 0.119289f, 0.119279f, 0.119268f, 0.119258f, 0.119247f, 0.119237f, 0.119226f, 0.119215f, 0.119205f, 0.119194f, 0.119184f, 0.119173f, 0.119163f, 0.119152f, 0.119142f, 0.119131f, 0.119121f, 0.11911f, 0.1191f,
+0.119089f, 0.119078f, 0.119068f, 0.119057f, 0.119047f, 0.119036f, 0.119026f, 0.119015f, 0.119005f, 0.118994f, 0.118984f, 0.118973f, 0.118963f, 0.118952f, 0.118942f, 0.118931f, 0.118921f, 0.11891f, 0.1189f, 0.118889f,
+0.118878f, 0.118868f, 0.118857f, 0.118847f, 0.118836f, 0.118826f, 0.118815f, 0.118805f, 0.118794f, 0.118784f, 0.118773f, 0.118763f, 0.118752f, 0.118742f, 0.118731f, 0.118721f, 0.11871f, 0.1187f, 0.118689f, 0.118679f,
+0.118668f, 0.118658f, 0.118647f, 0.118637f, 0.118626f, 0.118616f, 0.118605f, 0.118595f, 0.118584f, 0.118574f, 0.118563f, 0.118553f, 0.118542f, 0.118532f, 0.118521f, 0.11851f, 0.1185f, 0.118489f, 0.118479f, 0.118468f,
+0.118458f, 0.118447f, 0.118437f, 0.118426f, 0.118416f, 0.118405f, 0.118395f, 0.118384f, 0.118374f, 0.118363f, 0.118353f, 0.118342f, 0.118332f, 0.118321f, 0.118311f, 0.1183f, 0.11829f, 0.118279f, 0.118269f, 0.118258f,
+0.118248f, 0.118238f, 0.118227f, 0.118217f, 0.118206f, 0.118196f, 0.118185f, 0.118175f, 0.118164f, 0.118154f, 0.118143f, 0.118133f, 0.118122f, 0.118112f, 0.118101f, 0.118091f, 0.11808f, 0.11807f, 0.118059f, 0.118049f,
+0.118038f, 0.118028f, 0.118017f, 0.118007f, 0.117996f, 0.117986f, 0.117975f, 0.117965f, 0.117954f, 0.117944f, 0.117933f, 0.117923f, 0.117912f, 0.117902f, 0.117891f, 0.117881f, 0.117871f, 0.11786f, 0.11785f, 0.117839f,
+0.117829f, 0.117818f, 0.117808f, 0.117797f, 0.117787f, 0.117776f, 0.117766f, 0.117755f, 0.117745f, 0.117734f, 0.117724f, 0.117713f, 0.117703f, 0.117692f, 0.117682f, 0.117672f, 0.117661f, 0.117651f, 0.11764f, 0.11763f,
+0.117619f, 0.117609f, 0.117598f, 0.117588f, 0.117577f, 0.117567f, 0.117556f, 0.117546f, 0.117535f, 0.117525f, 0.117515f, 0.117504f, 0.117494f, 0.117483f, 0.117473f, 0.117462f, 0.117452f, 0.117441f, 0.117431f, 0.11742f,
+0.11741f, 0.1174f, 0.117389f, 0.117379f, 0.117368f, 0.117358f, 0.117347f, 0.117337f, 0.117326f, 0.117316f, 0.117305f, 0.117295f, 0.117285f, 0.117274f, 0.117264f, 0.117253f, 0.117243f, 0.117232f, 0.117222f, 0.117211f,
+0.117201f, 0.11719f, 0.11718f, 0.11717f, 0.117159f, 0.117149f, 0.117138f, 0.117128f, 0.117117f, 0.117107f, 0.117096f, 0.117086f, 0.117076f, 0.117065f, 0.117055f, 0.117044f, 0.117034f, 0.117023f, 0.117013f, 0.117002f,
+0.116992f, 0.116982f, 0.116971f, 0.116961f, 0.11695f, 0.11694f, 0.116929f, 0.116919f, 0.116909f, 0.116898f, 0.116888f, 0.116877f, 0.116867f, 0.116856f, 0.116846f, 0.116836f, 0.116825f, 0.116815f, 0.116804f, 0.116794f,
+0.116783f, 0.116773f, 0.116763f, 0.116752f, 0.116742f, 0.116731f, 0.116721f, 0.11671f, 0.1167f, 0.11669f, 0.116679f, 0.116669f, 0.116658f, 0.116648f, 0.116637f, 0.116627f, 0.116617f, 0.116606f, 0.116596f, 0.116585f,
+0.116575f, 0.116564f, 0.116554f, 0.116544f, 0.116533f, 0.116523f, 0.116512f, 0.116502f, 0.116492f, 0.116481f, 0.116471f, 0.11646f, 0.11645f, 0.116439f, 0.116429f, 0.116419f, 0.116408f, 0.116398f, 0.116387f, 0.116377f,
+0.116367f, 0.116356f, 0.116346f, 0.116335f, 0.116325f, 0.116315f, 0.116304f, 0.116294f, 0.116283f, 0.116273f, 0.116263f, 0.116252f, 0.116242f, 0.116231f, 0.116221f, 0.11621f, 0.1162f, 0.11619f, 0.116179f, 0.116169f,
+0.116158f, 0.116148f, 0.116138f, 0.116127f, 0.116117f, 0.116106f, 0.116096f, 0.116086f, 0.116075f, 0.116065f, 0.116054f, 0.116044f, 0.116034f, 0.116023f, 0.116013f, 0.116003f, 0.115992f, 0.115982f, 0.115971f, 0.115961f,
+0.115951f, 0.11594f, 0.11593f, 0.115919f, 0.115909f, 0.115899f, 0.115888f, 0.115878f, 0.115867f, 0.115857f, 0.115847f, 0.115836f, 0.115826f, 0.115816f, 0.115805f, 0.115795f, 0.115784f, 0.115774f, 0.115764f, 0.115753f,
+0.115743f, 0.115732f, 0.115722f, 0.115712f, 0.115701f, 0.115691f, 0.115681f, 0.11567f, 0.11566f, 0.115649f, 0.115639f, 0.115629f, 0.115618f, 0.115608f, 0.115598f, 0.115587f, 0.115577f, 0.115566f, 0.115556f, 0.115546f,
+0.115535f, 0.115525f, 0.115515f, 0.115504f, 0.115494f, 0.115483f, 0.115473f, 0.115463f, 0.115452f, 0.115442f, 0.115432f, 0.115421f, 0.115411f, 0.1154f, 0.11539f, 0.11538f, 0.115369f, 0.115359f, 0.115349f, 0.115338f,
+0.115328f, 0.115318f, 0.115307f, 0.115297f, 0.115286f, 0.115276f, 0.115266f, 0.115255f, 0.115245f, 0.115235f, 0.115224f, 0.115214f, 0.115204f, 0.115193f, 0.115183f, 0.115172f, 0.115162f, 0.115152f, 0.115141f, 0.115131f,
+0.115121f, 0.11511f, 0.1151f, 0.11509f, 0.115079f, 0.115069f, 0.115059f, 0.115048f, 0.115038f, 0.115028f, 0.115017f, 0.115007f, 0.114996f, 0.114986f, 0.114976f, 0.114965f, 0.114955f, 0.114945f, 0.114934f, 0.114924f,
+0.114914f, 0.114903f, 0.114893f, 0.114883f, 0.114872f, 0.114862f, 0.114852f, 0.114841f, 0.114831f, 0.114821f, 0.11481f, 0.1148f, 0.11479f, 0.114779f, 0.114769f, 0.114759f, 0.114748f, 0.114738f, 0.114728f, 0.114717f,
+0.114707f, 0.114697f, 0.114686f, 0.114676f, 0.114666f, 0.114655f, 0.114645f, 0.114635f, 0.114624f, 0.114614f, 0.114604f, 0.114593f, 0.114583f, 0.114573f, 0.114562f, 0.114552f, 0.114542f, 0.114531f, 0.114521f, 0.114511f,
+0.1145f, 0.11449f, 0.11448f, 0.114469f, 0.114459f, 0.114449f, 0.114438f, 0.114428f, 0.114418f, 0.114407f, 0.114397f, 0.114387f, 0.114376f, 0.114366f, 0.114356f, 0.114345f, 0.114335f, 0.114325f, 0.114314f, 0.114304f,
+0.114294f, 0.114284f, 0.114273f, 0.114263f, 0.114253f, 0.114242f, 0.114232f, 0.114222f, 0.114211f, 0.114201f, 0.114191f, 0.11418f, 0.11417f, 0.11416f, 0.114149f, 0.114139f, 0.114129f, 0.114119f, 0.114108f, 0.114098f,
+0.114088f, 0.114077f, 0.114067f, 0.114057f, 0.114046f, 0.114036f, 0.114026f, 0.114015f, 0.114005f, 0.113995f, 0.113985f, 0.113974f, 0.113964f, 0.113954f, 0.113943f, 0.113933f, 0.113923f, 0.113912f, 0.113902f, 0.113892f,
+0.113882f, 0.113871f, 0.113861f, 0.113851f, 0.11384f, 0.11383f, 0.11382f, 0.113809f, 0.113799f, 0.113789f, 0.113779f, 0.113768f, 0.113758f, 0.113748f, 0.113737f, 0.113727f, 0.113717f, 0.113707f, 0.113696f, 0.113686f,
+0.113676f, 0.113665f, 0.113655f, 0.113645f, 0.113635f, 0.113624f, 0.113614f, 0.113604f, 0.113593f, 0.113583f, 0.113573f, 0.113563f, 0.113552f, 0.113542f, 0.113532f, 0.113521f, 0.113511f, 0.113501f, 0.113491f, 0.11348f,
+0.11347f, 0.11346f, 0.113449f, 0.113439f, 0.113429f, 0.113419f, 0.113408f, 0.113398f, 0.113388f, 0.113377f, 0.113367f, 0.113357f, 0.113347f, 0.113336f, 0.113326f, 0.113316f, 0.113306f, 0.113295f, 0.113285f, 0.113275f,
+0.113264f, 0.113254f, 0.113244f, 0.113234f, 0.113223f, 0.113213f, 0.113203f, 0.113193f, 0.113182f, 0.113172f, 0.113162f, 0.113152f, 0.113141f, 0.113131f, 0.113121f, 0.11311f, 0.1131f, 0.11309f, 0.11308f, 0.113069f,
+0.113059f, 0.113049f, 0.113039f, 0.113028f, 0.113018f, 0.113008f, 0.112998f, 0.112987f, 0.112977f, 0.112967f, 0.112957f, 0.112946f, 0.112936f, 0.112926f, 0.112916f, 0.112905f, 0.112895f, 0.112885f, 0.112875f, 0.112864f,
+0.112854f, 0.112844f, 0.112834f, 0.112823f, 0.112813f, 0.112803f, 0.112793f, 0.112782f, 0.112772f, 0.112762f, 0.112752f, 0.112741f, 0.112731f, 0.112721f, 0.112711f, 0.1127f, 0.11269f, 0.11268f, 0.11267f, 0.112659f,
+0.112649f, 0.112639f, 0.112629f, 0.112618f, 0.112608f, 0.112598f, 0.112588f, 0.112577f, 0.112567f, 0.112557f, 0.112547f, 0.112536f, 0.112526f, 0.112516f, 0.112506f, 0.112495f, 0.112485f, 0.112475f, 0.112465f, 0.112455f,
+0.112444f, 0.112434f, 0.112424f, 0.112414f, 0.112403f, 0.112393f, 0.112383f, 0.112373f, 0.112362f, 0.112352f, 0.112342f, 0.112332f, 0.112322f, 0.112311f, 0.112301f, 0.112291f, 0.112281f, 0.11227f, 0.11226f, 0.11225f,
+0.11224f, 0.112229f, 0.112219f, 0.112209f, 0.112199f, 0.112189f, 0.112178f, 0.112168f, 0.112158f, 0.112148f, 0.112138f, 0.112127f, 0.112117f, 0.112107f, 0.112097f, 0.112086f, 0.112076f, 0.112066f, 0.112056f, 0.112046f,
+0.112035f, 0.112025f, 0.112015f, 0.112005f, 0.111994f, 0.111984f, 0.111974f, 0.111964f, 0.111954f, 0.111943f, 0.111933f, 0.111923f, 0.111913f, 0.111903f, 0.111892f, 0.111882f, 0.111872f, 0.111862f, 0.111852f, 0.111841f,
+0.111831f, 0.111821f, 0.111811f, 0.111801f, 0.11179f, 0.11178f, 0.11177f, 0.11176f, 0.11175f, 0.111739f, 0.111729f, 0.111719f, 0.111709f, 0.111699f, 0.111688f, 0.111678f, 0.111668f, 0.111658f, 0.111648f, 0.111637f,
+0.111627f, 0.111617f, 0.111607f, 0.111597f, 0.111586f, 0.111576f, 0.111566f, 0.111556f, 0.111546f, 0.111535f, 0.111525f, 0.111515f, 0.111505f, 0.111495f, 0.111484f, 0.111474f, 0.111464f, 0.111454f, 0.111444f, 0.111433f,
+0.111423f, 0.111413f, 0.111403f, 0.111393f, 0.111383f, 0.111372f, 0.111362f, 0.111352f, 0