From 75e27716165f1054791b16b96fa78d5ccbd0e0cf Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 29 May 2015 06:33:00 +0000 Subject: [PATCH] prog cmd line testing, can now compare between SSB and cohpsk git-svn-id: https://svn.code.sf.net/p/freetel/code@2163 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/cellmodem.m | 8 ++ codec2-dev/octave/make_ssbfilt.m | 36 +++++++++ codec2-dev/octave/test_cohpsk_ch.m | 2 +- codec2-dev/raw/ve9qrp_10s.raw | Bin 0 -> 160000 bytes codec2-dev/src/CMakeLists.txt | 2 +- codec2-dev/src/c2dec.c | 45 +++++++++-- codec2-dev/src/c2enc.c | 42 ++++++++-- codec2-dev/src/codec2.c | 44 +++++----- codec2-dev/src/codec2.h | 2 +- codec2-dev/src/cohpsk_ch.c | 126 +++++++++++++++++++---------- codec2-dev/src/cohpsk_demod.c | 63 ++++++++++++++- codec2-dev/src/ssbfilt_coeff.h | 107 ++++++++++++++++++++++++ 12 files changed, 395 insertions(+), 82 deletions(-) create mode 100644 codec2-dev/octave/make_ssbfilt.m create mode 100644 codec2-dev/raw/ve9qrp_10s.raw create mode 100644 codec2-dev/src/ssbfilt_coeff.h diff --git a/codec2-dev/octave/cellmodem.m b/codec2-dev/octave/cellmodem.m index 5bf7626f..7477d06f 100644 --- a/codec2-dev/octave/cellmodem.m +++ b/codec2-dev/octave/cellmodem.m @@ -6,12 +6,18 @@ % Ideas: % + insert low rate codec % + generate bunch of symbols, run through codec, measure MSE, choose best set +% + measure probablility of error, "distance" from other symbols +% + can we use VQ training algorithm for this? Start with 2 symbols, +% pass through channel, measure MSE, split again? % + start with cmd line version of codec, frame synchronous % + add symbol timing estimator later % + try different frame rates % + simulate impairments like HP/LP filtering. Can we correct for this? % + pilots symbols so we can use energy as well? % + set of F0 as well +% + LSP quantisers preferrentially preserve peaks, so three peaks is a +% reasonable signal set. Modulate position and bandwidth to creat +% symbol set. Maybe 50 or 100 Hz grid for LSPs, evaluate that some how. graphics_toolkit ("gnuplot"); lsp; @@ -36,6 +42,8 @@ for m=1:l end s = filter(1, a, ex); +% insert codec here (e.g. write to file, run codec, read file) + % extract received symbol from channel a_ = lpcauto(s, lpc_order) diff --git a/codec2-dev/octave/make_ssbfilt.m b/codec2-dev/octave/make_ssbfilt.m new file mode 100644 index 00000000..b1bb3474 --- /dev/null +++ b/codec2-dev/octave/make_ssbfilt.m @@ -0,0 +1,36 @@ +% make_ssbfilt.m +% David Rowe May 2015 +% +% creates SSB filter FIR coeffs + +graphics_toolkit ("gnuplot"); + +ssbfilt_n = 100; +Fs = 8000; + +ssbfilt_coeff = fir2(ssbfilt_n,[0 400 600 2200 2600 4000]/(Fs/2),[0.001 0.001 1 1 0.001 0.001]); + +figure(1) +clf; +h = freqz(ssbfilt_coeff,1,Fs/2); +plot(20*log10(abs(h))) +grid minor + +% save coeffs to a C header file + +f=fopen("../src/ssbfilt_coeff.h","wt"); +fprintf(f,"/* 600 - 2600 Hz FIR filter coeffs */\n"); +fprintf(f,"/* Generated by make_ssbfilt Octave script */\n"); + +fprintf(f,"\n#define SSBFILT_N %d\n\n", ssbfilt_n); + +fprintf(f,"float ssbfilt_coeff[]={\n"); +for r=1:ssbfilt_n + if r < ssbfilt_n + fprintf(f, " %f,\n", ssbfilt_coeff(r)); + else + fprintf(f, " %f\n};", ssbfilt_coeff(r)); + end +end + +fclose(f); diff --git a/codec2-dev/octave/test_cohpsk_ch.m b/codec2-dev/octave/test_cohpsk_ch.m index 73446641..19634ddf 100644 --- a/codec2-dev/octave/test_cohpsk_ch.m +++ b/codec2-dev/octave/test_cohpsk_ch.m @@ -5,7 +5,7 @@ Nc=7; Nd=2; -load ../build_linux/unittest/test_cohpsk_ch_out.txt +load ../build_linux/src/test_cohpsk_ch_out.txt figure(3) clf; diff --git a/codec2-dev/raw/ve9qrp_10s.raw b/codec2-dev/raw/ve9qrp_10s.raw new file mode 100644 index 0000000000000000000000000000000000000000..0d3bd3b9381c1d9d482d9ac75fc1bc621bb79d22 GIT binary patch literal 160000 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μ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 J+dY^vash36d>%3PXZSqR3IOy60 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 bit) & 0x1; + bit--; + if (bit < 0) { + bit = 7; + byte++; + } + } + fwrite(unpacked_bits, sizeof(int), nbit, fout); + } + else + fwrite(bits, sizeof(char), nbyte, fout); + // if this is in a pipeline, we probably don't want the usual // buffering to occur + if (fout == stdout) fflush(stdout); if (fin == stdin) fflush(stdin); } @@ -112,6 +139,7 @@ int main(int argc, char *argv[]) free(buf); free(bits); + free(unpacked_bits); fclose(fin); fclose(fout); diff --git a/codec2-dev/src/codec2.c b/codec2-dev/src/codec2.c index 7289f54f..acc62166 100644 --- a/codec2-dev/src/codec2.c +++ b/codec2-dev/src/codec2.c @@ -68,8 +68,8 @@ void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short speech[]) void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est); void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short speech[]); void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * bits); -void codec2_encode_650(struct CODEC2 *c2, unsigned char * bits, short speech[]); -void codec2_decode_650(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits); static void ear_protection(float in_out[], int n); /*---------------------------------------------------------------------------*\ @@ -108,7 +108,7 @@ struct CODEC2 * CODEC2_WIN32SUPPORT codec2_create(int mode) (mode == CODEC2_MODE_1400) || (mode == CODEC2_MODE_1300) || (mode == CODEC2_MODE_1200) || - (mode == CODEC2_MODE_650) + (mode == CODEC2_MODE_700) ); c2->mode = mode; for(i=0; imode == CODEC2_MODE_1200) return 48; - if (c2->mode == CODEC2_MODE_650) - return 26; + if (c2->mode == CODEC2_MODE_700) + return 28; return 0; /* shouldn't get here */ } @@ -232,7 +232,7 @@ int CODEC2_WIN32SUPPORT codec2_samples_per_frame(struct CODEC2 *c2) { return 320; if (c2->mode == CODEC2_MODE_1200) return 320; - if (c2->mode == CODEC2_MODE_650) + if (c2->mode == CODEC2_MODE_700) return 320; return 0; /* shouldnt get here */ @@ -248,7 +248,7 @@ void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *c2, unsigned char *bits, s (c2->mode == CODEC2_MODE_1400) || (c2->mode == CODEC2_MODE_1300) || (c2->mode == CODEC2_MODE_1200) || - (c2->mode == CODEC2_MODE_650) + (c2->mode == CODEC2_MODE_700) ); if (c2->mode == CODEC2_MODE_3200) @@ -263,8 +263,8 @@ void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *c2, unsigned char *bits, s codec2_encode_1300(c2, bits, speech); if (c2->mode == CODEC2_MODE_1200) codec2_encode_1200(c2, bits, speech); - if (c2->mode == CODEC2_MODE_650) - codec2_encode_650(c2, bits, speech); + if (c2->mode == CODEC2_MODE_700) + codec2_encode_700(c2, bits, speech); } void CODEC2_WIN32SUPPORT codec2_decode(struct CODEC2 *c2, short speech[], const unsigned char *bits) @@ -282,7 +282,7 @@ void CODEC2_WIN32SUPPORT codec2_decode_ber(struct CODEC2 *c2, short speech[], co (c2->mode == CODEC2_MODE_1400) || (c2->mode == CODEC2_MODE_1300) || (c2->mode == CODEC2_MODE_1200) || - (c2->mode == CODEC2_MODE_650) + (c2->mode == CODEC2_MODE_700) ); if (c2->mode == CODEC2_MODE_3200) @@ -297,8 +297,8 @@ void CODEC2_WIN32SUPPORT codec2_decode_ber(struct CODEC2 *c2, short speech[], co codec2_decode_1300(c2, speech, bits, ber_est); if (c2->mode == CODEC2_MODE_1200) codec2_decode_1200(c2, speech, bits); - if (c2->mode == CODEC2_MODE_650) - codec2_decode_650(c2, speech, bits); + if (c2->mode == CODEC2_MODE_700) + codec2_decode_700(c2, speech, bits); } @@ -1317,11 +1317,11 @@ void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * /*---------------------------------------------------------------------------*\ - FUNCTION....: codec2_encode_650 + FUNCTION....: codec2_encode_700 AUTHOR......: David Rowe DATE CREATED: April 2015 - Encodes 320 speech samples (40ms of speech) into 26 bits. + Encodes 320 speech samples (40ms of speech) into 28 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm four times: @@ -1329,7 +1329,7 @@ void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * frame 0: nothing frame 1: nothing frame 2: nothing - frame 3: voicing bit, scalar Wo and E, 17 bit LSP MEL scalar + frame 3: voicing bit, scalar Wo and E, 17 bit LSP MEL scalar, 2 spare The bit allocation is: @@ -1339,11 +1339,12 @@ void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * Energy 0 3 3 log Wo 0 5 5 Voicing 0 1 1 - TOTAL 0 26 26 + spare 0 2 2 + TOTAL 0 28 28 \*---------------------------------------------------------------------------*/ -void codec2_encode_650(struct CODEC2 *c2, unsigned char * bits, short speech[]) +void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]) { MODEL model; float lsps[LPC_ORD_LOW]; @@ -1355,6 +1356,7 @@ void codec2_encode_650(struct CODEC2 *c2, unsigned char * bits, short speech[]) unsigned int nbit = 0; float bpf_out[4*N]; short bpf_speech[4*N]; + int spare = 0; assert(c2 != NULL); @@ -1403,21 +1405,23 @@ void codec2_encode_650(struct CODEC2 *c2, unsigned char * bits, short speech[]) pack(bits, &nbit, indexes[i], mel_bits(i)); } + pack_natural_or_gray(bits, &nbit, spare, 2, c2->gray); + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ - FUNCTION....: codec2_decode_650 + FUNCTION....: codec2_decode_700 AUTHOR......: David Rowe DATE CREATED: April 2015 - Decodes frames of 26 bits into 320 samples (40ms) of speech. + Decodes frames of 28 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ -void codec2_decode_650(struct CODEC2 *c2, short speech[], const unsigned char * bits) +void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits) { MODEL model[4]; int indexes[LPC_ORD_LOW]; diff --git a/codec2-dev/src/codec2.h b/codec2-dev/src/codec2.h index 77c0f2dd..834d9a74 100644 --- a/codec2-dev/src/codec2.h +++ b/codec2-dev/src/codec2.h @@ -52,7 +52,7 @@ #define CODEC2_MODE_1400 3 #define CODEC2_MODE_1300 4 #define CODEC2_MODE_1200 5 -#define CODEC2_MODE_650 6 +#define CODEC2_MODE_700 6 struct CODEC2; diff --git a/codec2-dev/src/cohpsk_ch.c b/codec2-dev/src/cohpsk_ch.c index 78f36c1c..16c3791b 100644 --- a/codec2-dev/src/cohpsk_ch.c +++ b/codec2-dev/src/cohpsk_ch.c @@ -47,10 +47,12 @@ #include "comp_prim.h" #include "../unittest/noise_samples.h" #include "ht_coeff.h" +#include "ssbfilt_coeff.h" #include "codec2_fdmdv.h" #define BUF_N 160 #define HF_DELAY_MS 2.0 +#define PAPR_TARGET 7.0 /* This file gets generated using the function write_noise_file in tcohpsk.m. You have to run tcohpsk first (any variant) to load the function into Octave, e.g.: @@ -64,25 +66,27 @@ int main(int argc, char *argv[]) { FILE *fin, *ffading, *fout; - float EsNodB, foff_hz; + float NodB, foff_hz; int fading_en, nhfdelay; short buf[BUF_N]; float htbuf[HT_N+BUF_N]; COMP ch_in[BUF_N]; COMP ch_fdm[BUF_N]; + float ssbfiltbuf[SSBFILT_N+BUF_N]; + float ssbfiltout[BUF_N]; COMP phase_ch; int noise_r, noise_end; - float EsNo, variance; + float No, variance; COMP scaled_noise; float hf_gain; COMP *ch_fdm_delay, aspread, aspread_2ms, delayed, direct; - float tx_pwr, rx_pwr, noise_pwr; - int frames, i, j, k, ret; - float sam; + float tx_pwr, tx_pwr_fade, noise_pwr; + int frames, i, j, k, ret, clipped; + float sam, peak, inclip, papr, CNo, snr3k, EbNo700; - if (argc == 6) { + if (argc == 7) { if (strcmp(argv[1], "-") == 0) fin = stdin; else if ( (fin = fopen(argv[1],"rb")) == NULL ) { fprintf(stderr, "Error opening input modem raw file: %s: %s.\n", @@ -97,28 +101,29 @@ int main(int argc, char *argv[]) exit(1); } - EsNodB = atof(argv[3]); + NodB = atof(argv[3]); foff_hz = atof(argv[4]); fading_en = atoi(argv[5]); + inclip = atof(argv[6]); } else { - fprintf(stderr, "usage: %s InputRealModemRawFileFs7500Hz OutputRealModemRawFileFs7500Hz SNR3000Hz FoffHz FadingEn\n", argv[0]); + fprintf(stderr, "usage: %s InputRealModemRawFileFs7500Hz OutputRealModemRawFileFs7500Hz SNR3000Hz FoffHz FadingEn InputClip0to1\n", argv[0]); exit(1); } - fprintf(stderr, "EsNodB: %4.2f foff: %4.2f Hz fading: %d\n", EsNodB, foff_hz, fading_en); + fprintf(stderr, "NodB: %4.2f foff: %4.2f Hz fading: %d inclip: %4.2f\n", NodB, foff_hz, fading_en, inclip); phase_ch.real = 1.0; phase_ch.imag = 0.0; noise_r = 0; noise_end = sizeof(noise)/sizeof(COMP); - /* each carrier has power = 2, total power 2Nc, total symbol rate - NcRs, noise BW B=Fs Es/No = (C/Rs)/(N/B), N = var = - 2NcFs/NcRs(Es/No) = 2Fs/Rs(Es/No) */ + /* N = var = NoFs */ - EsNo = pow(10.0, EsNodB/10.0); - variance = 2.0*COHPSK_FS/(COHPSK_RS*EsNo); + No = pow(10.0, NodB/10.0); + variance = COHPSK_FS*No; - tx_pwr = rx_pwr = noise_pwr = 0.0; + tx_pwr = tx_pwr_fade = noise_pwr = 0.0; + clipped = 0; + peak = 0.0; /* init HF fading model */ @@ -166,7 +171,19 @@ int main(int argc, char *argv[]) freqencies. */ - htbuf[j] = (float)buf[i]/FDMDV_SCALE; + sam = (float)buf[i]; + //printf("sam: %f ", sam); + if (sam > inclip*32767.0) + sam = inclip*32767.0; + if (sam < -inclip*32767.0) + sam = -inclip*32767.0; + //printf("sam: %f\n", sam); + htbuf[j] = sam/FDMDV_SCALE; + + if (fabs(htbuf[j]) > peak) { + peak = fabs(htbuf[j]); + } + tx_pwr += pow(htbuf[j], 2.0); /* FIR filter with HT to get imag, just delay to get real */ @@ -185,19 +202,6 @@ int main(int argc, char *argv[]) for(i=0; i noise_end) { noise_r = 0; //fprintf(stderr, " [%d] noise wrap\n", f); + } + } + + /* FIR filter to simulate (a rather flat) SSB filter. Might + be useful to have an option for a filter with a few dB + ripple too, to screw up the modem. This is mainly so analog + SSB sounds realistic. */ + + for(i=0, j=SSBFILT_N; i 32767.0) - fprintf(stderr,"clipping: %f\n", sam); + sam = FDMDV_SCALE * ssbfiltout[i]; + if (sam > 32767.0) { + clipped++; + sam = 32767.0; + } + if (sam < -32767.0) { + clipped++; + sam = -32767.0; + } buf[i] = sam; } @@ -271,13 +300,26 @@ int main(int argc, char *argv[]) fclose(fin); fclose(fout); - - fprintf(stderr, "tx var: %f noise var: %f rx var: %f\n", - tx_pwr/(frames*BUF_N), - noise_pwr/(frames*BUF_N), - rx_pwr/(frames*BUF_N) + + fprintf(stderr, "peak pwr.....: %7.2f\nav input pwr.: %7.2f\nav pwr fading: %7.2f\nnoise pwr....: %7.2f\nclipping.....: %7.2f %%\n", + peak*peak, + tx_pwr/(frames*BUF_N), + tx_pwr_fade/(frames*BUF_N), + noise_pwr/(frames*BUF_N), + 100.0*clipped/frames ); - + papr = 10*log10(peak*peak/(tx_pwr/(frames*BUF_N))); + CNo = 10*log10(tx_pwr/(noise_pwr/(COHPSK_FS/2))); // single sided spctrum magic IDFK! + snr3k = CNo - 10*log10(3000); + EbNo700 = CNo - 10*log10(700) - 10*log10(6.0/4.0); // divide by bit rate and pilot overhead + fprintf(stderr, "PAPR (dB)....: %7.2f (target %3.2f)\nC/No (dB)....: %7.2f\nSNR3k........: %7.2f\nEb/No(Rb=700): %7.2f\n", + papr, + PAPR_TARGET, + CNo, + snr3k, + EbNo700 + ); + return 0; } diff --git a/codec2-dev/src/cohpsk_demod.c b/codec2-dev/src/cohpsk_demod.c index fdac1a94..507d06ac 100644 --- a/codec2-dev/src/cohpsk_demod.c +++ b/codec2-dev/src/cohpsk_demod.c @@ -34,20 +34,28 @@ #include #include "codec2_cohpsk.h" +#include "cohpsk_defs.h" +#include "cohpsk_internal.h" #include "codec2_fdmdv.h" +#include "octave.h" + +#define LOG_FRAMES 100 int main(int argc, char *argv[]) { - FILE *fin, *fout; + FILE *fin, *fout, *foct; struct COHPSK *cohpsk; int rx_bits[COHPSK_BITS_PER_FRAME]; COMP rx_fdm[COHPSK_SAMPLES_PER_FRAME]; short rx_fdm_scaled[COHPSK_SAMPLES_PER_FRAME]; int frames, reliable_sync_bit, nin_frame; - int i; + float *rx_amp_log; + float *rx_phi_log; + COMP *rx_symb_log; + int i, r, c, log_data_r, oct, logframes; if (argc < 3) { - printf("usage: %s InputModemRawFile OutputOneBitPerIntFile\n", argv[0]); + printf("usage: %s InputModemRawFile OutputOneBitPerIntFile [OctaveLogFile]\n", argv[0]); exit(1); } @@ -65,8 +73,30 @@ int main(int argc, char *argv[]) exit(1); } + foct = NULL; + oct = 0; + if (argc == 4) { + if ( (foct = fopen(argv[3],"wt")) == NULL ) { + fprintf(stderr, "Error opening output Octave file: %s: %s.\n", + argv[3], strerror(errno)); + exit(1); + } + oct = 1; + } + cohpsk = cohpsk_create(); + if (oct) { + logframes = LOG_FRAMES; + rx_amp_log = (float *)malloc(sizeof(float)*logframes*NSYMROW*COHPSK_NC*ND); + assert(rx_amp_log != NULL); + rx_phi_log = (float *)malloc(sizeof(float)*logframes*NSYMROW*COHPSK_NC*ND); + assert(rx_phi_log != NULL); + rx_symb_log = (COMP *)malloc(sizeof(COMP)*logframes*NSYMROW*COHPSK_NC*ND); + assert(rx_symb_log != NULL); + } + + log_data_r = 0; frames = 0; nin_frame = COHPSK_SAMPLES_PER_FRAME; @@ -82,9 +112,23 @@ int main(int argc, char *argv[]) cohpsk_demod(cohpsk, rx_bits, &reliable_sync_bit, rx_fdm, &nin_frame); - if (reliable_sync_bit) + if (reliable_sync_bit) { fwrite(rx_bits, sizeof(int), COHPSK_BITS_PER_FRAME, fout); + if (oct) { + for(r=0; ramp_[r][c]; + rx_phi_log[log_data_r*COHPSK_NC*ND+c] = cohpsk->phi_[r][c]; + rx_symb_log[log_data_r*COHPSK_NC*ND+c] = cohpsk->rx_symb[r][c]; + } + } + //printf("frames: %d log_data_r: %d\n", frames, log_data_r); + if (frames == logframes) + oct = 0; + } + } + /* if this is in a pipeline, we probably don't want the usual buffering to occur */ @@ -94,7 +138,18 @@ int main(int argc, char *argv[]) fclose(fin); fclose(fout); + + /* optionally dump Octave files */ + + if (foct != NULL) { + octave_save_float(foct, "rx_amp_log_c", (float*)rx_amp_log, log_data_r, COHPSK_NC*ND, COHPSK_NC*ND); + octave_save_float(foct, "rx_phi_log_c", (float*)rx_phi_log, log_data_r, COHPSK_NC*ND, COHPSK_NC*ND); + octave_save_complex(foct, "rx_symb_log_c", (COMP*)rx_symb_log, log_data_r, COHPSK_NC*ND, COHPSK_NC*ND); + fclose(foct); + } + cohpsk_destroy(cohpsk); + return 0; } diff --git a/codec2-dev/src/ssbfilt_coeff.h b/codec2-dev/src/ssbfilt_coeff.h new file mode 100644 index 00000000..457f03a8 --- /dev/null +++ b/codec2-dev/src/ssbfilt_coeff.h @@ -0,0 +1,107 @@ +/* 600 - 2600 Hz FIR filter coeffs */ +/* Generated by make_ssbfilt Octave script */ + +#define SSBFILT_N 100 + +float ssbfilt_coeff[]={ + 0.000065, + -0.000030, + 0.000041, + 0.000010, + -0.000128, + -0.000072, + -0.000007, + -0.000095, + -0.000063, + 0.000016, + -0.000000, + 0.000022, + -0.000115, + -0.000233, + -0.000023, + -0.000315, + -0.000725, + 0.000073, + 0.000380, + -0.000345, + 0.000895, + 0.002401, + 0.001241, + 0.001409, + 0.003106, + 0.001236, + -0.001117, + -0.001091, + -0.003184, + -0.005981, + -0.006904, + -0.007920, + -0.005588, + -0.002546, + -0.003476, + 0.005155, + 0.017465, + 0.010772, + 0.013033, + 0.035082, + 0.018466, + -0.010261, + 0.016676, + 0.004890, + -0.076807, + -0.055969, + -0.007360, + -0.155769, + -0.203150, + 0.179458, + 0.475523, + 0.179458, + -0.203150, + -0.155769, + -0.007360, + -0.055969, + -0.076807, + 0.004890, + 0.016676, + -0.010261, + 0.018466, + 0.035082, + 0.013033, + 0.010772, + 0.017465, + 0.005155, + -0.003476, + -0.002546, + -0.005588, + -0.007920, + -0.006904, + -0.005981, + -0.003184, + -0.001091, + -0.001117, + 0.001236, + 0.003106, + 0.001409, + 0.001241, + 0.002401, + 0.000895, + -0.000345, + 0.000380, + 0.000073, + -0.000725, + -0.000315, + -0.000023, + -0.000233, + -0.000115, + 0.000022, + -0.000000, + 0.000016, + -0.000063, + -0.000095, + -0.000007, + -0.000072, + -0.000128, + 0.000010, + 0.000041, + -0.000030 +}; \ No newline at end of file -- 2.25.1