├── Hidden.txt ├── HiddenTrunc.txt ├── InputWeights.txt ├── Inputs.txt ├── InterWeights.txt ├── MLPv1.v ├── MLPv2.v ├── MLPv3.v ├── Outputs.txt ├── OutputsTrunc.txt ├── README.md └── tansig.txt /Hidden.txt: -------------------------------------------------------------------------------- 1 | 1.9638716e+02 3.5119482e+03 -5.5532521e+02 9.5868715e+02 -3.7211724e+02 1.5403833e+03 1.9154614e+02 -6.3420086e+02 -2.1339544e+02 4.2915275e+01 1.2800000e+02 2 | -------------------------------------------------------------------------------- /HiddenTrunc.txt: -------------------------------------------------------------------------------- 1 | 1.1662762e+02 1.2800000e+02 -1.2795637e+02 1.2799992e+02 -1.2723825e+02 1.2800000e+02 1.1577670e+02 -1.2798728e+02 -1.1919029e+02 4.1376401e+01 9.7484052e+01 2 | -------------------------------------------------------------------------------- /InputWeights.txt: -------------------------------------------------------------------------------- 1 | 1.4863152e-02 -2.7717579e-01 -1.0984867e-01 -2.9356228e-01 -8.1471205e-02 7.9436059e-02 4.7390503e-02 2.4820933e-02 -1.1778466e-02 2.1208578e-01 4.3239495e-01 -1.7213097e-02 -1.6014332e-01 6.2061295e-02 5.1235955e-01 9.3303839e-01 -3.1358985e-01 -6.9961267e-01 1.4132598e-02 9.2013290e-02 9.3333619e-01 3.5664666e-01 -3.0860534e-01 -3.7697585e-02 1.4689415e+00 -1.3074630e-01 1.2656972e-02 3.1544237e-02 -3.0440548e-03 6.1869597e-01 -3.0752932e-02 1.2771972e-01 2.1531483e-01 -5.0622163e-02 -3.5877609e-01 -1.8822314e-02 2.2390545e-02 -6.9605656e-02 1.7517520e-01 -6.4313359e-02 -2.0291110e-01 2.3823599e-02 -9.5876213e-01 -1.3432810e+00 -5.6302005e-01 5.9524826e-03 5.7362977e-03 -2.4354730e-01 -1.2336719e+00 -1.1006132e+00 -6.0993220e-01 5.5607524e-01 -1.8093150e+00 2.8237758e-01 -1.9336309e+00 -1.9176224e-01 5.5406746e-01 -1.0965604e+00 1.4573167e-01 -9.8065571e-01 -5.2280312e-02 3.1093160e-01 -2.4132915e+00 -5.6287897e-01 -9.9725112e-01 -2.9864415e-02 1.1999686e-01 -2.6395403e-02 -4.5403151e-03 -3.3800629e-01 3.1022231e-02 1.1569899e+01 4.5773483e-02 -2.5062038e-01 -4.3995220e-01 -2.4302763e-01 3.7059727e-01 -1.5793266e-01 -4.4421339e-02 2.7142320e-05 1.2364313e-02 2.1590088e-01 -4.9701768e-02 -3.3543971e-02 -3.3099134e-01 -1.1113010e-02 3.0911589e-01 -4.6939267e-01 9.0572504e-02 1.3095340e+00 2.6723095e-01 -2.3859884e-01 -4.8139580e-01 -9.0116889e-03 -7.4526803e-01 4.0013758e-02 2.7522712e-01 -2.2718263e-01 2.1382736e-01 6.0027318e-02 -1.3850327e-01 2.2426146e-01 1.6095615e-01 -4.7282377e-01 -2.7157766e-01 -9.0975920e-02 -3.5617090e-01 -3.3552107e-01 -1.0269889e-01 6.3843577e-02 1.4394208e-01 5.5514662e-02 -1.0992238e-01 -9.8947089e-02 -5.8360590e-01 -2.5325497e-01 -5.9310838e-01 5.5760035e-02 -9.7562144e-02 -1.3293142e-01 -8.1171781e-01 -1.4841143e-01 -9.5107905e-02 1.4643364e-01 -6.1520745e-01 2.0978197e-01 -4.1182434e-01 -4.9102443e-01 1.5229607e-01 -3.4803110e-01 1.7542678e-01 -1.4385086e-01 -4.5439425e-01 2.0377027e-01 -4.4424807e-01 -2.3844669e-01 -5.2185073e-01 5.6271735e-02 1.6603125e-01 6.4702537e-02 2.8254541e-02 -1.3449020e-01 -4.5812893e-02 4.3187116e-01 1.4730838e-01 -4.7422083e-01 -1.6465156e-01 -4.6718739e-01 -4.3544292e-02 9.2434754e-02 -4.5808506e-02 -1.8807792e-01 1.0863080e-02 6.0622212e-02 1.1709292e-01 4.3967633e-02 -1.7040071e-01 -1.0256202e-02 5.6168223e-01 1.2236328e-01 1.4492810e-02 1.0722905e-01 -2.2273299e-02 1.2827867e-01 1.3413923e-01 -6.5161709e-02 -1.0922931e-01 -3.2181619e-01 3.8181656e-01 1.6053405e-01 -1.8547368e-01 -1.4425861e-01 3.4971831e-01 1.1640778e-01 1.6192212e+00 -4.5178993e-01 -3.7394227e-01 -2.8155920e-01 2.1268183e-02 1.7930670e-01 -4.4363317e-01 6.9514176e-02 2.9845262e-01 5.8598556e-02 -4.4066792e-01 -4.1701111e-01 -6.1944779e-01 -5.6800678e-01 -2.9342737e-01 -4.3793737e-01 -1.3334141e-01 -2.1189564e-01 -1.9351276e-01 -7.4803694e-01 -1.6801785e+00 5.6221000e-01 -7.5267954e-01 3.7998397e-01 -7.6917071e-01 -6.9344569e-02 5.5957040e-01 -7.4015826e-01 2.4801910e-01 -7.6518342e-01 3.3882270e-02 1.9140922e-01 -2.1223692e+00 -5.5811057e-01 -1.6652535e+00 -1.4353660e-01 2.9346566e-02 -3.6165364e-01 1.3977851e-01 -1.9920461e-01 -2.1506112e-01 7.6858462e-01 -3.0999508e-01 4.5076623e-01 1.2518017e+00 4.6636609e-01 -7.3321269e-01 -5.1602346e-02 -7.2070796e-01 -1.0215559e-01 -4.6230766e-03 -3.6322593e-01 -3.3758508e-03 4.5252781e-03 -1.1602860e-01 -1.4006730e-01 1.2887121e-02 5.0861392e-02 3.8403787e-01 -2.3168263e-02 3.3772624e-01 8.7291784e-02 6.7048465e-02 3.7397760e-02 -5.1783160e-01 -1.2644954e-01 1.2772703e-01 -9.9871939e-02 3.2476038e-01 -9.6389276e-02 -1.5853890e-02 1.4307707e-01 4.1449454e-01 -2.1329606e+00 6.1947682e-01 -4.1798494e-02 -2.3705436e-01 1.9277320e-02 -1.1275108e-01 -2.4667191e-02 -1.2327031e-01 -4.1881006e-02 -6.6819406e-02 -9.9169945e-02 1.5399891e-01 2.7196558e-01 1.3785442e-01 8.7880049e-02 -1.0529695e-01 3.6271206e-01 2.5646154e-01 1.5980928e-01 8.7207006e-02 -2.7629690e-01 4.0725284e-01 6.8007890e-03 5.5275327e-01 6.6469148e-03 -2.7162895e-01 1.6343535e-01 7.7263456e-02 1.3599412e-01 1.2111483e-02 -3.0147759e-01 7.3224858e-01 4.0036573e-01 4.1439279e-01 9.9677335e-03 9.7516426e-03 2.9884358e-01 -2.5046061e-03 4.5222395e-01 -1.5396503e-02 -5.1296873e-01 9.8694117e-01 -5.5387561e-01 -2.7163290e-01 -5.7840773e-01 3.3437599e-01 3.9738521e-02 -1.0110390e-02 -1.5080450e-01 2.3904101e-02 -9.7914727e-03 1.4005221e-02 2.9050699e-02 -8.2924931e-02 -1.4062050e-02 -1.9958310e-01 5.0306122e-03 -2.8584654e-01 -3.2416243e-01 -6.1193985e-01 1.9283493e-01 1.6504831e-02 -5.8543626e-02 1.2226160e-01 4.6882899e-01 9.2888337e-01 7.4751859e-02 -3.3244563e-01 -7.1503072e-02 -3.4015206e-01 3.6575737e-01 -3.3523368e-01 -1.5285360e+00 -1.9867171e-02 -1.1868807e-01 -1.2282604e+00 3.2670908e-01 2.1198108e-02 -3.1511514e-01 -1.4156564e-01 -3.1828471e-01 4.8380353e-01 1.5154233e-02 -4.5993964e-02 -1.4559730e-02 6.1696361e-02 -9.3650630e-02 1.0137067e-02 -2.5971957e-01 4.6936370e-02 -4.3914335e-02 -1.9892414e+00 1.3095283e-02 3.7805206e-02 -4.1264452e-01 3.8037951e-02 9.4903183e-03 3.8877788e-03 -4.7500675e-02 1.4627932e-02 7.2780500e-02 3.4853886e-02 1.3975374e-01 -2.8353273e-01 -8.1543119e-03 -2.5904333e-01 -8.4321578e-02 2.8442276e-02 -2.2683720e-01 -5.2552181e-01 2.4902347e-02 6.0777054e-01 7.2053877e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2 | -------------------------------------------------------------------------------- /Inputs.txt: -------------------------------------------------------------------------------- 1 | -9.7391818e+01 1.2796147e+02 1.2506594e+02 1.2158064e+02 -1.3835425e+02 1.1164248e+02 -8.0363000e+01 -8.2508623e+01 -2.0110191e+02 1.1961911e+02 1.3184040e+02 -1.3530607e+02 -1.5836549e+02 -1.4220427e+02 -1.1273727e+02 1.1310470e+02 -1.5061713e+02 -1.4232136e+02 -9.9708667e+01 -1.4886100e+02 1.1484670e+02 -1.2276576e+02 -1.0138808e+02 -9.9652403e+01 -1.6928467e+02 1.5516215e+02 -1.0030646e+02 -1.1688145e+02 -1.3049102e+02 1.3672579e+02 -8.6064332e+01 1.2473813e+02 1.2521451e+02 8.9548957e+01 -1.0382244e+02 1.2800000e+02 2 | -------------------------------------------------------------------------------- /InterWeights.txt: -------------------------------------------------------------------------------- 1 | 7.7846858e-01 -3.7418668e+00 -1.8607528e+00 -8.4380119e-01 1.8758282e+00 -2.9271851e+00 3.1131877e+00 1.4320766e-01 6.6021234e-01 2.4714295e+00 -6.0744021e-01 2.3182440e+00 -4.2692668e-01 2.6729762e+00 -4.2117669e-01 3.1436544e-01 -3.9245391e-01 8.2612092e-01 2.9579827e+00 -2.6155319e+00 -4.5289987e-01 -9.8497029e-01 2.6252950e+00 -4.4757000e-01 -9.7956718e-02 -9.8588636e-01 -1.9725715e+00 -4.2581091e-01 1.2176898e-01 3.1446235e-01 -2.7569629e+00 2.2207407e+00 -3.8264747e+00 5.1223108e-01 -6.5017052e-01 -2.6938124e+00 -1.8377526e+00 1.7605857e+00 -3.4259520e-01 1.3029704e+00 2.3722026e+00 1.3741738e+00 -2.0839905e+00 -2.5408008e+00 -9.4253372e-01 -4.1093747e-01 -1.1884318e+00 -8.9147504e-01 5.3745008e-01 -4.2677624e-01 1.0053708e+00 5.0305545e-02 -1.4123934e+00 2.1664853e+00 -3.1292727e+00 -1.3511052e+00 -4.4544885e-01 1.0896042e+00 -1.2046722e+00 1.3940021e+00 -4.4781221e-01 2.0992722e+00 3.3130362e-01 1.5730886e-01 1.5687405e+00 -3.2063946e+00 2.2864624e+00 -3.4688581e-01 -8.0097246e-03 -7.5557198e-01 -2.5708943e+00 -3.5671263e-01 6.8203123e-02 2.8000659e-01 1.9815965e+00 1.6593008e+00 -4.2006021e+00 2.2334499e+00 -2.7909248e-01 2.4481022e+00 -3.1296215e-01 2.3904011e-02 -2.7214084e-01 1.5704523e+00 4.1919879e-01 3.1906226e-03 1.9633073e+00 -4.0664041e+00 -1.9608195e+00 -1.7769050e-01 -3.8249117e+00 -1.7468916e-01 -2.4487968e+00 -1.6690814e-01 3.3114214e-01 8.1303195e+00 -1.0254800e+00 -1.4642328e+00 1.9121876e-01 -1.3956235e-01 -1.5952813e+00 -2.2924127e+00 -1.5353991e+00 -2.5143356e+00 -7.3892978e-01 -3.4431106e+00 2.8167846e-01 -2.0702931e-01 4.2910742e-01 -1.7002295e+00 -2.5281143e+00 -1.2440441e+00 -3.3694230e+00 -2.9205915e+00 7.8347026e-01 -7.4680019e-01 -4.9691141e-01 5.1996362e-01 2.1094943e+00 1.0414769e-01 -1.5579833e+00 5.3424877e-01 -1.7141131e+00 -4.6223936e-01 -8.8907049e-01 2.4405895e+00 -6.7339436e-01 -3.7357548e+00 7.8297041e-01 -3.9145592e+00 3.8988796e-01 -2.1920156e+00 3.1483751e+00 -2.4491314e-01 -6.1678569e-02 -6.4492050e+00 -2.8384085e-02 3.4339624e-01 -1.5561466e+00 8.0260576e-01 2.5142977e-01 1.5612954e+00 -1.0153629e+00 1.5678794e+00 -2.7246332e-01 2.8576555e+00 -1.3071536e+00 -3.8313622e-02 -3.2624832e-01 -1.9469295e+00 5.3902540e-01 1.3993059e-02 -9.3755722e-01 -2.0933566e+00 4.2136592e-01 -1.0802376e+00 -3.0500551e-01 -1.2356008e+00 -2.8536722e+00 -5.5958837e-01 -3.4112592e-02 1.1571701e+00 1.8256517e+00 -3.3558523e+00 -1.3446412e+00 -1.9020858e+00 -7.1340019e-01 3.4009516e+00 -6.4209544e-01 1.3063161e+00 -3.9166077e-01 1.1326683e-01 8.4406262e-01 -7.1781770e-02 -2.5984153e+00 -3.5492295e+00 1.4000667e+00 -6.1227363e-01 -9.5801292e-01 -6.5085956e-01 -8.4182168e-01 -6.1132434e-01 -1.8604300e+00 5.4297397e-01 -2.4828265e+00 -2.4650772e+00 -2.2871391e+00 -1.4670558e+00 -4.4952939e-01 -2.6648623e+00 -1.0057964e+00 3.2119548e+00 -4.3459819e-01 1.8931259e-01 8.8671726e-01 -1.9263944e+00 -1.5421132e+00 -4.7558209e+00 -1.2070861e+00 -1.3644355e+00 2.3914182e+00 -4.4281235e-01 -3.1725078e+00 -1.3759813e+00 -1.9639060e-02 2.6130405e-01 1.2688179e-02 -3.3106112e+00 -1.6621521e+00 -1.8453531e+00 -1.4383567e+00 1.4448931e-01 -1.4972851e+00 -2.1059393e+00 -1.4397463e+00 2.1339961e+00 3.4681112e-01 1.4686670e+00 1.1017753e+00 -1.6099365e+00 -2.1633534e-02 -9.0497559e-01 -1.1861210e+00 -8.9058331e-01 -1.9078108e-02 -3.7143610e-01 -3.0187762e+00 9.9280337e-01 4.6361708e-01 -2.9089381e+00 -1.1952991e+00 2.3802612e-01 -3.7791009e-01 2.2766634e+00 -5.4339542e-01 7.6868490e-03 -5.4031593e+00 1.1032853e+00 4.6788615e-01 3.0280099e+00 -2.5735891e+00 -6.7801031e-01 9.1435333e-01 5.7245021e-01 -3.4883834e+01 5.7747263e-01 -1.5707195e-02 -5.6631751e+01 -2.0790843e+00 -5.1561664e-01 1.3274069e+00 5.8880689e+00 2.8673392e-01 -1.7970967e+00 -1.4254502e+00 1.7011254e+00 -1.8798475e-01 2.1716712e+00 -8.0608943e-01 -1.6612069e+00 1.7000877e+00 1.2681374e-01 1.7246682e-01 -1.7100429e+00 -4.4132963e-01 -5.6121858e-01 2.6984448e+00 -6.9449387e-01 -2.5863757e+00 -5.4929246e-01 -1.6256009e+00 1.9322864e+00 1.1391677e+00 1.7959756e-01 -2.0511457e+00 -3.3593358e-01 -6.9342316e-01 3.7488874e+00 -2.3354468e+00 -2.0761483e-01 -6.7990294e-01 -2.2000648e+00 -5.7701517e-02 -5.0355042e+00 9.3320638e-01 -2.4507030e+00 2 | -------------------------------------------------------------------------------- /MLPv1.v: -------------------------------------------------------------------------------- 1 | `timescale 1ns/10ps 2 | `define EOF 32'hFFFF_FFFF 3 | 4 | module MLP (); 5 | reg clk; 6 | reg reset; 7 | reg [15:0] control_in; 8 | reg [7:0] N; 9 | reg [7:0] M; 10 | reg [7:0] H; 11 | wire [7:0]mem_dat_data_a; 12 | reg mem_w_wr, mem_f_wr; 13 | wire mem_dat_en, meme_w_en, mem_F_en; 14 | wire [9:0] mem_dat_add_rd, mem_dat_add_wr; 15 | wire [7:0] mem_dat_data, mem_dat_data_f; 16 | wire mem_dat_wr; 17 | wire [11:0] mem_w_address, mem_F_address; 18 | wire [15:0] mem_w_data; 19 | reg [7:0] mem_f_data_w; 20 | reg [15:0] mem_w_data_w; 21 | 22 | mlp_core core (clk, reset, control_in, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, 23 | mem_dat_add_wr, mem_dat_wr, mem_w_address, meme_w_en, mem_w_data, mem_F_address, mem_F_en); 24 | 25 | RAM_dual_port ram_data (clk, mem_dat_en, mem_dat_wr, mem_dat_add_wr, mem_dat_add_rd, 26 | mem_dat_data_f, mem_dat_data_a, mem_dat_data); 27 | 28 | RAM_single_port_1 ram_w (clk, meme_w_en, mem_w_wr, mem_w_address, mem_w_data_w, mem_w_data); 29 | 30 | RAM_single_port_2 ram_f (clk, mem_F_en, mem_f_wr, mem_F_address, mem_f_data_w,mem_dat_data_f); 31 | 32 | always 33 | begin 34 | clk=1; #5; clk=0; #5; 35 | end 36 | 37 | initial begin 38 | N<=36; 39 | M<=11; 40 | H<=26; 41 | reset<=1; 42 | control_in<=0; 43 | #20; 44 | reset<=0; 45 | control_in<=2'b10; 46 | end 47 | 48 | endmodule 49 | 50 | 51 | module RAM_single_port_1 (clock,ram_enable, write_enable,address, data_input, data_output); 52 | parameter N=16; 53 | parameter M=12; 54 | input clock,ram_enable,write_enable; 55 | input [M-1:0] address; 56 | input [N-1:0] data_input; 57 | output [N-1:0] data_output; 58 | reg [N-1:0] data_output; 59 | reg [N-1:0] memory [(2**M)-1:0]; 60 | 61 | //////////inicializacion 62 | integer file, j; 63 | real f; integer st; 64 | initial begin 65 | file=$fopen("InputWeights.txt", "r"); 66 | st=$fscanf(file, "%f", f); 67 | j=0; 68 | while (j<=2048 && st!=`EOF) begin 69 | memory[j]=f*512; 70 | $display ("ww:%d", memory[j]); 71 | st=$fscanf(file, "%f", f); 72 | j=j+1; 73 | end 74 | $fclose (file); 75 | j=2048; 76 | file=$fopen("InterWeights.txt", "r"); 77 | st=$fscanf(file, "%f", f); 78 | while (j<=4095 && st!=`EOF) begin 79 | memory[j]=f*512; 80 | st=$fscanf(file, "%f", f); 81 | j=j+1; 82 | end 83 | $fclose (file); 84 | 85 | end 86 | 87 | //////////////////////// 88 | 89 | always @(posedge clock) 90 | if (ram_enable) 91 | if (write_enable) begin 92 | memory[address] <= data_input; 93 | end 94 | else 95 | data_output <= memory[address]; 96 | 97 | endmodule 98 | 99 | module RAM_single_port_2 (clock,ram_enable, write_enable,address, data_input, data_output); 100 | parameter N=8; 101 | parameter M=12; 102 | input clock,ram_enable,write_enable; 103 | input [M-1:0] address; 104 | input [N-1:0] data_input; 105 | output [N-1:0] data_output; 106 | reg [N-1:0] data_output; 107 | reg [N-1:0] memory [(2**M)-1:0]; 108 | 109 | //////////inicializacion 110 | integer file, j; 111 | real f; integer st; 112 | initial begin 113 | file=$fopen("tansig.txt", "r"); 114 | st=$fscanf(file, "%f", f); 115 | j=0; 116 | while (j<=4096 && st!=`EOF) begin 117 | memory [j]=f/2; 118 | $display ("tans:%d", memory[j]); 119 | st=$fscanf(file, "%f", f); 120 | j=j+1; 121 | end 122 | $fclose (file); 123 | end 124 | 125 | //////////////////////// 126 | 127 | always @(posedge clock) 128 | if (ram_enable) 129 | if (write_enable) 130 | memory[address] <= data_input; 131 | else 132 | data_output <= memory[address]; 133 | 134 | endmodule 135 | 136 | 137 | module RAM_dual_port(clock,ram_enable,write_enableA,addressA,addressB,data_input,data_outputA,data_outputB); 138 | parameter N=8; 139 | parameter M=10; 140 | input clock,ram_enable,write_enableA; 141 | input [M-1:0] addressA,addressB; 142 | input [N-1:0] data_input; 143 | output [N-1:0] data_outputA,data_outputB; 144 | reg [N-1:0] data_outputA,data_outputB; 145 | reg [N-1:0] memory [(2**M)-1:0]; 146 | 147 | 148 | //////////inicializacion 149 | reg signed [7:0] p; 150 | integer file, j; 151 | real f; integer st; 152 | initial begin 153 | file=$fopen("Inputs.txt", "r"); 154 | st=$fscanf(file, "%f", f); 155 | j=0; 156 | while (j<=255 && st!=`EOF) begin 157 | memory [j]=f/2; 158 | $display ("%d", memory[j]); 159 | st=$fscanf(file, "%f", f); 160 | j=j+1; 161 | end 162 | $fclose (file); 163 | end 164 | 165 | //////////////////////// 166 | 167 | always @(posedge clock) 168 | if (ram_enable) begin 169 | if (write_enableA) begin 170 | memory[addressA] <= data_input; 171 | end 172 | data_outputA = memory[addressA]; 173 | data_outputB = memory[addressB]; 174 | end 175 | 176 | endmodule 177 | 178 | 179 | module mlp_core (clk, reset, control, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, 180 | mem_dat_add_wr, mem_dat_wr, mem_w_address, meme_w_en, mem_w_data, mem_F_address, mem_F_en); 181 | input clk, reset; 182 | input [15:0] control; 183 | input [7:0] N, M, H; 184 | output mem_dat_en, meme_w_en, mem_F_en; 185 | output reg [9:0] mem_dat_add_rd, mem_dat_add_wr; 186 | output reg [11:0] mem_w_address, mem_F_address; 187 | input [7:0] mem_dat_data; 188 | output reg mem_dat_wr; 189 | input [15:0] mem_w_data; 190 | 191 | parameter data_in_m=10'h000; 192 | parameter data_a_m=10'h100; 193 | parameter data_out_m=10'h200; 194 | parameter iw_m=12'h000; 195 | parameter il_m=12'h800; 196 | 197 | reg signed [7:0] data; 198 | reg signed [15:0] weight; 199 | reg signed [23:0] mult; 200 | reg signed [31:0] suma; 201 | reg [15:0] status_r; 202 | reg [15:0] control_r; 203 | reg [7:0] N_r, M_r, H_r; 204 | reg [7:0] ctrl_0, ctrl_1, ctrl_2, ctrl_3, ctrl_4, ctrl_5; 205 | reg [7:0] cont; reg [7:0] cont2; 206 | 207 | assign mem_dat_en=1; 208 | assign meme_w_en=1; 209 | assign mem_F_en=1; 210 | 211 | 212 | always @ (posedge clk) begin 213 | if (reset || control[2] || status_r[0]) begin 214 | ctrl_0<=0; ctrl_1<=0; ctrl_2<=0; cont<=1; 215 | ctrl_3<=0; ctrl_4<=0; ctrl_5<=0; cont2<=1; 216 | mem_dat_add_rd<=data_in_m; 217 | mem_dat_add_wr<=data_a_m; 218 | mem_w_address<=12'h000; 219 | end 220 | 221 | if (reset || control[2]) begin 222 | control_r<=0; 223 | status_r<=0; 224 | N_r<=0; M_r<=0; H_r<=0; 225 | end 226 | else begin 227 | control_r<=control; 228 | N_r<=N; M_r<=M; H_r<=H; 229 | 230 | if (status_r[0]==1 && control_r[1]==0) 231 | status_r[0]=0; 232 | 233 | else if (status_r[0]==0 && control_r[1]==1) begin 234 | ctrl_0[0]<=1; ctrl_1<=ctrl_0; ctrl_2<=ctrl_1; 235 | ctrl_3<=ctrl_2; ctrl_4<=ctrl_3; ctrl_5<=ctrl_4; 236 | data<=mem_dat_data; 237 | weight<=mem_w_data; 238 | mult<=data*weight; 239 | 240 | if (cont==N_r && cont2==M_r && ctrl_0[4]==0) begin 241 | mem_dat_add_rd<=data_a_m; 242 | mem_w_address<=il_m; 243 | ctrl_0[3:1]<=3'b010; 244 | ctrl_0[4]<=1; 245 | cont<=1; 246 | cont2<=1; 247 | end 248 | else if (cont==M_r && cont2==H_r && ctrl_0[4]==1) begin 249 | ctrl_0[3:1]<=3'b100; 250 | cont<=0; 251 | end 252 | else if (cont==N_r && ctrl_0[4]==0) begin 253 | ctrl_0[3:1]<=3'b001; 254 | mem_dat_add_rd<=data_in_m; 255 | mem_w_address<=mem_w_address+1; 256 | cont<=1; 257 | cont2<=cont2+1; 258 | end 259 | else if (cont==M_r && ctrl_0[4]==1) begin 260 | ctrl_0[3:1]<=3'b001; 261 | mem_dat_add_rd<=data_a_m; 262 | mem_w_address<=mem_w_address+1; 263 | cont<=1; 264 | cont2<=cont2+1; 265 | end 266 | else begin 267 | mem_dat_add_rd<=mem_dat_add_rd+1; 268 | mem_w_address<=mem_w_address+1; 269 | cont<=cont+1; 270 | ctrl_0[3:1]<=3'b000; 271 | end 272 | 273 | if (ctrl_3[3:1]!=3'b000) 274 | suma<=mult; 275 | else if (ctrl_2[0]) 276 | suma<=suma+mult; 277 | else 278 | suma<=0; 279 | 280 | if ((suma[30:17]!=0 && suma[31]==0) || ctrl_3[2]==1) 281 | mem_F_address<=12'h7FF; 282 | else if (suma[30:17]!=14'hFFFF && suma[31]==1) 283 | mem_F_address<=12'h800; 284 | else 285 | mem_F_address<={suma[31],suma[16:6]}; 286 | 287 | if (ctrl_4[3:1]) 288 | mem_dat_wr<=1; 289 | else 290 | mem_dat_wr<=0; 291 | 292 | if (ctrl_5[1]) 293 | mem_dat_add_wr<=mem_dat_add_wr+1; 294 | else if (ctrl_5[2]) 295 | mem_dat_add_wr<=data_out_m; 296 | 297 | if (ctrl_5[3]) 298 | status_r[0]<=1; 299 | end 300 | end 301 | end 302 | endmodule -------------------------------------------------------------------------------- /MLPv2.v: -------------------------------------------------------------------------------- 1 | `timescale 1ns/10ps 2 | `define EOF 32'hFFFF_FFFF 3 | 4 | module testb (); 5 | reg clk; 6 | reg reset; 7 | reg [15:0] address; 8 | reg [31:0] din; 9 | wire [31:0] dout; 10 | reg write; 11 | reg read; 12 | reg signed [7:0] s; 13 | 14 | reg signed [7:0] p; 15 | integer file, j; 16 | real f; integer st; 17 | 18 | MLP mlp (clk, reset, address, din, dout, write, read); 19 | 20 | always 21 | begin 22 | clk=1; #5; clk=0; #5; 23 | end 24 | 25 | initial begin 26 | 27 | //resetear el dispositivo 28 | reset=1; 29 | #19; 30 | reset=0; 31 | 32 | //escribir en el registro de control para activar el acceso a las memorias 33 | write=1; 34 | address=16'h0004; 35 | din=16'b001; 36 | #10 37 | 38 | //registro N 39 | address=16'h0010; 40 | din=36; 41 | #10 42 | 43 | //registro M 44 | address=16'h0014; 45 | din=11; 46 | #10 47 | 48 | //registro H 49 | address=16'h0018; 50 | din=26; 51 | #10 52 | 53 | //Escribir datos de entrada 54 | address=16'h1000; 55 | file=$fopen("Inputs.txt", "r"); 56 | st=$fscanf(file, "%f", f); 57 | j=0; 58 | while (j<=255 && st!=`EOF) begin 59 | //p=f/2; 60 | din=f/2; 61 | #10; 62 | st=$fscanf(file, "%f", f); 63 | j=j+1; 64 | address=address+1; 65 | end 66 | $fclose (file); 67 | 68 | //Escribir pesos capa oculta 69 | address=16'h8000; 70 | file=$fopen("InputWeights.txt", "r"); 71 | st=$fscanf(file, "%f", f); 72 | j=0; 73 | while (j<=2048 && st!=`EOF) begin 74 | din<=f*512;#10; 75 | st=$fscanf(file, "%f", f); 76 | j=j+1; 77 | address=address+1; 78 | end 79 | $fclose (file); 80 | 81 | //Escribir pesos capa de salida 82 | address=16'hA000; 83 | file=$fopen("InterWeights.txt", "r"); 84 | st=$fscanf(file, "%f", f); 85 | j=0; 86 | while (j<=2048 && st!=`EOF) begin 87 | din=f*512;#10; 88 | st=$fscanf(file, "%f", f); 89 | j=j+1; 90 | address=address+1; 91 | end 92 | $fclose (file); 93 | 94 | //Escribir LUT 95 | address=16'h4000; 96 | file=$fopen("tansig.txt", "r"); 97 | st=$fscanf(file, "%f", f); 98 | j=0; 99 | while (j<=4096 && st!=`EOF) begin 100 | din=f/2;#10; 101 | st=$fscanf(file, "%f", f); 102 | j=j+1; 103 | address=address+1; 104 | end 105 | $fclose (file); 106 | $display ("Memorias inicializadas"); 107 | 108 | //Una vez escritas las memorias se desactiva el acceso a las memorias y se inicia el procesado a través del registro de control 109 | address=16'h0004; 110 | din=16'b010; 111 | #10; 112 | write=0; 113 | 114 | //Mantener el registro de estado en lectura 115 | address=16'h0008; 116 | end 117 | 118 | //Cuando el bit 1 del registro de estado pase a 1 (fin del procesado), mostrar los resultados almacenados en la memoria de datos (salida) 119 | always @(posedge dout[0]) begin 120 | if (address==16'h0008) begin 121 | write<=1; 122 | address<=16'h0004; 123 | din<=16'b001; 124 | #10 125 | write<=0; 126 | address<=16'h1800; 127 | j=0; 128 | while (j<26) begin 129 | #10; 130 | s=dout; 131 | $display ("Ouput: %d", s); 132 | j=j+1; 133 | address<=address+1; 134 | end 135 | end 136 | end 137 | 138 | endmodule 139 | 140 | module MLP (input clk, input reset, input [15:0] address, input [31:0] din, output reg [31:0] dout, input write, input read); 141 | reg [15:0] control_reg; 142 | reg [7:0] N; 143 | reg [7:0] M; 144 | reg [7:0] H; 145 | wire [7:0]mem_dat_data_a; 146 | wire [15:0] status_out; 147 | reg mem_w_wr, mem_f_wr; 148 | wire mem_dat_en, meme_w_en, mem_F_en; 149 | wire [9:0] mem_dat_add_rd, mem_dat_add_wr; 150 | reg [9:0] mem_dat_add_wr_m; 151 | wire [7:0] mem_dat_data, mem_dat_data_f; 152 | reg [7:0] mem_dat_data_f_m; 153 | wire mem_dat_wr; 154 | reg mem_dat_wr_m; 155 | wire [11:0] mem_w_address, mem_F_address; 156 | reg [11:0] mem_F_address_m, mem_w_address_m; 157 | wire [15:0] mem_w_data; 158 | reg [7:0] mem_f_data_w; 159 | reg [15:0] mem_w_data_w; 160 | 161 | //bloque de procesado 162 | mlp_core core (clk, reset, control_reg, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, 163 | mem_dat_add_wr, mem_dat_wr, mem_w_address, meme_w_en, mem_w_data, mem_F_address, mem_F_en, status_out); 164 | 165 | //memoria de datos de doble puerto 166 | RAM_dual_port ram_data (clk, mem_dat_en, mem_dat_wr_m, mem_dat_add_wr_m, mem_dat_add_rd, 167 | mem_dat_data_f_m, mem_dat_data_a, mem_dat_data); 168 | 169 | //memoria de pesos 170 | RAM_single_port_1 ram_w (clk, meme_w_en, mem_w_wr, mem_w_address_m, mem_w_data_w, mem_w_data); 171 | 172 | //LUT con la funcion no lineal 173 | RAM_single_port_2 ram_f (clk, mem_F_en, mem_f_wr, mem_F_address_m, mem_f_data_w,mem_dat_data_f); 174 | 175 | //interfaz con el bus 176 | //registros de configuracion 177 | always @(posedge clk) 178 | if (write) 179 | case (address) 180 | 16'h0004: control_reg<=din [15:0]; 181 | 16'h0010: N<=din; 182 | 16'h0014: M<=din; 183 | 16'h0018: H<=din; 184 | endcase 185 | //salida de datos 186 | always @(*) begin 187 | case (address[15:12]) 188 | 4'h0: 189 | case (address [7:0]) 190 | 8'h04: dout=control_reg; 191 | 8'h08: dout=status_out; 192 | 8'h10: dout=N; 193 | 8'h14: dout=M; 194 | 8'h18: dout=H; 195 | endcase 196 | 4'h1: dout=mem_dat_data_a; 197 | 4'h4: dout=mem_dat_data_f; 198 | 4'h8: dout=mem_w_data; 199 | 4'hA: dout=mem_w_data; 200 | endcase 201 | end 202 | 203 | //entrada de datos y bus de direcciones 204 | always @(*) begin 205 | if (address [15:12]==4'h1 && control_reg[0]) begin 206 | mem_dat_wr_m=write; 207 | mem_dat_data_f_m=din; 208 | if (address [11:10]==2'b00) 209 | mem_dat_add_wr_m={2'b00, address [7:0]}; 210 | else if (address [11:10]==2'b01) 211 | mem_dat_add_wr_m={2'b01, address [7:0]}; 212 | else 213 | mem_dat_add_wr_m={2'b10, address [7:0]}; 214 | end 215 | else begin 216 | mem_dat_wr_m=mem_dat_wr; 217 | mem_dat_data_f_m=mem_dat_data_f; 218 | mem_dat_add_wr_m=mem_dat_add_wr; 219 | end 220 | if (address [15:12]==4'h4 && control_reg[0]) begin 221 | mem_f_wr=write; 222 | mem_f_data_w=din; 223 | mem_F_address_m=address [11:0]; 224 | end 225 | else begin 226 | mem_f_wr=1'b0; 227 | mem_f_data_w=8'b0; 228 | mem_F_address_m=mem_F_address; 229 | end 230 | if (address [15]==1'b1 && control_reg[0]) begin 231 | mem_w_wr=write; 232 | mem_w_data_w=din; 233 | if (address [14:12]==0) 234 | mem_w_address_m={1'b0, address[10:0]}; 235 | else 236 | mem_w_address_m={1'b1, address[10:0]}; 237 | end 238 | else begin 239 | mem_w_wr=0; 240 | mem_w_data_w=12'b0; 241 | mem_w_address_m=mem_w_address; 242 | end 243 | end 244 | endmodule 245 | 246 | module mlp_core (clk, reset, control, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, mem_dat_add_wr, mem_dat_wr, mem_w_address, meme_w_en, mem_w_data, mem_F_address, mem_F_en, status_r); 247 | input clk, reset; 248 | input [15:0] control; 249 | input [7:0] N, M, H; 250 | output mem_dat_en, meme_w_en, mem_F_en; 251 | output reg [9:0] mem_dat_add_rd, mem_dat_add_wr; 252 | output reg [11:0] mem_w_address, mem_F_address; 253 | input [7:0] mem_dat_data; 254 | output reg mem_dat_wr; 255 | input [15:0] mem_w_data; 256 | output reg [15:0] status_r; 257 | 258 | reg signed [7:0] data; 259 | reg signed [15:0] weight; 260 | reg signed [23:0] mult; 261 | reg signed [31:0] suma; 262 | reg [4:0] ctrl_0, ctrl_1, ctrl_2, ctrl_3, ctrl_4, ctrl_5; 263 | reg [7:0] cont; reg [7:0] cont2; 264 | 265 | parameter data_in_m=10'h000; 266 | parameter data_a_m=10'h100; 267 | parameter data_out_m=10'h200; 268 | parameter iw_m=12'h000; 269 | parameter il_m=12'h800; 270 | 271 | assign mem_dat_en=1; 272 | assign meme_w_en=1; 273 | assign mem_F_en=1; 274 | 275 | always @ (posedge clk) begin 276 | if (reset || control[2] || status_r[0]) begin 277 | ctrl_0<=0; ctrl_1<=0; ctrl_2<=0; cont<=1; 278 | ctrl_3<=0; ctrl_4<=0; ctrl_5<=0; cont2<=1; 279 | mem_dat_add_rd<=data_in_m; 280 | mem_dat_add_wr<=data_a_m; 281 | mem_w_address<=12'h000; 282 | end 283 | 284 | if (reset || control[2]) begin 285 | status_r<=0; 286 | end 287 | else begin 288 | if (status_r[0]==1 && control[1]==0) 289 | status_r[0]=0; 290 | 291 | else if (status_r[0]==0 && control[1]==1) begin 292 | //registros de control (pipeline), entrada de datos y multiplicacion 293 | ctrl_0[0]<=1; ctrl_1<=ctrl_0; ctrl_2<=ctrl_1; 294 | ctrl_3<=ctrl_2; ctrl_4<=ctrl_3; ctrl_5<=ctrl_4; 295 | data<=mem_dat_data; 296 | weight<=mem_w_data; 297 | mult<=data*weight; 298 | 299 | //comprobar si se ha llegado al final de la primera fase (capa oculta) 300 | if (cont==N && cont2==M && ctrl_0[4]==0) begin 301 | mem_dat_add_rd<=data_a_m; 302 | mem_w_address<=il_m; 303 | ctrl_0[3:1]<=3'b010; 304 | ctrl_0[4]<=1; 305 | cont<=1; 306 | cont2<=1; 307 | end 308 | //comprobar si se ha llegado al final del procesado (capa de salida) 309 | else if (cont==M && cont2==H && ctrl_0[4]==1) begin 310 | ctrl_0[3:1]<=3'b100; 311 | cont<=0; 312 | end 313 | //comprobar si se ha calculado una neurona de la capa oculta 314 | else if (cont==N && ctrl_0[4]==0) begin 315 | ctrl_0[3:1]<=3'b001; 316 | mem_dat_add_rd<=data_in_m; 317 | mem_w_address<=mem_w_address+1; 318 | cont<=1; 319 | cont2<=cont2+1; 320 | end 321 | //comprobar si se ha calculado una neurona de la capa de salida 322 | else if (cont==M && ctrl_0[4]==1) begin 323 | ctrl_0[3:1]<=3'b001; 324 | mem_dat_add_rd<=data_a_m; 325 | mem_w_address<=mem_w_address+1; 326 | cont<=1; 327 | cont2<=cont2+1; 328 | end 329 | else begin 330 | mem_dat_add_rd<=mem_dat_add_rd+1; 331 | mem_w_address<=mem_w_address+1; 332 | cont<=cont+1; 333 | ctrl_0[3:1]<=3'b000; 334 | end 335 | 336 | //escribir en el acumulador solo si hay un valor valido a la entrada 337 | if (ctrl_3[3:1]!=3'b000) 338 | suma<=mult; 339 | else if (ctrl_2[0]) 340 | suma<=suma+mult; 341 | else 342 | suma<=0; 343 | 344 | //calculo de la direccion de 12 bits para la LUT 345 | if (ctrl_3[3:1]) begin 346 | if ((suma[30:17]!=0 && suma[31]==0) || ctrl_3[2]) 347 | mem_F_address<=12'h7FF; 348 | else if (suma[30:17]!=14'hFFFF && suma[31]) 349 | mem_F_address<=12'h800; 350 | else 351 | mem_F_address<={suma[31],suma[16:6]}; 352 | end 353 | 354 | //activar escritura en memoria de datos solo cuando sea necesario 355 | if (ctrl_4[3:1]) 356 | mem_dat_wr<=1; 357 | else 358 | mem_dat_wr<=0; 359 | 360 | //actualizar direccion de escritura en memoria de datos 361 | if (ctrl_5[1]) 362 | mem_dat_add_wr<=mem_dat_add_wr+1; 363 | else if (ctrl_5[2]) 364 | mem_dat_add_wr<=data_out_m; 365 | 366 | //se ha llegado al final del procesado? (ultimo dato escrito?) 367 | if (ctrl_5[3]) 368 | status_r[0]<=1; 369 | end 370 | end 371 | end 372 | endmodule 373 | 374 | module RAM_single_port_1 (clock,ram_enable, write_enable,address, data_input, data_output); 375 | parameter N=16; 376 | parameter M=12; 377 | input clock,ram_enable,write_enable; 378 | input [M-1:0] address; 379 | input [N-1:0] data_input; 380 | output [N-1:0] data_output; 381 | reg [N-1:0] data_output; 382 | reg [N-1:0] memory [(2**M)-1:0]; 383 | 384 | 385 | always @(posedge clock) 386 | if (ram_enable) 387 | if (write_enable) begin 388 | memory[address] <= data_input; 389 | end 390 | else 391 | data_output <= memory[address]; 392 | 393 | endmodule 394 | 395 | 396 | module RAM_single_port_2 (clock,ram_enable, write_enable,address, data_input, data_output); 397 | parameter N=8; 398 | parameter M=12; 399 | input clock,ram_enable,write_enable; 400 | input [M-1:0] address; 401 | input [N-1:0] data_input; 402 | output [N-1:0] data_output; 403 | reg [N-1:0] data_output; 404 | reg [N-1:0] memory [(2**M)-1:0]; 405 | 406 | always @(posedge clock) 407 | if (ram_enable) 408 | if (write_enable) 409 | memory[address] <= data_input; 410 | else 411 | data_output <= memory[address]; 412 | 413 | endmodule 414 | 415 | 416 | module RAM_dual_port(clock,ram_enable,write_enableA,addressA,addressB,data_input,data_outputA,data_outputB); 417 | parameter N=8; 418 | parameter M=10; 419 | input clock,ram_enable,write_enableA; 420 | input [M-1:0] addressA,addressB; 421 | input [N-1:0] data_input; 422 | output [N-1:0] data_outputA,data_outputB; 423 | reg [N-1:0] data_outputA,data_outputB; 424 | reg [N-1:0] memory [(2**M)-1:0]; 425 | 426 | 427 | always @(posedge clock) 428 | if (ram_enable) begin 429 | if (write_enableA) begin 430 | memory[addressA] <= data_input; 431 | end 432 | data_outputA = memory[addressA]; 433 | data_outputB = memory[addressB]; 434 | end 435 | 436 | endmodule -------------------------------------------------------------------------------- /MLPv3.v: -------------------------------------------------------------------------------- 1 | `timescale 1ns/10ps 2 | `define EOF 32'hFFFF_FFFF 3 | 4 | module testb (); 5 | reg clk; 6 | reg reset; 7 | reg [15:0] address; 8 | reg [31:0] din; 9 | wire [31:0] dout; 10 | reg write; 11 | reg read; 12 | reg signed [7:0] s; 13 | 14 | reg signed [7:0] p; 15 | integer file, j; 16 | real f; integer st; 17 | 18 | MLP3 mlp (clk, reset, address, din, dout, write, read); 19 | 20 | always 21 | begin 22 | clk=1; #5; clk=0; #5; 23 | end 24 | 25 | initial begin 26 | 27 | //resetear el dispositivo 28 | reset=1; 29 | #19; 30 | reset=0; 31 | 32 | //escribir en el registro de control para activar el acceso a las memorias 33 | write=1; 34 | address=16'h0004; 35 | din=16'b001; 36 | #10 37 | 38 | //registro N 39 | address=16'h0010; 40 | din=36; 41 | #10 42 | 43 | //registro M 44 | address=16'h0014; 45 | din=11; 46 | #10 47 | 48 | //registro H 49 | address=16'h0018; 50 | din=26; 51 | #10 52 | 53 | //Escribir datos de entrada 54 | address=16'h1000; 55 | file=$fopen("Inputs.txt", "r"); 56 | st=$fscanf(file, "%f", f); 57 | j=0; 58 | while (j<=255 && st!=`EOF) begin 59 | //p=f/2; 60 | din=f/2; 61 | #10; 62 | st=$fscanf(file, "%f", f); 63 | j=j+1; 64 | address=address+1; 65 | end 66 | $fclose (file); 67 | 68 | //Escribir pesos capa oculta 69 | address=16'h8000; 70 | file=$fopen("InputWeights.txt", "r"); 71 | st=$fscanf(file, "%f", f); 72 | j=0; 73 | while (j<=2048 && st!=`EOF) begin 74 | din<=f*512;#10; 75 | st=$fscanf(file, "%f", f); 76 | j=j+1; 77 | address=address+1; 78 | end 79 | $fclose (file); 80 | 81 | //Escribir pesos capa de salida 82 | address=16'hA000; 83 | file=$fopen("InterWeights.txt", "r"); 84 | st=$fscanf(file, "%f", f); 85 | j=0; 86 | while (j<=2048 && st!=`EOF) begin 87 | din=f*512;#10; 88 | st=$fscanf(file, "%f", f); 89 | j=j+1; 90 | address=address+1; 91 | end 92 | $fclose (file); 93 | 94 | //Escribir LUT 95 | address=16'h4000; 96 | file=$fopen("tansig.txt", "r"); 97 | st=$fscanf(file, "%f", f); 98 | j=0; 99 | while (j<=4096 && st!=`EOF) begin 100 | din=f/2;#10; 101 | st=$fscanf(file, "%f", f); 102 | j=j+1; 103 | address=address+1; 104 | end 105 | $fclose (file); 106 | $display ("Memorias inicializadas"); 107 | 108 | //Una vez escritas las memorias se desactiva el acceso a las memorias y se inicia el procesado a través del registro de control 109 | address=16'h0004; 110 | din=16'b010; 111 | #10; 112 | write=0; 113 | 114 | //Mantener el registro de estado en lectura 115 | address=16'h0008; 116 | end 117 | 118 | //Cuando el bit 1 del registro de estado pase a 1 (fin del procesado), mostrar los resultados almacenados en la memoria de datos (salida) 119 | always @(posedge dout[0]) begin 120 | if (address==16'h0008) begin 121 | write<=1; 122 | address<=16'h0004; 123 | din<=16'b001; 124 | #10 125 | write<=0; 126 | address<=16'h1800; 127 | j=0; 128 | while (j<26) begin 129 | #10; 130 | s=dout; 131 | $display ("Ouput: %d", s); 132 | j=j+1; 133 | address<=address+1; 134 | end 135 | end 136 | end 137 | 138 | endmodule 139 | 140 | 141 | module MLP3 (input clk, input reset, input [15:0] address, input [31:0] din, output reg [31:0] dout, input write, input read); 142 | reg [15:0] control_reg; 143 | reg [7:0] N; 144 | reg [7:0] M; 145 | reg [7:0] H; 146 | wire [7:0]mem_dat_data_a; 147 | wire [15:0] status_out; 148 | reg mem_w_wr, mem_f_wr; 149 | wire mem_dat_en, meme_w_en, mem_F_en; 150 | wire [9:0] mem_dat_add_rd, mem_dat_add_wr; 151 | reg [9:0] mem_dat_add_wr_m; 152 | wire [7:0] mem_dat_data, mem_dat_data_f; 153 | reg [7:0] mem_dat_data_f_m; 154 | wire mem_dat_wr; 155 | reg mem_dat_wr_m; 156 | wire [11:0] mem_w_address, mem_w_address2, mem_F_address; 157 | reg [11:0] mem_F_address_m, mem_w_address_m; 158 | wire [15:0] mem_w_data, mem_w_data2; 159 | reg [7:0] mem_f_data_w; 160 | reg [15:0] mem_w_data_w; 161 | 162 | mlp_core3 core (clk, reset, control_reg, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, 163 | mem_dat_add_wr, mem_dat_wr, mem_w_address, mem_w_address2, meme_w_en, mem_w_data, mem_w_data2, 164 | mem_F_address, mem_F_en, status_out); 165 | 166 | RAM_dual_port ram_data (clk, mem_dat_en, mem_dat_wr_m, mem_dat_add_wr_m, mem_dat_add_rd, 167 | mem_dat_data_f_m, mem_dat_data_a, mem_dat_data); 168 | 169 | RAM_dual_port_12 ram_w (clk, meme_w_en, mem_w_wr, mem_w_address_m, mem_w_data_w, mem_w_data, mem_w_address2, mem_w_data2); 170 | 171 | RAM_single_port_2 ram_f (clk, mem_F_en, mem_f_wr, mem_F_address_m, mem_f_data_w,mem_dat_data_f); 172 | 173 | always @(posedge clk) 174 | if (write) 175 | case (address) 176 | 16'h0004: control_reg<=din [15:0]; 177 | 16'h0010: N<=din; 178 | 16'h0014: M<=din; 179 | 16'h0018: H<=din; 180 | endcase 181 | 182 | 183 | always @(*) begin 184 | case (address[15:12]) 185 | 4'h0: 186 | case (address [7:0]) 187 | 8'h04: dout=control_reg; 188 | 8'h08: dout=status_out; 189 | 8'h10: dout=N; 190 | 8'h14: dout=M; 191 | 8'h18: dout=H; 192 | endcase 193 | 4'h1: dout=mem_dat_data_a; 194 | 4'h4: dout=mem_dat_data_f; 195 | 4'h8: dout=mem_w_data; 196 | 4'hA: dout=mem_w_data; 197 | endcase 198 | end 199 | 200 | always @(*) begin 201 | if (address [15:12]==4'h1 && control_reg[0]) begin 202 | mem_dat_wr_m=write; 203 | mem_dat_data_f_m=din; 204 | if (address [11:10]==2'b00) 205 | mem_dat_add_wr_m={2'b00, address [7:0]}; 206 | else if (address [11:10]==2'b01) 207 | mem_dat_add_wr_m={2'b01, address [7:0]}; 208 | else 209 | mem_dat_add_wr_m={2'b10, address [7:0]}; 210 | end 211 | else begin 212 | mem_dat_wr_m=mem_dat_wr; 213 | mem_dat_data_f_m=mem_dat_data_f; 214 | mem_dat_add_wr_m=mem_dat_add_wr; 215 | end 216 | if (address [15:12]==4'h4 && control_reg[0]) begin 217 | mem_f_wr=write; 218 | mem_f_data_w=din; 219 | mem_F_address_m=address [11:0]; 220 | end 221 | else begin 222 | mem_f_wr=1'b0; 223 | mem_f_data_w=8'b0; 224 | mem_F_address_m=mem_F_address; 225 | end 226 | if (address [15]==1'b1 && control_reg[0]) begin 227 | mem_w_wr=write; 228 | mem_w_data_w=din; 229 | if (address [14:12]==0) 230 | mem_w_address_m={1'b0, address[10:0]}; 231 | else 232 | mem_w_address_m={1'b1, address[10:0]}; 233 | end 234 | else begin 235 | mem_w_wr=0; 236 | mem_w_data_w=12'b0; 237 | mem_w_address_m=mem_w_address; 238 | end 239 | end 240 | 241 | endmodule 242 | 243 | module mlp_core3 (clk, reset, control, N, M, H, mem_dat_en, mem_dat_add_rd, mem_dat_data, 244 | mem_dat_add_wr, mem_dat_wr, mem_w_address, mem_w_address2, meme_w_en, mem_w_data, mem_w_data2, 245 | mem_F_address, mem_F_en, status_r); 246 | input clk, reset; 247 | input [15:0] control; 248 | input [7:0] N, M, H; 249 | output mem_dat_en, meme_w_en, mem_F_en; 250 | output reg [9:0] mem_dat_add_rd, mem_dat_add_wr; 251 | reg [9:0] mem_dat_add_wr2; 252 | output reg [11:0] mem_w_address, mem_F_address, mem_w_address2; 253 | reg [11:0] mem_F_address2; 254 | input [7:0] mem_dat_data; 255 | output reg mem_dat_wr; 256 | input [15:0] mem_w_data, mem_w_data2; 257 | output reg [15:0] status_r; 258 | 259 | parameter data_in_m=10'h000; 260 | parameter data_a_m=10'h100; 261 | parameter data_out_m=10'h200; 262 | parameter data_a_m2=10'h101; 263 | parameter data_out_m2=10'h201; 264 | parameter iw_m=12'h000; 265 | parameter il_m=12'h800; 266 | 267 | reg signed [7:0] data; 268 | reg signed [15:0] weight, weight2; 269 | reg signed [23:0] mult, mult2; 270 | reg signed [31:0] suma, suma2; 271 | reg [7:0] ctrl_0, ctrl_1, ctrl_2, ctrl_3, ctrl_4, ctrl_5; 272 | reg [7:0] cont; reg [7:0] cont2; 273 | 274 | assign mem_dat_en=1; 275 | assign meme_w_en=1; 276 | assign mem_F_en=1; 277 | 278 | 279 | always @ (posedge clk) begin 280 | if (reset || control[2] || status_r[0]) begin 281 | ctrl_0<=0; ctrl_1<=0; ctrl_2<=0; cont<=1; 282 | ctrl_3<=0; ctrl_4<=0; ctrl_5<=0; cont2<=2; 283 | mem_dat_add_rd<=data_in_m; 284 | mem_dat_add_wr<=data_a_m; 285 | mem_dat_add_wr2<=data_a_m2; 286 | mem_w_address<=12'h000; 287 | mem_w_address2<=12'h000+N; 288 | end 289 | 290 | if (reset || control[2]) begin 291 | status_r<=0; 292 | end 293 | else begin 294 | 295 | if (status_r[0]==1 && control[1]==0) 296 | status_r[0]=0; 297 | 298 | else if (status_r[0]==0 && control[1]==1) begin 299 | ctrl_0[0]<=1; ctrl_1<=ctrl_0; ctrl_2<=ctrl_1; 300 | ctrl_3<=ctrl_2; ctrl_5<=ctrl_4; 301 | data<=mem_dat_data; 302 | weight<=mem_w_data; 303 | mult<=data*weight; 304 | weight2<=mem_w_data2; 305 | mult2<=data*weight2; 306 | 307 | if (cont==N && cont2>=M && ctrl_0[4]==0) begin 308 | mem_dat_add_rd<=data_a_m; 309 | mem_w_address<=il_m; 310 | mem_w_address2<=il_m+M; 311 | ctrl_0[3:1]<=3'b010; 312 | ctrl_0[4]<=1; 313 | if (cont2>M) 314 | ctrl_0[5]<=1; 315 | else 316 | ctrl_0[5]<=0; 317 | cont<=1; 318 | cont2<=2; 319 | end 320 | else if (cont==M && cont2>=H && ctrl_0[4]==1) begin 321 | ctrl_0[3:1]<=3'b100; 322 | cont<=0; 323 | if (cont2>H) 324 | ctrl_0[5]<=1; 325 | else 326 | ctrl_0[5]<=0; 327 | end 328 | else if (cont==N && ctrl_0[4]==0) begin 329 | ctrl_0[3:1]<=3'b001; 330 | mem_dat_add_rd<=data_in_m; 331 | mem_w_address<=mem_w_address+N+1; 332 | mem_w_address2<=mem_w_address2+N+1; 333 | cont<=1; 334 | cont2<=cont2+2; 335 | ctrl_0[5]<=0; 336 | end 337 | else if (cont==M && ctrl_0[4]==1) begin 338 | ctrl_0[3:1]<=3'b001; 339 | mem_dat_add_rd<=data_a_m; 340 | mem_w_address<=mem_w_address+M+1; 341 | mem_w_address2<=mem_w_address2+M+1; 342 | cont<=1; 343 | cont2<=cont2+2; 344 | ctrl_0[5]<=0; 345 | end 346 | else begin 347 | mem_dat_add_rd<=mem_dat_add_rd+1; 348 | mem_w_address<=mem_w_address+1; 349 | mem_w_address2<=mem_w_address2+1; 350 | cont<=cont+1; 351 | ctrl_0[3:1]<=3'b000; 352 | ctrl_0[5]<=0; 353 | end 354 | 355 | if (ctrl_3[3:1]!=3'b000) begin 356 | suma<=mult; 357 | suma2<=mult2; 358 | end 359 | else if (ctrl_2[0]) begin 360 | suma<=suma+mult; 361 | suma2<=suma2+mult2; 362 | end 363 | else begin 364 | suma<=0; 365 | suma2<=0; 366 | end 367 | 368 | if (ctrl_3[3:1]) begin 369 | if ((suma[30:17]!=0 && suma[31]==0) || ctrl_3[2]) 370 | mem_F_address<=12'h7FF; 371 | else if (suma[30:17]!=14'hFFFF && suma[31]) 372 | mem_F_address<=12'h800; 373 | else 374 | mem_F_address<={suma[31],suma[16:6]}; 375 | 376 | if ((suma2[30:17]!=0 && suma2[31]==0) || ctrl_3[2]) 377 | mem_F_address2<=12'h7FF; 378 | else if (suma2[30:17]!=14'hFFFF && suma2[31]) 379 | mem_F_address2<=12'h800; 380 | else 381 | mem_F_address2<={suma2[31],suma2[16:6]}; 382 | end 383 | 384 | if (ctrl_4[3:1]) begin 385 | mem_dat_wr<=1; 386 | if (ctrl_4[5] || ctrl_4[6]) 387 | ctrl_4<=ctrl_3; 388 | else begin 389 | ctrl_4[6]<=1; 390 | mem_F_address<=mem_F_address2; 391 | end 392 | end 393 | else begin 394 | mem_dat_wr<=0; 395 | ctrl_4<=ctrl_3; 396 | end 397 | 398 | if (ctrl_5[3:1]!=0 && ctrl_5[5]==0 && ctrl_5[6]==0) begin 399 | mem_dat_add_wr<=mem_dat_add_wr2; 400 | mem_dat_add_wr2<=mem_dat_add_wr; 401 | end 402 | else if (ctrl_5[1]) begin 403 | mem_dat_add_wr<=mem_dat_add_wr2+2; 404 | mem_dat_add_wr2<=mem_dat_add_wr+2; 405 | end 406 | else if (ctrl_5[2]) begin 407 | mem_dat_add_wr<=data_out_m; 408 | mem_dat_add_wr2<=data_out_m2; 409 | end 410 | 411 | if (ctrl_5[3] && (ctrl_5[5] || ctrl_5[6])) 412 | status_r[0]<=1; 413 | end 414 | else 415 | mem_w_address2<=12'h000+N; 416 | end 417 | end 418 | endmodule 419 | 420 | module RAM_dual_port_12 (clock,ram_enable, write_enable, address, data_input, data_output, address_b, data_output_b); 421 | parameter N=16; 422 | parameter M=12; 423 | input clock,ram_enable,write_enable; 424 | input [M-1:0] address, address_b; 425 | input [N-1:0] data_input; 426 | output [N-1:0] data_output, data_output_b; 427 | reg [N-1:0] data_output, data_output_b; 428 | reg [N-1:0] memory [(2**M)-1:0]; 429 | 430 | 431 | always @(posedge clock) 432 | if (ram_enable) begin 433 | if (write_enable) begin 434 | memory[address] <= data_input; 435 | end 436 | 437 | data_output = memory[address]; 438 | data_output_b = memory [address_b]; 439 | end 440 | endmodule 441 | 442 | module RAM_dual_port(clock,ram_enable,write_enableA,addressA,addressB,data_input,data_outputA,data_outputB); 443 | parameter N=8; 444 | parameter M=10; 445 | input clock,ram_enable,write_enableA; 446 | input [M-1:0] addressA,addressB; 447 | input [N-1:0] data_input; 448 | output [N-1:0] data_outputA,data_outputB; 449 | reg [N-1:0] data_outputA,data_outputB; 450 | reg [N-1:0] memory [(2**M)-1:0]; 451 | 452 | 453 | always @(posedge clock) 454 | if (ram_enable) begin 455 | if (write_enableA) begin 456 | memory[addressA] <= data_input; 457 | end 458 | data_outputA = memory[addressA]; 459 | data_outputB = memory[addressB]; 460 | end 461 | 462 | endmodule 463 | 464 | module RAM_single_port_2 (clock,ram_enable, write_enable,address, data_input, data_output); 465 | parameter N=8; 466 | parameter M=12; 467 | input clock,ram_enable,write_enable; 468 | input [M-1:0] address; 469 | input [N-1:0] data_input; 470 | output [N-1:0] data_output; 471 | reg [N-1:0] data_output; 472 | reg [N-1:0] memory [(2**M)-1:0]; 473 | 474 | always @(posedge clock) 475 | if (ram_enable) 476 | if (write_enable) 477 | memory[address] <= data_input; 478 | else 479 | data_output <= memory[address]; 480 | 481 | endmodule 482 | -------------------------------------------------------------------------------- /Outputs.txt: -------------------------------------------------------------------------------- 1 | -5.8351469e+02 -3.8645180e+02 2.3626803e+02 -9.0988613e+02 -2.8018027e+02 -9.0651894e+02 -3.2511728e+02 -4.7790258e+02 -4.1027244e+02 -5.0822016e+02 -1.1626831e+03 -9.3907560e+02 -8.1242317e+02 -1.0246805e+03 -5.9740757e+02 -1.6950329e+03 -2.3065752e+02 -1.0152220e+03 -8.3753201e+02 -6.5865661e+02 -9.3088761e+02 -1.5603920e+03 -2.5820301e+03 -1.6500627e+03 -1.1251171e+03 -8.8940458e+02 2 | -------------------------------------------------------------------------------- /OutputsTrunc.txt: -------------------------------------------------------------------------------- 1 | -1.2797191e+02 -1.2739074e+02 1.2177318e+02 -1.2799983e+02 -1.2482634e+02 -1.2799982e+02 -1.2641748e+02 -1.2785378e+02 -1.2757978e+02 -1.2790893e+02 -1.2800000e+02 -1.2799989e+02 -1.2799921e+02 -1.2799997e+02 -1.2797739e+02 -1.2800000e+02 -1.2121779e+02 -1.2799997e+02 -1.2799947e+02 -1.2799132e+02 -1.2799988e+02 -1.2800000e+02 -1.2800000e+02 -1.2800000e+02 -1.2799999e+02 -1.2799976e+02 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Verilog implementation of a multilayer perceptron I did a few years ago (source code comments in Spanish) 2 | -------------------------------------------------------------------------------- /tansig.txt: -------------------------------------------------------------------------------- 1 | 0.0000000e+00 2.4999968e-01 4.9999746e-01 7.4999142e-01 9.9997966e-01 1.2499603e+00 1.4999313e+00 1.7498910e+00 1.9998373e+00 2.2497683e+00 2.4996822e+00 2.7495770e+00 2.9994508e+00 3.2493018e+00 3.4991280e+00 3.7489275e+00 3.9986984e+00 4.2484389e+00 4.4981470e+00 4.7478208e+00 4.9974584e+00 5.2470580e+00 5.4966176e+00 5.7461353e+00 5.9956093e+00 6.2450377e+00 6.4944185e+00 6.7437499e+00 6.9930300e+00 7.2422569e+00 7.4914287e+00 7.7405436e+00 7.9895996e+00 8.2385949e+00 8.4875276e+00 8.7363958e+00 8.9851977e+00 9.2339314e+00 9.4825950e+00 9.7311867e+00 9.9797045e+00 1.0228147e+01 1.0476511e+01 1.0724797e+01 1.0973000e+01 1.1221121e+01 1.1469157e+01 1.1717106e+01 1.1964967e+01 1.2212737e+01 1.2460415e+01 1.2707998e+01 1.2955486e+01 1.3202875e+01 1.3450165e+01 1.3697354e+01 1.3944439e+01 1.4191419e+01 1.4438292e+01 1.4685057e+01 1.4931711e+01 1.5178252e+01 1.5424679e+01 1.5670991e+01 1.5917184e+01 1.6163258e+01 1.6409211e+01 1.6655040e+01 1.6900745e+01 1.7146323e+01 1.7391772e+01 1.7637092e+01 1.7882279e+01 1.8127332e+01 1.8372250e+01 1.8617031e+01 1.8861672e+01 1.9106173e+01 1.9350531e+01 1.9594745e+01 1.9838813e+01 2.0082734e+01 2.0326505e+01 2.0570124e+01 2.0813591e+01 2.1056903e+01 2.1300059e+01 2.1543057e+01 2.1785895e+01 2.2028572e+01 2.2271086e+01 2.2513435e+01 2.2755617e+01 2.2997632e+01 2.3239476e+01 2.3481150e+01 2.3722650e+01 2.3963975e+01 2.4205124e+01 2.4446094e+01 2.4686885e+01 2.4927495e+01 2.5167922e+01 2.5408164e+01 2.5648220e+01 2.5888088e+01 2.6127767e+01 2.6367254e+01 2.6606549e+01 2.6845650e+01 2.7084555e+01 2.7323263e+01 2.7561771e+01 2.7800080e+01 2.8038186e+01 2.8276088e+01 2.8513785e+01 2.8751276e+01 2.8988558e+01 2.9225630e+01 2.9462491e+01 2.9699139e+01 2.9935573e+01 3.0171791e+01 3.0407791e+01 3.0643573e+01 3.0879134e+01 3.1114473e+01 3.1349589e+01 3.1584480e+01 3.1819145e+01 3.2053582e+01 3.2287789e+01 3.2521766e+01 3.2755512e+01 3.2989023e+01 3.3222299e+01 3.3455340e+01 3.3688142e+01 3.3920705e+01 3.4153028e+01 3.4385108e+01 3.4616945e+01 3.4848537e+01 3.5079883e+01 3.5310982e+01 3.5541832e+01 3.5772431e+01 3.6002779e+01 3.6232874e+01 3.6462714e+01 3.6692299e+01 3.6921627e+01 3.7150697e+01 3.7379507e+01 3.7608057e+01 3.7836344e+01 3.8064368e+01 3.8292127e+01 3.8519620e+01 3.8746845e+01 3.8973803e+01 3.9200490e+01 3.9426906e+01 3.9653051e+01 3.9878921e+01 4.0104517e+01 4.0329837e+01 4.0554880e+01 4.0779645e+01 4.1004130e+01 4.1228334e+01 4.1452256e+01 4.1675895e+01 4.1899250e+01 4.2122320e+01 4.2345103e+01 4.2567598e+01 4.2789805e+01 4.3011721e+01 4.3233347e+01 4.3454680e+01 4.3675720e+01 4.3896465e+01 4.4116915e+01 4.4337068e+01 4.4556924e+01 4.4776481e+01 4.4995738e+01 4.5214694e+01 4.5433348e+01 4.5651700e+01 4.5869747e+01 4.6087489e+01 4.6304926e+01 4.6522055e+01 4.6738876e+01 4.6955388e+01 4.7171590e+01 4.7387481e+01 4.7603060e+01 4.7818327e+01 4.8033279e+01 4.8247916e+01 4.8462238e+01 4.8676243e+01 4.8889930e+01 4.9103299e+01 4.9316348e+01 4.9529076e+01 4.9741484e+01 4.9953569e+01 5.0165331e+01 5.0376769e+01 5.0587883e+01 5.0798671e+01 5.1009132e+01 5.1219266e+01 5.1429071e+01 5.1638548e+01 5.1847695e+01 5.2056511e+01 5.2264995e+01 5.2473148e+01 5.2680967e+01 5.2888453e+01 5.3095603e+01 5.3302419e+01 5.3508898e+01 5.3715041e+01 5.3920845e+01 5.4126312e+01 5.4331439e+01 5.4536227e+01 5.4740674e+01 5.4944779e+01 5.5148543e+01 5.5351964e+01 5.5555042e+01 5.5757775e+01 5.5960164e+01 5.6162208e+01 5.6363906e+01 5.6565257e+01 5.6766261e+01 5.6966917e+01 5.7167224e+01 5.7367182e+01 5.7566791e+01 5.7766049e+01 5.7964956e+01 5.8163511e+01 5.8361715e+01 5.8559566e+01 5.8757063e+01 5.8954207e+01 5.9150996e+01 5.9347431e+01 5.9543509e+01 5.9739232e+01 5.9934599e+01 6.0129608e+01 6.0324260e+01 6.0518554e+01 6.0712490e+01 6.0906066e+01 6.1099283e+01 6.1292140e+01 6.1484637e+01 6.1676772e+01 6.1868547e+01 6.2059960e+01 6.2251010e+01 6.2441698e+01 6.2632023e+01 6.2821985e+01 6.3011582e+01 6.3200816e+01 6.3389684e+01 6.3578188e+01 6.3766327e+01 6.3954099e+01 6.4141506e+01 6.4328546e+01 6.4515219e+01 6.4701525e+01 6.4887463e+01 6.5073034e+01 6.5258237e+01 6.5443071e+01 6.5627536e+01 6.5811632e+01 6.5995359e+01 6.6178716e+01 6.6361703e+01 6.6544321e+01 6.6726567e+01 6.6908443e+01 6.7089948e+01 6.7271081e+01 6.7451843e+01 6.7632234e+01 6.7812252e+01 6.7991899e+01 6.8171173e+01 6.8350074e+01 6.8528603e+01 6.8706758e+01 6.8884541e+01 6.9061950e+01 6.9238985e+01 6.9415647e+01 6.9591935e+01 6.9767850e+01 6.9943389e+01 7.0118555e+01 7.0293346e+01 7.0467763e+01 7.0641805e+01 7.0815472e+01 7.0988764e+01 7.1161682e+01 7.1334224e+01 7.1506391e+01 7.1678182e+01 7.1849599e+01 7.2020640e+01 7.2191305e+01 7.2361595e+01 7.2531509e+01 7.2701047e+01 7.2870210e+01 7.3038997e+01 7.3207408e+01 7.3375443e+01 7.3543103e+01 7.3710386e+01 7.3877294e+01 7.4043826e+01 7.4209982e+01 7.4375762e+01 7.4541166e+01 7.4706194e+01 7.4870847e+01 7.5035124e+01 7.5199025e+01 7.5362550e+01 7.5525700e+01 7.5688474e+01 7.5850872e+01 7.6012895e+01 7.6174543e+01 7.6335815e+01 7.6496712e+01 7.6657234e+01 7.6817381e+01 7.6977153e+01 7.7136549e+01 7.7295572e+01 7.7454219e+01 7.7612492e+01 7.7770390e+01 7.7927914e+01 7.8085064e+01 7.8241840e+01 7.8398242e+01 7.8554271e+01 7.8709925e+01 7.8865207e+01 7.9020115e+01 7.9174650e+01 7.9328811e+01 7.9482601e+01 7.9636017e+01 7.9789061e+01 7.9941733e+01 8.0094033e+01 8.0245962e+01 8.0397518e+01 8.0548703e+01 8.0699517e+01 8.0849960e+01 8.1000033e+01 8.1149734e+01 8.1299066e+01 8.1448027e+01 8.1596619e+01 8.1744841e+01 8.1892694e+01 8.2040178e+01 8.2187293e+01 8.2334039e+01 8.2480417e+01 8.2626428e+01 8.2772070e+01 8.2917345e+01 8.3062253e+01 8.3206794e+01 8.3350969e+01 8.3494777e+01 8.3638219e+01 8.3781296e+01 8.3924007e+01 8.4066353e+01 8.4208335e+01 8.4349952e+01 8.4491205e+01 8.4632094e+01 8.4772620e+01 8.4912783e+01 8.5052583e+01 8.5192021e+01 8.5331096e+01 8.5469810e+01 8.5608163e+01 8.5746155e+01 8.5883785e+01 8.6021056e+01 8.6157967e+01 8.6294518e+01 8.6430711e+01 8.6566544e+01 8.6702019e+01 8.6837136e+01 8.6971896e+01 8.7106298e+01 8.7240344e+01 8.7374033e+01 8.7507366e+01 8.7640343e+01 8.7772966e+01 8.7905233e+01 8.8037146e+01 8.8168706e+01 8.8299911e+01 8.8430764e+01 8.8561264e+01 8.8691412e+01 8.8821208e+01 8.8950652e+01 8.9079746e+01 8.9208489e+01 8.9336883e+01 8.9464926e+01 8.9592621e+01 8.9719967e+01 8.9846965e+01 8.9973615e+01 9.0099917e+01 9.0225873e+01 9.0351483e+01 9.0476746e+01 9.0601665e+01 9.0726238e+01 9.0850467e+01 9.0974352e+01 9.1097894e+01 9.1221092e+01 9.1343948e+01 9.1466462e+01 9.1588635e+01 9.1710466e+01 9.1831958e+01 9.1953109e+01 9.2073920e+01 9.2194393e+01 9.2314527e+01 9.2434323e+01 9.2553782e+01 9.2672903e+01 9.2791689e+01 9.2910138e+01 9.3028252e+01 9.3146031e+01 9.3263476e+01 9.3380587e+01 9.3497365e+01 9.3613810e+01 9.3729923e+01 9.3845704e+01 9.3961155e+01 9.4076274e+01 9.4191064e+01 9.4305524e+01 9.4419655e+01 9.4533457e+01 9.4646932e+01 9.4760080e+01 9.4872901e+01 9.4985395e+01 9.5097564e+01 9.5209408e+01 9.5320928e+01 9.5432123e+01 9.5542996e+01 9.5653545e+01 9.5763772e+01 9.5873678e+01 9.5983262e+01 9.6092526e+01 9.6201470e+01 9.6310094e+01 9.6418400e+01 9.6526388e+01 9.6634058e+01 9.6741410e+01 9.6848447e+01 9.6955167e+01 9.7061572e+01 9.7167663e+01 9.7273439e+01 9.7378902e+01 9.7484052e+01 9.7588889e+01 9.7693415e+01 9.7797630e+01 9.7901534e+01 9.8005128e+01 9.8108413e+01 9.8211388e+01 9.8314056e+01 9.8416416e+01 9.8518469e+01 9.8620216e+01 9.8721657e+01 9.8822793e+01 9.8923625e+01 9.9024152e+01 9.9124376e+01 9.9224297e+01 9.9323917e+01 9.9423234e+01 9.9522251e+01 9.9620968e+01 9.9719385e+01 9.9817502e+01 9.9915322e+01 1.0001284e+02 1.0011007e+02 1.0020700e+02 1.0030363e+02 1.0039996e+02 1.0049601e+02 1.0059175e+02 1.0068721e+02 1.0078237e+02 1.0087724e+02 1.0097182e+02 1.0106610e+02 1.0116010e+02 1.0125381e+02 1.0134722e+02 1.0144035e+02 1.0153319e+02 1.0162575e+02 1.0171801e+02 1.0180999e+02 1.0190169e+02 1.0199310e+02 1.0208423e+02 1.0217507e+02 1.0226563e+02 1.0235591e+02 1.0244591e+02 1.0253563e+02 1.0262506e+02 1.0271422e+02 1.0280309e+02 1.0289169e+02 1.0298001e+02 1.0306806e+02 1.0315583e+02 1.0324332e+02 1.0333053e+02 1.0341747e+02 1.0350414e+02 1.0359054e+02 1.0367666e+02 1.0376251e+02 1.0384809e+02 1.0393339e+02 1.0401843e+02 1.0410320e+02 1.0418770e+02 1.0427193e+02 1.0435589e+02 1.0443959e+02 1.0452302e+02 1.0460618e+02 1.0468908e+02 1.0477172e+02 1.0485409e+02 1.0493619e+02 1.0501804e+02 1.0509962e+02 1.0518094e+02 1.0526201e+02 1.0534281e+02 1.0542335e+02 1.0550363e+02 1.0558366e+02 1.0566342e+02 1.0574294e+02 1.0582219e+02 1.0590119e+02 1.0597993e+02 1.0605842e+02 1.0613666e+02 1.0621464e+02 1.0629238e+02 1.0636985e+02 1.0644708e+02 1.0652406e+02 1.0660079e+02 1.0667727e+02 1.0675350e+02 1.0682948e+02 1.0690522e+02 1.0698070e+02 1.0705595e+02 1.0713094e+02 1.0720569e+02 1.0728020e+02 1.0735447e+02 1.0742849e+02 1.0750227e+02 1.0757580e+02 1.0764910e+02 1.0772216e+02 1.0779497e+02 1.0786755e+02 1.0793989e+02 1.0801199e+02 1.0808385e+02 1.0815548e+02 1.0822687e+02 1.0829803e+02 1.0836895e+02 1.0843963e+02 1.0851009e+02 1.0858031e+02 1.0865029e+02 1.0872005e+02 1.0878957e+02 1.0885887e+02 1.0892793e+02 1.0899677e+02 1.0906538e+02 1.0913375e+02 1.0920191e+02 1.0926983e+02 1.0933753e+02 1.0940500e+02 1.0947225e+02 1.0953928e+02 1.0960608e+02 1.0967265e+02 1.0973901e+02 1.0980514e+02 1.0987105e+02 1.0993674e+02 1.1000221e+02 1.1006747e+02 1.1013250e+02 1.1019731e+02 1.1026191e+02 1.1032629e+02 1.1039045e+02 1.1045440e+02 1.1051813e+02 1.1058165e+02 1.1064496e+02 1.1070805e+02 1.1077092e+02 1.1083359e+02 1.1089604e+02 1.1095829e+02 1.1102032e+02 1.1108214e+02 1.1114376e+02 1.1120516e+02 1.1126636e+02 1.1132735e+02 1.1138813e+02 1.1144871e+02 1.1150908e+02 1.1156924e+02 1.1162920e+02 1.1168896e+02 1.1174852e+02 1.1180787e+02 1.1186702e+02 1.1192596e+02 1.1198471e+02 1.1204325e+02 1.1210160e+02 1.1215975e+02 1.1221770e+02 1.1227545e+02 1.1233300e+02 1.1239035e+02 1.1244751e+02 1.1250448e+02 1.1256124e+02 1.1261782e+02 1.1267420e+02 1.1273038e+02 1.1278638e+02 1.1284218e+02 1.1289778e+02 1.1295320e+02 1.1300843e+02 1.1306346e+02 1.1311831e+02 1.1317297e+02 1.1322744e+02 1.1328172e+02 1.1333581e+02 1.1338972e+02 1.1344344e+02 1.1349698e+02 1.1355033e+02 1.1360350e+02 1.1365648e+02 1.1370928e+02 1.1376189e+02 1.1381432e+02 1.1386658e+02 1.1391865e+02 1.1397054e+02 1.1402224e+02 1.1407377e+02 1.1412513e+02 1.1417630e+02 1.1422729e+02 1.1427811e+02 1.1432875e+02 1.1437921e+02 1.1442950e+02 1.1447961e+02 1.1452955e+02 1.1457931e+02 1.1462890e+02 1.1467832e+02 1.1472756e+02 1.1477663e+02 1.1482553e+02 1.1487426e+02 1.1492282e+02 1.1497121e+02 1.1501943e+02 1.1506748e+02 1.1511536e+02 1.1516307e+02 1.1521062e+02 1.1525800e+02 1.1530521e+02 1.1535226e+02 1.1539914e+02 1.1544586e+02 1.1549241e+02 1.1553880e+02 1.1558502e+02 1.1563109e+02 1.1567699e+02 1.1572273e+02 1.1576830e+02 1.1581372e+02 1.1585898e+02 1.1590407e+02 1.1594901e+02 1.1599379e+02 1.1603841e+02 1.1608287e+02 1.1612718e+02 1.1617133e+02 1.1621532e+02 1.1625916e+02 1.1630284e+02 1.1634637e+02 1.1638974e+02 1.1643296e+02 1.1647602e+02 1.1651894e+02 1.1656170e+02 1.1660431e+02 1.1664676e+02 1.1668907e+02 1.1673123e+02 1.1677323e+02 1.1681509e+02 1.1685680e+02 1.1689836e+02 1.1693977e+02 1.1698103e+02 1.1702215e+02 1.1706312e+02 1.1710394e+02 1.1714462e+02 1.1718515e+02 1.1722554e+02 1.1726579e+02 1.1730589e+02 1.1734584e+02 1.1738566e+02 1.1742533e+02 1.1746486e+02 1.1750425e+02 1.1754350e+02 1.1758260e+02 1.1762157e+02 1.1766040e+02 1.1769909e+02 1.1773764e+02 1.1777605e+02 1.1781432e+02 1.1785246e+02 1.1789046e+02 1.1792832e+02 1.1796605e+02 1.1800364e+02 1.1804109e+02 1.1807841e+02 1.1811560e+02 1.1815265e+02 1.1818957e+02 1.1822636e+02 1.1826302e+02 1.1829954e+02 1.1833593e+02 1.1837219e+02 1.1840832e+02 1.1844432e+02 1.1848019e+02 1.1851592e+02 1.1855154e+02 1.1858702e+02 1.1862237e+02 1.1865760e+02 1.1869269e+02 1.1872767e+02 1.1876251e+02 1.1879723e+02 1.1883182e+02 1.1886629e+02 1.1890063e+02 1.1893485e+02 1.1896895e+02 1.1900292e+02 1.1903677e+02 1.1907049e+02 1.1910410e+02 1.1913758e+02 1.1917094e+02 1.1920418e+02 1.1923729e+02 1.1927029e+02 1.1930317e+02 1.1933593e+02 1.1936857e+02 1.1940109e+02 1.1943349e+02 1.1946577e+02 1.1949794e+02 1.1952999e+02 1.1956192e+02 1.1959374e+02 1.1962544e+02 1.1965703e+02 1.1968850e+02 1.1971985e+02 1.1975109e+02 1.1978222e+02 1.1981323e+02 1.1984413e+02 1.1987492e+02 1.1990560e+02 1.1993616e+02 1.1996661e+02 1.1999695e+02 1.2002718e+02 1.2005730e+02 1.2008731e+02 1.2011721e+02 1.2014699e+02 1.2017668e+02 1.2020625e+02 1.2023571e+02 1.2026507e+02 1.2029431e+02 1.2032345e+02 1.2035249e+02 1.2038142e+02 1.2041024e+02 1.2043895e+02 1.2046756e+02 1.2049607e+02 1.2052447e+02 1.2055277e+02 1.2058096e+02 1.2060905e+02 1.2063703e+02 1.2066492e+02 1.2069270e+02 1.2072038e+02 1.2074795e+02 1.2077543e+02 1.2080280e+02 1.2083007e+02 1.2085725e+02 1.2088432e+02 1.2091129e+02 1.2093817e+02 1.2096494e+02 1.2099162e+02 1.2101820e+02 1.2104468e+02 1.2107106e+02 1.2109734e+02 1.2112353e+02 1.2114962e+02 1.2117562e+02 1.2120152e+02 1.2122732e+02 1.2125303e+02 1.2127864e+02 1.2130416e+02 1.2132959e+02 1.2135492e+02 1.2138015e+02 1.2140530e+02 1.2143035e+02 1.2145531e+02 1.2148017e+02 1.2150494e+02 1.2152963e+02 1.2155422e+02 1.2157872e+02 1.2160312e+02 1.2162744e+02 1.2165167e+02 1.2167581e+02 1.2169986e+02 1.2172382e+02 1.2174769e+02 1.2177147e+02 1.2179517e+02 1.2181877e+02 1.2184229e+02 1.2186572e+02 1.2188907e+02 1.2191232e+02 1.2193550e+02 1.2195858e+02 1.2198158e+02 1.2200449e+02 1.2202732e+02 1.2205007e+02 1.2207273e+02 1.2209530e+02 1.2211779e+02 1.2214020e+02 1.2216253e+02 1.2218477e+02 1.2220692e+02 1.2222900e+02 1.2225099e+02 1.2227291e+02 1.2229474e+02 1.2231649e+02 1.2233815e+02 1.2235974e+02 1.2238125e+02 1.2240267e+02 1.2242402e+02 1.2244529e+02 1.2246647e+02 1.2248758e+02 1.2250861e+02 1.2252956e+02 1.2255044e+02 1.2257123e+02 1.2259195e+02 1.2261259e+02 1.2263315e+02 1.2265364e+02 1.2267405e+02 1.2269438e+02 1.2271464e+02 1.2273482e+02 1.2275493e+02 1.2277496e+02 1.2279492e+02 1.2281480e+02 1.2283461e+02 1.2285434e+02 1.2287400e+02 1.2289358e+02 1.2291310e+02 1.2293254e+02 1.2295190e+02 1.2297120e+02 1.2299042e+02 1.2300957e+02 1.2302865e+02 1.2304765e+02 1.2306659e+02 1.2308545e+02 1.2310425e+02 1.2312297e+02 1.2314162e+02 1.2316021e+02 1.2317872e+02 1.2319716e+02 1.2321554e+02 1.2323384e+02 1.2325208e+02 1.2327025e+02 1.2328835e+02 1.2330638e+02 1.2332434e+02 1.2334224e+02 1.2336007e+02 1.2337783e+02 1.2339553e+02 1.2341316e+02 1.2343072e+02 1.2344822e+02 1.2346565e+02 1.2348302e+02 1.2350032e+02 1.2351755e+02 1.2353472e+02 1.2355183e+02 1.2356887e+02 1.2358585e+02 1.2360276e+02 1.2361961e+02 1.2363640e+02 1.2365312e+02 1.2366978e+02 1.2368638e+02 1.2370291e+02 1.2371939e+02 1.2373580e+02 1.2375215e+02 1.2376843e+02 1.2378466e+02 1.2380082e+02 1.2381693e+02 1.2383297e+02 1.2384895e+02 1.2386487e+02 1.2388074e+02 1.2389654e+02 1.2391228e+02 1.2392796e+02 1.2394359e+02 1.2395915e+02 1.2397466e+02 1.2399011e+02 1.2400550e+02 1.2402083e+02 1.2403610e+02 1.2405131e+02 1.2406647e+02 1.2408157e+02 1.2409662e+02 1.2411160e+02 1.2412653e+02 1.2414141e+02 1.2415622e+02 1.2417099e+02 1.2418569e+02 1.2420034e+02 1.2421494e+02 1.2422947e+02 1.2424396e+02 1.2425839e+02 1.2427276e+02 1.2428708e+02 1.2430135e+02 1.2431556e+02 1.2432972e+02 1.2434382e+02 1.2435788e+02 1.2437187e+02 1.2438582e+02 1.2439971e+02 1.2441355e+02 1.2442734e+02 1.2444107e+02 1.2445476e+02 1.2446839e+02 1.2448197e+02 1.2449549e+02 1.2450897e+02 1.2452240e+02 1.2453577e+02 1.2454909e+02 1.2456237e+02 1.2457559e+02 1.2458876e+02 1.2460188e+02 1.2461496e+02 1.2462798e+02 1.2464095e+02 1.2465388e+02 1.2466675e+02 1.2467958e+02 1.2469236e+02 1.2470509e+02 1.2471777e+02 1.2473040e+02 1.2474299e+02 1.2475552e+02 1.2476801e+02 1.2478045e+02 1.2479285e+02 1.2480520e+02 1.2481750e+02 1.2482975e+02 1.2484196e+02 1.2485412e+02 1.2486623e+02 1.2487830e+02 1.2489032e+02 1.2490230e+02 1.2491423e+02 1.2492612e+02 1.2493796e+02 1.2494975e+02 1.2496151e+02 1.2497321e+02 1.2498487e+02 1.2499649e+02 1.2500806e+02 1.2501959e+02 1.2503108e+02 1.2504252e+02 1.2505391e+02 1.2506527e+02 1.2507658e+02 1.2508785e+02 1.2509907e+02 1.2511025e+02 1.2512139e+02 1.2513249e+02 1.2514354e+02 1.2515456e+02 1.2516553e+02 1.2517646e+02 1.2518734e+02 1.2519819e+02 1.2520899e+02 1.2521976e+02 1.2523048e+02 1.2524116e+02 1.2525180e+02 1.2526240e+02 1.2527296e+02 1.2528348e+02 1.2529395e+02 1.2530439e+02 1.2531479e+02 1.2532515e+02 1.2533547e+02 1.2534575e+02 1.2535599e+02 1.2536619e+02 1.2537636e+02 1.2538648e+02 1.2539657e+02 1.2540661e+02 1.2541662e+02 1.2542659e+02 1.2543653e+02 1.2544642e+02 1.2545628e+02 1.2546610e+02 1.2547588e+02 1.2548562e+02 1.2549533e+02 1.2550500e+02 1.2551463e+02 1.2552423e+02 1.2553378e+02 1.2554331e+02 1.2555279e+02 1.2556224e+02 1.2557166e+02 1.2558104e+02 1.2559038e+02 1.2559968e+02 1.2560895e+02 1.2561819e+02 1.2562739e+02 1.2563655e+02 1.2564568e+02 1.2565478e+02 1.2566384e+02 1.2567286e+02 1.2568185e+02 1.2569081e+02 1.2569973e+02 1.2570862e+02 1.2571747e+02 1.2572629e+02 1.2573508e+02 1.2574383e+02 1.2575255e+02 1.2576123e+02 1.2576989e+02 1.2577850e+02 1.2578709e+02 1.2579564e+02 1.2580416e+02 1.2581265e+02 1.2582111e+02 1.2582953e+02 1.2583792e+02 1.2584628e+02 1.2585460e+02 1.2586290e+02 1.2587116e+02 1.2587939e+02 1.2588759e+02 1.2589576e+02 1.2590390e+02 1.2591200e+02 1.2592007e+02 1.2592812e+02 1.2593613e+02 1.2594411e+02 1.2595206e+02 1.2595998e+02 1.2596787e+02 1.2597573e+02 1.2598356e+02 1.2599136e+02 1.2599913e+02 1.2600687e+02 1.2601458e+02 1.2602226e+02 1.2602991e+02 1.2603754e+02 1.2604513e+02 1.2605269e+02 1.2606023e+02 1.2606773e+02 1.2607521e+02 1.2608266e+02 1.2609008e+02 1.2609747e+02 1.2610483e+02 1.2611216e+02 1.2611947e+02 1.2612675e+02 1.2613400e+02 1.2614122e+02 1.2614841e+02 1.2615558e+02 1.2616272e+02 1.2616983e+02 1.2617691e+02 1.2618397e+02 1.2619100e+02 1.2619800e+02 1.2620498e+02 1.2621193e+02 1.2621885e+02 1.2622575e+02 1.2623262e+02 1.2623946e+02 1.2624628e+02 1.2625307e+02 1.2625983e+02 1.2626657e+02 1.2627328e+02 1.2627997e+02 1.2628663e+02 1.2629327e+02 1.2629988e+02 1.2630646e+02 1.2631302e+02 1.2631955e+02 1.2632606e+02 1.2633254e+02 1.2633900e+02 1.2634544e+02 1.2635185e+02 1.2635823e+02 1.2636459e+02 1.2637093e+02 1.2637724e+02 1.2638352e+02 1.2638979e+02 1.2639602e+02 1.2640224e+02 1.2640843e+02 1.2641459e+02 1.2642074e+02 1.2642686e+02 1.2643295e+02 1.2643902e+02 1.2644507e+02 1.2645110e+02 1.2645710e+02 1.2646308e+02 1.2646904e+02 1.2647497e+02 1.2648088e+02 1.2648677e+02 1.2649263e+02 1.2649847e+02 1.2650429e+02 1.2651009e+02 1.2651587e+02 1.2652162e+02 1.2652735e+02 1.2653306e+02 1.2653874e+02 1.2654441e+02 1.2655005e+02 1.2655567e+02 1.2656127e+02 1.2656685e+02 1.2657240e+02 1.2657794e+02 1.2658345e+02 1.2658894e+02 1.2659442e+02 1.2659987e+02 1.2660529e+02 1.2661070e+02 1.2661609e+02 1.2662146e+02 1.2662680e+02 1.2663213e+02 1.2663743e+02 1.2664271e+02 1.2664798e+02 1.2665322e+02 1.2665844e+02 1.2666365e+02 1.2666883e+02 1.2667399e+02 1.2667914e+02 1.2668426e+02 1.2668936e+02 1.2669445e+02 1.2669951e+02 1.2670455e+02 1.2670958e+02 1.2671459e+02 1.2671957e+02 1.2672454e+02 1.2672949e+02 1.2673442e+02 1.2673933e+02 1.2674422e+02 1.2674909e+02 1.2675394e+02 1.2675878e+02 1.2676359e+02 1.2676839e+02 1.2677317e+02 1.2677793e+02 1.2678267e+02 1.2678739e+02 1.2679210e+02 1.2679678e+02 1.2680145e+02 1.2680610e+02 1.2681074e+02 1.2681535e+02 1.2681995e+02 1.2682453e+02 1.2682909e+02 1.2683363e+02 1.2683816e+02 1.2684267e+02 1.2684716e+02 1.2685164e+02 1.2685609e+02 1.2686053e+02 1.2686496e+02 1.2686936e+02 1.2687375e+02 1.2687812e+02 1.2688248e+02 1.2688681e+02 1.2689114e+02 1.2689544e+02 1.2689973e+02 1.2690400e+02 1.2690825e+02 1.2691249e+02 1.2691671e+02 1.2692092e+02 1.2692511e+02 1.2692928e+02 1.2693344e+02 1.2693758e+02 1.2694170e+02 1.2694581e+02 1.2694991e+02 1.2695398e+02 1.2695804e+02 1.2696209e+02 1.2696612e+02 1.2697014e+02 1.2697413e+02 1.2697812e+02 1.2698209e+02 1.2698604e+02 1.2698998e+02 1.2699390e+02 1.2699781e+02 1.2700170e+02 1.2700557e+02 1.2700944e+02 1.2701328e+02 1.2701711e+02 1.2702093e+02 1.2702473e+02 1.2702852e+02 1.2703230e+02 1.2703605e+02 1.2703980e+02 1.2704353e+02 1.2704724e+02 1.2705094e+02 1.2705463e+02 1.2705830e+02 1.2706196e+02 1.2706560e+02 1.2706923e+02 1.2707285e+02 1.2707645e+02 1.2708004e+02 1.2708361e+02 1.2708717e+02 1.2709072e+02 1.2709425e+02 1.2709777e+02 1.2710127e+02 1.2710477e+02 1.2710824e+02 1.2711171e+02 1.2711516e+02 1.2711860e+02 1.2712202e+02 1.2712543e+02 1.2712883e+02 1.2713222e+02 1.2713559e+02 1.2713895e+02 1.2714229e+02 1.2714562e+02 1.2714894e+02 1.2715225e+02 1.2715555e+02 1.2715883e+02 1.2716210e+02 1.2716535e+02 1.2716859e+02 1.2717183e+02 1.2717504e+02 1.2717825e+02 1.2718144e+02 1.2718462e+02 1.2718779e+02 1.2719095e+02 1.2719409e+02 1.2719723e+02 1.2720035e+02 1.2720345e+02 1.2720655e+02 1.2720963e+02 1.2721271e+02 1.2721577e+02 1.2721881e+02 1.2722185e+02 1.2722487e+02 1.2722789e+02 1.2723089e+02 1.2723388e+02 1.2723686e+02 1.2723982e+02 1.2724278e+02 1.2724572e+02 1.2724865e+02 1.2725157e+02 1.2725448e+02 1.2725738e+02 1.2726027e+02 1.2726314e+02 1.2726601e+02 1.2726886e+02 1.2727170e+02 1.2727453e+02 1.2727735e+02 1.2728016e+02 1.2728296e+02 1.2728575e+02 1.2728853e+02 1.2729129e+02 1.2729405e+02 1.2729679e+02 1.2729953e+02 1.2730225e+02 1.2730496e+02 1.2730767e+02 1.2731036e+02 1.2731304e+02 1.2731571e+02 1.2731837e+02 1.2732102e+02 1.2732366e+02 1.2732629e+02 1.2732891e+02 1.2733152e+02 1.2733412e+02 1.2733671e+02 1.2733929e+02 1.2734186e+02 1.2734442e+02 1.2734697e+02 1.2734951e+02 1.2735204e+02 1.2735456e+02 1.2735707e+02 1.2735957e+02 1.2736206e+02 1.2736454e+02 1.2736701e+02 1.2736947e+02 1.2737192e+02 1.2737437e+02 1.2737680e+02 1.2737922e+02 1.2738164e+02 1.2738404e+02 1.2738644e+02 1.2738882e+02 1.2739120e+02 1.2739357e+02 1.2739593e+02 1.2739828e+02 1.2740062e+02 1.2740295e+02 1.2740527e+02 1.2740758e+02 1.2740989e+02 1.2741218e+02 1.2741447e+02 1.2741675e+02 1.2741902e+02 1.2742128e+02 1.2742353e+02 1.2742577e+02 1.2742800e+02 1.2743023e+02 1.2743244e+02 1.2743465e+02 1.2743685e+02 1.2743904e+02 1.2744122e+02 1.2744340e+02 1.2744556e+02 1.2744772e+02 1.2744987e+02 1.2745201e+02 1.2745414e+02 1.2745626e+02 1.2745838e+02 1.2746049e+02 1.2746259e+02 1.2746468e+02 1.2746676e+02 1.2746883e+02 1.2747090e+02 1.2747296e+02 1.2747501e+02 1.2747705e+02 1.2747909e+02 1.2748111e+02 1.2748313e+02 1.2748514e+02 1.2748715e+02 1.2748914e+02 1.2749113e+02 1.2749311e+02 1.2749508e+02 1.2749705e+02 1.2749900e+02 1.2750095e+02 1.2750289e+02 1.2750483e+02 1.2750676e+02 1.2750868e+02 1.2751059e+02 1.2751249e+02 1.2751439e+02 1.2751628e+02 1.2751816e+02 1.2752004e+02 1.2752190e+02 1.2752376e+02 1.2752562e+02 1.2752746e+02 1.2752930e+02 1.2753113e+02 1.2753296e+02 1.2753478e+02 1.2753659e+02 1.2753839e+02 1.2754019e+02 1.2754198e+02 1.2754376e+02 1.2754553e+02 1.2754730e+02 1.2754906e+02 1.2755082e+02 1.2755257e+02 1.2755431e+02 1.2755604e+02 1.2755777e+02 1.2755949e+02 1.2756121e+02 1.2756291e+02 1.2756462e+02 1.2756631e+02 1.2756800e+02 1.2756968e+02 1.2757135e+02 1.2757302e+02 1.2757468e+02 1.2757634e+02 1.2757799e+02 1.2757963e+02 1.2758127e+02 1.2758290e+02 1.2758452e+02 1.2758614e+02 1.2758775e+02 1.2758935e+02 1.2759095e+02 1.2759254e+02 1.2759413e+02 1.2759571e+02 1.2759728e+02 1.2759885e+02 1.2760041e+02 1.2760197e+02 1.2760352e+02 1.2760506e+02 1.2760660e+02 1.2760813e+02 1.2760965e+02 1.2761117e+02 1.2761269e+02 1.2761420e+02 1.2761570e+02 1.2761719e+02 1.2761868e+02 1.2762017e+02 1.2762165e+02 1.2762312e+02 1.2762459e+02 1.2762605e+02 1.2762750e+02 1.2762895e+02 1.2763040e+02 1.2763184e+02 1.2763327e+02 1.2763470e+02 1.2763612e+02 1.2763754e+02 1.2763895e+02 1.2764035e+02 1.2764175e+02 1.2764315e+02 1.2764454e+02 1.2764592e+02 1.2764730e+02 1.2764867e+02 1.2765004e+02 1.2765140e+02 1.2765276e+02 1.2765411e+02 1.2765546e+02 1.2765680e+02 1.2765814e+02 1.2765947e+02 1.2766079e+02 1.2766211e+02 1.2766343e+02 1.2766474e+02 1.2766605e+02 1.2766735e+02 1.2766864e+02 1.2766993e+02 1.2767122e+02 1.2767250e+02 1.2767377e+02 1.2767504e+02 1.2767631e+02 1.2767757e+02 1.2767882e+02 1.2768007e+02 1.2768132e+02 1.2768256e+02 1.2768380e+02 1.2768503e+02 1.2768625e+02 1.2768748e+02 1.2768869e+02 1.2768991e+02 1.2769111e+02 1.2769232e+02 1.2769351e+02 1.2769471e+02 1.2769590e+02 1.2769708e+02 1.2769826e+02 1.2769943e+02 1.2770061e+02 1.2770177e+02 1.2770293e+02 1.2770409e+02 1.2770524e+02 1.2770639e+02 1.2770753e+02 1.2770867e+02 1.2770981e+02 1.2771094e+02 1.2771206e+02 1.2771318e+02 1.2771430e+02 1.2771541e+02 1.2771652e+02 1.2771763e+02 1.2771872e+02 1.2771982e+02 1.2772091e+02 1.2772200e+02 1.2772308e+02 1.2772416e+02 1.2772523e+02 1.2772630e+02 1.2772737e+02 1.2772843e+02 1.2772949e+02 1.2773054e+02 1.2773159e+02 1.2773264e+02 1.2773368e+02 1.2773472e+02 1.2773575e+02 1.2773678e+02 1.2773780e+02 1.2773882e+02 1.2773984e+02 1.2774085e+02 1.2774186e+02 1.2774287e+02 1.2774387e+02 1.2774487e+02 1.2774586e+02 1.2774685e+02 1.2774784e+02 1.2774882e+02 1.2774980e+02 1.2775077e+02 1.2775174e+02 1.2775271e+02 1.2775367e+02 1.2775463e+02 1.2775559e+02 1.2775654e+02 1.2775749e+02 1.2775843e+02 1.2775937e+02 1.2776031e+02 1.2776125e+02 1.2776218e+02 1.2776310e+02 1.2776402e+02 1.2776494e+02 1.2776586e+02 1.2776677e+02 1.2776768e+02 1.2776858e+02 1.2776949e+02 1.2777038e+02 1.2777128e+02 1.2777217e+02 1.2777306e+02 1.2777394e+02 1.2777482e+02 1.2777570e+02 1.2777657e+02 1.2777744e+02 1.2777831e+02 1.2777917e+02 1.2778003e+02 1.2778089e+02 1.2778174e+02 1.2778259e+02 1.2778344e+02 1.2778428e+02 1.2778512e+02 1.2778596e+02 1.2778679e+02 1.2778763e+02 1.2778845e+02 1.2778928e+02 1.2779010e+02 1.2779092e+02 1.2779173e+02 1.2779254e+02 1.2779335e+02 1.2779415e+02 1.2779496e+02 1.2779575e+02 1.2779655e+02 1.2779734e+02 1.2779813e+02 1.2779892e+02 1.2779970e+02 1.2780048e+02 1.2780126e+02 1.2780203e+02 1.2780280e+02 1.2780357e+02 1.2780434e+02 1.2780510e+02 1.2780586e+02 1.2780662e+02 1.2780737e+02 1.2780812e+02 1.2780887e+02 1.2780961e+02 1.2781035e+02 1.2781109e+02 1.2781183e+02 1.2781256e+02 1.2781329e+02 1.2781402e+02 1.2781474e+02 1.2781547e+02 1.2781618e+02 1.2781690e+02 1.2781761e+02 1.2781832e+02 1.2781903e+02 1.2781974e+02 1.2782044e+02 1.2782114e+02 1.2782184e+02 1.2782253e+02 1.2782322e+02 1.2782391e+02 1.2782460e+02 1.2782528e+02 1.2782596e+02 1.2782664e+02 1.2782731e+02 1.2782799e+02 1.2782866e+02 1.2782932e+02 1.2782999e+02 1.2783065e+02 1.2783131e+02 1.2783197e+02 1.2783262e+02 1.2783328e+02 1.2783392e+02 1.2783457e+02 1.2783522e+02 1.2783586e+02 1.2783650e+02 1.2783714e+02 1.2783777e+02 1.2783840e+02 1.2783903e+02 1.2783966e+02 1.2784028e+02 1.2784091e+02 1.2784153e+02 1.2784214e+02 1.2784276e+02 1.2784337e+02 1.2784398e+02 1.2784459e+02 1.2784519e+02 1.2784580e+02 1.2784640e+02 1.2784700e+02 1.2784759e+02 1.2784819e+02 1.2784878e+02 1.2784937e+02 1.2784995e+02 1.2785054e+02 1.2785112e+02 1.2785170e+02 1.2785228e+02 1.2785285e+02 1.2785343e+02 1.2785400e+02 1.2785457e+02 1.2785513e+02 1.2785570e+02 1.2785626e+02 1.2785682e+02 1.2785738e+02 1.2785794e+02 1.2785849e+02 1.2785904e+02 1.2785959e+02 1.2786014e+02 1.2786068e+02 1.2786122e+02 1.2786177e+02 1.2786230e+02 1.2786284e+02 1.2786337e+02 1.2786391e+02 1.2786444e+02 1.2786497e+02 1.2786549e+02 1.2786602e+02 1.2786654e+02 1.2786706e+02 1.2786758e+02 1.2786809e+02 1.2786861e+02 1.2786912e+02 1.2786963e+02 1.2787014e+02 1.2787064e+02 1.2787115e+02 1.2787165e+02 1.2787215e+02 1.2787265e+02 1.2787314e+02 1.2787364e+02 1.2787413e+02 1.2787462e+02 1.2787511e+02 1.2787560e+02 1.2787608e+02 1.2787656e+02 1.2787704e+02 1.2787752e+02 1.2787800e+02 1.2787848e+02 1.2787895e+02 1.2787942e+02 1.2787989e+02 1.2788036e+02 1.2788083e+02 1.2788129e+02 1.2788175e+02 1.2788221e+02 1.2788267e+02 1.2788313e+02 1.2788358e+02 1.2788404e+02 1.2788449e+02 1.2788494e+02 1.2788539e+02 1.2788584e+02 1.2788628e+02 1.2788672e+02 1.2788716e+02 1.2788760e+02 1.2788804e+02 1.2788848e+02 1.2788891e+02 1.2788935e+02 1.2788978e+02 1.2789021e+02 1.2789063e+02 1.2789106e+02 1.2789149e+02 1.2789191e+02 1.2789233e+02 1.2789275e+02 1.2789317e+02 1.2789358e+02 1.2789400e+02 1.2789441e+02 1.2789482e+02 1.2789523e+02 1.2789564e+02 1.2789605e+02 1.2789645e+02 1.2789686e+02 1.2789726e+02 1.2789766e+02 1.2789806e+02 1.2789845e+02 1.2789885e+02 1.2789924e+02 1.2789964e+02 1.2790003e+02 1.2790042e+02 1.2790081e+02 1.2790119e+02 1.2790158e+02 1.2790196e+02 1.2790234e+02 1.2790272e+02 1.2790310e+02 1.2790348e+02 1.2790386e+02 1.2790423e+02 1.2790460e+02 1.2790498e+02 1.2790535e+02 1.2790572e+02 1.2790608e+02 1.2790645e+02 1.2790681e+02 1.2790718e+02 1.2790754e+02 1.2790790e+02 1.2790826e+02 1.2790862e+02 1.2790897e+02 1.2790933e+02 1.2790968e+02 1.2791003e+02 1.2791038e+02 1.2791073e+02 1.2791108e+02 1.2791143e+02 1.2791177e+02 1.2791212e+02 1.2791246e+02 1.2791280e+02 1.2791314e+02 1.2791348e+02 1.2791381e+02 -1.2791415e+02 -1.2791381e+02 -1.2791348e+02 -1.2791314e+02 -1.2791280e+02 -1.2791246e+02 -1.2791212e+02 -1.2791177e+02 -1.2791143e+02 -1.2791108e+02 -1.2791073e+02 -1.2791038e+02 -1.2791003e+02 -1.2790968e+02 -1.2790933e+02 -1.2790897e+02 -1.2790862e+02 -1.2790826e+02 -1.2790790e+02 -1.2790754e+02 -1.2790718e+02 -1.2790681e+02 -1.2790645e+02 -1.2790608e+02 -1.2790572e+02 -1.2790535e+02 -1.2790498e+02 -1.2790460e+02 -1.2790423e+02 -1.2790386e+02 -1.2790348e+02 -1.2790310e+02 -1.2790272e+02 -1.2790234e+02 -1.2790196e+02 -1.2790158e+02 -1.2790119e+02 -1.2790081e+02 -1.2790042e+02 -1.2790003e+02 -1.2789964e+02 -1.2789924e+02 -1.2789885e+02 -1.2789845e+02 -1.2789806e+02 -1.2789766e+02 -1.2789726e+02 -1.2789686e+02 -1.2789645e+02 -1.2789605e+02 -1.2789564e+02 -1.2789523e+02 -1.2789482e+02 -1.2789441e+02 -1.2789400e+02 -1.2789358e+02 -1.2789317e+02 -1.2789275e+02 -1.2789233e+02 -1.2789191e+02 -1.2789149e+02 -1.2789106e+02 -1.2789063e+02 -1.2789021e+02 -1.2788978e+02 -1.2788935e+02 -1.2788891e+02 -1.2788848e+02 -1.2788804e+02 -1.2788760e+02 -1.2788716e+02 -1.2788672e+02 -1.2788628e+02 -1.2788584e+02 -1.2788539e+02 -1.2788494e+02 -1.2788449e+02 -1.2788404e+02 -1.2788358e+02 -1.2788313e+02 -1.2788267e+02 -1.2788221e+02 -1.2788175e+02 -1.2788129e+02 -1.2788083e+02 -1.2788036e+02 -1.2787989e+02 -1.2787942e+02 -1.2787895e+02 -1.2787848e+02 -1.2787800e+02 -1.2787752e+02 -1.2787704e+02 -1.2787656e+02 -1.2787608e+02 -1.2787560e+02 -1.2787511e+02 -1.2787462e+02 -1.2787413e+02 -1.2787364e+02 -1.2787314e+02 -1.2787265e+02 -1.2787215e+02 -1.2787165e+02 -1.2787115e+02 -1.2787064e+02 -1.2787014e+02 -1.2786963e+02 -1.2786912e+02 -1.2786861e+02 -1.2786809e+02 -1.2786758e+02 -1.2786706e+02 -1.2786654e+02 -1.2786602e+02 -1.2786549e+02 -1.2786497e+02 -1.2786444e+02 -1.2786391e+02 -1.2786337e+02 -1.2786284e+02 -1.2786230e+02 -1.2786177e+02 -1.2786122e+02 -1.2786068e+02 -1.2786014e+02 -1.2785959e+02 -1.2785904e+02 -1.2785849e+02 -1.2785794e+02 -1.2785738e+02 -1.2785682e+02 -1.2785626e+02 -1.2785570e+02 -1.2785513e+02 -1.2785457e+02 -1.2785400e+02 -1.2785343e+02 -1.2785285e+02 -1.2785228e+02 -1.2785170e+02 -1.2785112e+02 -1.2785054e+02 -1.2784995e+02 -1.2784937e+02 -1.2784878e+02 -1.2784819e+02 -1.2784759e+02 -1.2784700e+02 -1.2784640e+02 -1.2784580e+02 -1.2784519e+02 -1.2784459e+02 -1.2784398e+02 -1.2784337e+02 -1.2784276e+02 -1.2784214e+02 -1.2784153e+02 -1.2784091e+02 -1.2784028e+02 -1.2783966e+02 -1.2783903e+02 -1.2783840e+02 -1.2783777e+02 -1.2783714e+02 -1.2783650e+02 -1.2783586e+02 -1.2783522e+02 -1.2783457e+02 -1.2783392e+02 -1.2783328e+02 -1.2783262e+02 -1.2783197e+02 -1.2783131e+02 -1.2783065e+02 -1.2782999e+02 -1.2782932e+02 -1.2782866e+02 -1.2782799e+02 -1.2782731e+02 -1.2782664e+02 -1.2782596e+02 -1.2782528e+02 -1.2782460e+02 -1.2782391e+02 -1.2782322e+02 -1.2782253e+02 -1.2782184e+02 -1.2782114e+02 -1.2782044e+02 -1.2781974e+02 -1.2781903e+02 -1.2781832e+02 -1.2781761e+02 -1.2781690e+02 -1.2781618e+02 -1.2781547e+02 -1.2781474e+02 -1.2781402e+02 -1.2781329e+02 -1.2781256e+02 -1.2781183e+02 -1.2781109e+02 -1.2781035e+02 -1.2780961e+02 -1.2780887e+02 -1.2780812e+02 -1.2780737e+02 -1.2780662e+02 -1.2780586e+02 -1.2780510e+02 -1.2780434e+02 -1.2780357e+02 -1.2780280e+02 -1.2780203e+02 -1.2780126e+02 -1.2780048e+02 -1.2779970e+02 -1.2779892e+02 -1.2779813e+02 -1.2779734e+02 -1.2779655e+02 -1.2779575e+02 -1.2779496e+02 -1.2779415e+02 -1.2779335e+02 -1.2779254e+02 -1.2779173e+02 -1.2779092e+02 -1.2779010e+02 -1.2778928e+02 -1.2778845e+02 -1.2778763e+02 -1.2778679e+02 -1.2778596e+02 -1.2778512e+02 -1.2778428e+02 -1.2778344e+02 -1.2778259e+02 -1.2778174e+02 -1.2778089e+02 -1.2778003e+02 -1.2777917e+02 -1.2777831e+02 -1.2777744e+02 -1.2777657e+02 -1.2777570e+02 -1.2777482e+02 -1.2777394e+02 -1.2777306e+02 -1.2777217e+02 -1.2777128e+02 -1.2777038e+02 -1.2776949e+02 -1.2776858e+02 -1.2776768e+02 -1.2776677e+02 -1.2776586e+02 -1.2776494e+02 -1.2776402e+02 -1.2776310e+02 -1.2776218e+02 -1.2776125e+02 -1.2776031e+02 -1.2775937e+02 -1.2775843e+02 -1.2775749e+02 -1.2775654e+02 -1.2775559e+02 -1.2775463e+02 -1.2775367e+02 -1.2775271e+02 -1.2775174e+02 -1.2775077e+02 -1.2774980e+02 -1.2774882e+02 -1.2774784e+02 -1.2774685e+02 -1.2774586e+02 -1.2774487e+02 -1.2774387e+02 -1.2774287e+02 -1.2774186e+02 -1.2774085e+02 -1.2773984e+02 -1.2773882e+02 -1.2773780e+02 -1.2773678e+02 -1.2773575e+02 -1.2773472e+02 -1.2773368e+02 -1.2773264e+02 -1.2773159e+02 -1.2773054e+02 -1.2772949e+02 -1.2772843e+02 -1.2772737e+02 -1.2772630e+02 -1.2772523e+02 -1.2772416e+02 -1.2772308e+02 -1.2772200e+02 -1.2772091e+02 -1.2771982e+02 -1.2771872e+02 -1.2771763e+02 -1.2771652e+02 -1.2771541e+02 -1.2771430e+02 -1.2771318e+02 -1.2771206e+02 -1.2771094e+02 -1.2770981e+02 -1.2770867e+02 -1.2770753e+02 -1.2770639e+02 -1.2770524e+02 -1.2770409e+02 -1.2770293e+02 -1.2770177e+02 -1.2770061e+02 -1.2769943e+02 -1.2769826e+02 -1.2769708e+02 -1.2769590e+02 -1.2769471e+02 -1.2769351e+02 -1.2769232e+02 -1.2769111e+02 -1.2768991e+02 -1.2768869e+02 -1.2768748e+02 -1.2768625e+02 -1.2768503e+02 -1.2768380e+02 -1.2768256e+02 -1.2768132e+02 -1.2768007e+02 -1.2767882e+02 -1.2767757e+02 -1.2767631e+02 -1.2767504e+02 -1.2767377e+02 -1.2767250e+02 -1.2767122e+02 -1.2766993e+02 -1.2766864e+02 -1.2766735e+02 -1.2766605e+02 -1.2766474e+02 -1.2766343e+02 -1.2766211e+02 -1.2766079e+02 -1.2765947e+02 -1.2765814e+02 -1.2765680e+02 -1.2765546e+02 -1.2765411e+02 -1.2765276e+02 -1.2765140e+02 -1.2765004e+02 -1.2764867e+02 -1.2764730e+02 -1.2764592e+02 -1.2764454e+02 -1.2764315e+02 -1.2764175e+02 -1.2764035e+02 -1.2763895e+02 -1.2763754e+02 -1.2763612e+02 -1.2763470e+02 -1.2763327e+02 -1.2763184e+02 -1.2763040e+02 -1.2762895e+02 -1.2762750e+02 -1.2762605e+02 -1.2762459e+02 -1.2762312e+02 -1.2762165e+02 -1.2762017e+02 -1.2761868e+02 -1.2761719e+02 -1.2761570e+02 -1.2761420e+02 -1.2761269e+02 -1.2761117e+02 -1.2760965e+02 -1.2760813e+02 -1.2760660e+02 -1.2760506e+02 -1.2760352e+02 -1.2760197e+02 -1.2760041e+02 -1.2759885e+02 -1.2759728e+02 -1.2759571e+02 -1.2759413e+02 -1.2759254e+02 -1.2759095e+02 -1.2758935e+02 -1.2758775e+02 -1.2758614e+02 -1.2758452e+02 -1.2758290e+02 -1.2758127e+02 -1.2757963e+02 -1.2757799e+02 -1.2757634e+02 -1.2757468e+02 -1.2757302e+02 -1.2757135e+02 -1.2756968e+02 -1.2756800e+02 -1.2756631e+02 -1.2756462e+02 -1.2756291e+02 -1.2756121e+02 -1.2755949e+02 -1.2755777e+02 -1.2755604e+02 -1.2755431e+02 -1.2755257e+02 -1.2755082e+02 -1.2754906e+02 -1.2754730e+02 -1.2754553e+02 -1.2754376e+02 -1.2754198e+02 -1.2754019e+02 -1.2753839e+02 -1.2753659e+02 -1.2753478e+02 -1.2753296e+02 -1.2753113e+02 -1.2752930e+02 -1.2752746e+02 -1.2752562e+02 -1.2752376e+02 -1.2752190e+02 -1.2752004e+02 -1.2751816e+02 -1.2751628e+02 -1.2751439e+02 -1.2751249e+02 -1.2751059e+02 -1.2750868e+02 -1.2750676e+02 -1.2750483e+02 -1.2750289e+02 -1.2750095e+02 -1.2749900e+02 -1.2749705e+02 -1.2749508e+02 -1.2749311e+02 -1.2749113e+02 -1.2748914e+02 -1.2748715e+02 -1.2748514e+02 -1.2748313e+02 -1.2748111e+02 -1.2747909e+02 -1.2747705e+02 -1.2747501e+02 -1.2747296e+02 -1.2747090e+02 -1.2746883e+02 -1.2746676e+02 -1.2746468e+02 -1.2746259e+02 -1.2746049e+02 -1.2745838e+02 -1.2745626e+02 -1.2745414e+02 -1.2745201e+02 -1.2744987e+02 -1.2744772e+02 -1.2744556e+02 -1.2744340e+02 -1.2744122e+02 -1.2743904e+02 -1.2743685e+02 -1.2743465e+02 -1.2743244e+02 -1.2743023e+02 -1.2742800e+02 -1.2742577e+02 -1.2742353e+02 -1.2742128e+02 -1.2741902e+02 -1.2741675e+02 -1.2741447e+02 -1.2741218e+02 -1.2740989e+02 -1.2740758e+02 -1.2740527e+02 -1.2740295e+02 -1.2740062e+02 -1.2739828e+02 -1.2739593e+02 -1.2739357e+02 -1.2739120e+02 -1.2738882e+02 -1.2738644e+02 -1.2738404e+02 -1.2738164e+02 -1.2737922e+02 -1.2737680e+02 -1.2737437e+02 -1.2737192e+02 -1.2736947e+02 -1.2736701e+02 -1.2736454e+02 -1.2736206e+02 -1.2735957e+02 -1.2735707e+02 -1.2735456e+02 -1.2735204e+02 -1.2734951e+02 -1.2734697e+02 -1.2734442e+02 -1.2734186e+02 -1.2733929e+02 -1.2733671e+02 -1.2733412e+02 -1.2733152e+02 -1.2732891e+02 -1.2732629e+02 -1.2732366e+02 -1.2732102e+02 -1.2731837e+02 -1.2731571e+02 -1.2731304e+02 -1.2731036e+02 -1.2730767e+02 -1.2730496e+02 -1.2730225e+02 -1.2729953e+02 -1.2729679e+02 -1.2729405e+02 -1.2729129e+02 -1.2728853e+02 -1.2728575e+02 -1.2728296e+02 -1.2728016e+02 -1.2727735e+02 -1.2727453e+02 -1.2727170e+02 -1.2726886e+02 -1.2726601e+02 -1.2726314e+02 -1.2726027e+02 -1.2725738e+02 -1.2725448e+02 -1.2725157e+02 -1.2724865e+02 -1.2724572e+02 -1.2724278e+02 -1.2723982e+02 -1.2723686e+02 -1.2723388e+02 -1.2723089e+02 -1.2722789e+02 -1.2722487e+02 -1.2722185e+02 -1.2721881e+02 -1.2721577e+02 -1.2721271e+02 -1.2720963e+02 -1.2720655e+02 -1.2720345e+02 -1.2720035e+02 -1.2719723e+02 -1.2719409e+02 -1.2719095e+02 -1.2718779e+02 -1.2718462e+02 -1.2718144e+02 -1.2717825e+02 -1.2717504e+02 -1.2717183e+02 -1.2716859e+02 -1.2716535e+02 -1.2716210e+02 -1.2715883e+02 -1.2715555e+02 -1.2715225e+02 -1.2714894e+02 -1.2714562e+02 -1.2714229e+02 -1.2713895e+02 -1.2713559e+02 -1.2713222e+02 -1.2712883e+02 -1.2712543e+02 -1.2712202e+02 -1.2711860e+02 -1.2711516e+02 -1.2711171e+02 -1.2710824e+02 -1.2710477e+02 -1.2710127e+02 -1.2709777e+02 -1.2709425e+02 -1.2709072e+02 -1.2708717e+02 -1.2708361e+02 -1.2708004e+02 -1.2707645e+02 -1.2707285e+02 -1.2706923e+02 -1.2706560e+02 -1.2706196e+02 -1.2705830e+02 -1.2705463e+02 -1.2705094e+02 -1.2704724e+02 -1.2704353e+02 -1.2703980e+02 -1.2703605e+02 -1.2703230e+02 -1.2702852e+02 -1.2702473e+02 -1.2702093e+02 -1.2701711e+02 -1.2701328e+02 -1.2700944e+02 -1.2700557e+02 -1.2700170e+02 -1.2699781e+02 -1.2699390e+02 -1.2698998e+02 -1.2698604e+02 -1.2698209e+02 -1.2697812e+02 -1.2697413e+02 -1.2697014e+02 -1.2696612e+02 -1.2696209e+02 -1.2695804e+02 -1.2695398e+02 -1.2694991e+02 -1.2694581e+02 -1.2694170e+02 -1.2693758e+02 -1.2693344e+02 -1.2692928e+02 -1.2692511e+02 -1.2692092e+02 -1.2691671e+02 -1.2691249e+02 -1.2690825e+02 -1.2690400e+02 -1.2689973e+02 -1.2689544e+02 -1.2689114e+02 -1.2688681e+02 -1.2688248e+02 -1.2687812e+02 -1.2687375e+02 -1.2686936e+02 -1.2686496e+02 -1.2686053e+02 -1.2685609e+02 -1.2685164e+02 -1.2684716e+02 -1.2684267e+02 -1.2683816e+02 -1.2683363e+02 -1.2682909e+02 -1.2682453e+02 -1.2681995e+02 -1.2681535e+02 -1.2681074e+02 -1.2680610e+02 -1.2680145e+02 -1.2679678e+02 -1.2679210e+02 -1.2678739e+02 -1.2678267e+02 -1.2677793e+02 -1.2677317e+02 -1.2676839e+02 -1.2676359e+02 -1.2675878e+02 -1.2675394e+02 -1.2674909e+02 -1.2674422e+02 -1.2673933e+02 -1.2673442e+02 -1.2672949e+02 -1.2672454e+02 -1.2671957e+02 -1.2671459e+02 -1.2670958e+02 -1.2670455e+02 -1.2669951e+02 -1.2669445e+02 -1.2668936e+02 -1.2668426e+02 -1.2667914e+02 -1.2667399e+02 -1.2666883e+02 -1.2666365e+02 -1.2665844e+02 -1.2665322e+02 -1.2664798e+02 -1.2664271e+02 -1.2663743e+02 -1.2663213e+02 -1.2662680e+02 -1.2662146e+02 -1.2661609e+02 -1.2661070e+02 -1.2660529e+02 -1.2659987e+02 -1.2659442e+02 -1.2658894e+02 -1.2658345e+02 -1.2657794e+02 -1.2657240e+02 -1.2656685e+02 -1.2656127e+02 -1.2655567e+02 -1.2655005e+02 -1.2654441e+02 -1.2653874e+02 -1.2653306e+02 -1.2652735e+02 -1.2652162e+02 -1.2651587e+02 -1.2651009e+02 -1.2650429e+02 -1.2649847e+02 -1.2649263e+02 -1.2648677e+02 -1.2648088e+02 -1.2647497e+02 -1.2646904e+02 -1.2646308e+02 -1.2645710e+02 -1.2645110e+02 -1.2644507e+02 -1.2643902e+02 -1.2643295e+02 -1.2642686e+02 -1.2642074e+02 -1.2641459e+02 -1.2640843e+02 -1.2640224e+02 -1.2639602e+02 -1.2638979e+02 -1.2638352e+02 -1.2637724e+02 -1.2637093e+02 -1.2636459e+02 -1.2635823e+02 -1.2635185e+02 -1.2634544e+02 -1.2633900e+02 -1.2633254e+02 -1.2632606e+02 -1.2631955e+02 -1.2631302e+02 -1.2630646e+02 -1.2629988e+02 -1.2629327e+02 -1.2628663e+02 -1.2627997e+02 -1.2627328e+02 -1.2626657e+02 -1.2625983e+02 -1.2625307e+02 -1.2624628e+02 -1.2623946e+02 -1.2623262e+02 -1.2622575e+02 -1.2621885e+02 -1.2621193e+02 -1.2620498e+02 -1.2619800e+02 -1.2619100e+02 -1.2618397e+02 -1.2617691e+02 -1.2616983e+02 -1.2616272e+02 -1.2615558e+02 -1.2614841e+02 -1.2614122e+02 -1.2613400e+02 -1.2612675e+02 -1.2611947e+02 -1.2611216e+02 -1.2610483e+02 -1.2609747e+02 -1.2609008e+02 -1.2608266e+02 -1.2607521e+02 -1.2606773e+02 -1.2606023e+02 -1.2605269e+02 -1.2604513e+02 -1.2603754e+02 -1.2602991e+02 -1.2602226e+02 -1.2601458e+02 -1.2600687e+02 -1.2599913e+02 -1.2599136e+02 -1.2598356e+02 -1.2597573e+02 -1.2596787e+02 -1.2595998e+02 -1.2595206e+02 -1.2594411e+02 -1.2593613e+02 -1.2592812e+02 -1.2592007e+02 -1.2591200e+02 -1.2590390e+02 -1.2589576e+02 -1.2588759e+02 -1.2587939e+02 -1.2587116e+02 -1.2586290e+02 -1.2585460e+02 -1.2584628e+02 -1.2583792e+02 -1.2582953e+02 -1.2582111e+02 -1.2581265e+02 -1.2580416e+02 -1.2579564e+02 -1.2578709e+02 -1.2577850e+02 -1.2576989e+02 -1.2576123e+02 -1.2575255e+02 -1.2574383e+02 -1.2573508e+02 -1.2572629e+02 -1.2571747e+02 -1.2570862e+02 -1.2569973e+02 -1.2569081e+02 -1.2568185e+02 -1.2567286e+02 -1.2566384e+02 -1.2565478e+02 -1.2564568e+02 -1.2563655e+02 -1.2562739e+02 -1.2561819e+02 -1.2560895e+02 -1.2559968e+02 -1.2559038e+02 -1.2558104e+02 -1.2557166e+02 -1.2556224e+02 -1.2555279e+02 -1.2554331e+02 -1.2553378e+02 -1.2552423e+02 -1.2551463e+02 -1.2550500e+02 -1.2549533e+02 -1.2548562e+02 -1.2547588e+02 -1.2546610e+02 -1.2545628e+02 -1.2544642e+02 -1.2543653e+02 -1.2542659e+02 -1.2541662e+02 -1.2540661e+02 -1.2539657e+02 -1.2538648e+02 -1.2537636e+02 -1.2536619e+02 -1.2535599e+02 -1.2534575e+02 -1.2533547e+02 -1.2532515e+02 -1.2531479e+02 -1.2530439e+02 -1.2529395e+02 -1.2528348e+02 -1.2527296e+02 -1.2526240e+02 -1.2525180e+02 -1.2524116e+02 -1.2523048e+02 -1.2521976e+02 -1.2520899e+02 -1.2519819e+02 -1.2518734e+02 -1.2517646e+02 -1.2516553e+02 -1.2515456e+02 -1.2514354e+02 -1.2513249e+02 -1.2512139e+02 -1.2511025e+02 -1.2509907e+02 -1.2508785e+02 -1.2507658e+02 -1.2506527e+02 -1.2505391e+02 -1.2504252e+02 -1.2503108e+02 -1.2501959e+02 -1.2500806e+02 -1.2499649e+02 -1.2498487e+02 -1.2497321e+02 -1.2496151e+02 -1.2494975e+02 -1.2493796e+02 -1.2492612e+02 -1.2491423e+02 -1.2490230e+02 -1.2489032e+02 -1.2487830e+02 -1.2486623e+02 -1.2485412e+02 -1.2484196e+02 -1.2482975e+02 -1.2481750e+02 -1.2480520e+02 -1.2479285e+02 -1.2478045e+02 -1.2476801e+02 -1.2475552e+02 -1.2474299e+02 -1.2473040e+02 -1.2471777e+02 -1.2470509e+02 -1.2469236e+02 -1.2467958e+02 -1.2466675e+02 -1.2465388e+02 -1.2464095e+02 -1.2462798e+02 -1.2461496e+02 -1.2460188e+02 -1.2458876e+02 -1.2457559e+02 -1.2456237e+02 -1.2454909e+02 -1.2453577e+02 -1.2452240e+02 -1.2450897e+02 -1.2449549e+02 -1.2448197e+02 -1.2446839e+02 -1.2445476e+02 -1.2444107e+02 -1.2442734e+02 -1.2441355e+02 -1.2439971e+02 -1.2438582e+02 -1.2437187e+02 -1.2435788e+02 -1.2434382e+02 -1.2432972e+02 -1.2431556e+02 -1.2430135e+02 -1.2428708e+02 -1.2427276e+02 -1.2425839e+02 -1.2424396e+02 -1.2422947e+02 -1.2421494e+02 -1.2420034e+02 -1.2418569e+02 -1.2417099e+02 -1.2415622e+02 -1.2414141e+02 -1.2412653e+02 -1.2411160e+02 -1.2409662e+02 -1.2408157e+02 -1.2406647e+02 -1.2405131e+02 -1.2403610e+02 -1.2402083e+02 -1.2400550e+02 -1.2399011e+02 -1.2397466e+02 -1.2395915e+02 -1.2394359e+02 -1.2392796e+02 -1.2391228e+02 -1.2389654e+02 -1.2388074e+02 -1.2386487e+02 -1.2384895e+02 -1.2383297e+02 -1.2381693e+02 -1.2380082e+02 -1.2378466e+02 -1.2376843e+02 -1.2375215e+02 -1.2373580e+02 -1.2371939e+02 -1.2370291e+02 -1.2368638e+02 -1.2366978e+02 -1.2365312e+02 -1.2363640e+02 -1.2361961e+02 -1.2360276e+02 -1.2358585e+02 -1.2356887e+02 -1.2355183e+02 -1.2353472e+02 -1.2351755e+02 -1.2350032e+02 -1.2348302e+02 -1.2346565e+02 -1.2344822e+02 -1.2343072e+02 -1.2341316e+02 -1.2339553e+02 -1.2337783e+02 -1.2336007e+02 -1.2334224e+02 -1.2332434e+02 -1.2330638e+02 -1.2328835e+02 -1.2327025e+02 -1.2325208e+02 -1.2323384e+02 -1.2321554e+02 -1.2319716e+02 -1.2317872e+02 -1.2316021e+02 -1.2314162e+02 -1.2312297e+02 -1.2310425e+02 -1.2308545e+02 -1.2306659e+02 -1.2304765e+02 -1.2302865e+02 -1.2300957e+02 -1.2299042e+02 -1.2297120e+02 -1.2295190e+02 -1.2293254e+02 -1.2291310e+02 -1.2289358e+02 -1.2287400e+02 -1.2285434e+02 -1.2283461e+02 -1.2281480e+02 -1.2279492e+02 -1.2277496e+02 -1.2275493e+02 -1.2273482e+02 -1.2271464e+02 -1.2269438e+02 -1.2267405e+02 -1.2265364e+02 -1.2263315e+02 -1.2261259e+02 -1.2259195e+02 -1.2257123e+02 -1.2255044e+02 -1.2252956e+02 -1.2250861e+02 -1.2248758e+02 -1.2246647e+02 -1.2244529e+02 -1.2242402e+02 -1.2240267e+02 -1.2238125e+02 -1.2235974e+02 -1.2233815e+02 -1.2231649e+02 -1.2229474e+02 -1.2227291e+02 -1.2225099e+02 -1.2222900e+02 -1.2220692e+02 -1.2218477e+02 -1.2216253e+02 -1.2214020e+02 -1.2211779e+02 -1.2209530e+02 -1.2207273e+02 -1.2205007e+02 -1.2202732e+02 -1.2200449e+02 -1.2198158e+02 -1.2195858e+02 -1.2193550e+02 -1.2191232e+02 -1.2188907e+02 -1.2186572e+02 -1.2184229e+02 -1.2181877e+02 -1.2179517e+02 -1.2177147e+02 -1.2174769e+02 -1.2172382e+02 -1.2169986e+02 -1.2167581e+02 -1.2165167e+02 -1.2162744e+02 -1.2160312e+02 -1.2157872e+02 -1.2155422e+02 -1.2152963e+02 -1.2150494e+02 -1.2148017e+02 -1.2145531e+02 -1.2143035e+02 -1.2140530e+02 -1.2138015e+02 -1.2135492e+02 -1.2132959e+02 -1.2130416e+02 -1.2127864e+02 -1.2125303e+02 -1.2122732e+02 -1.2120152e+02 -1.2117562e+02 -1.2114962e+02 -1.2112353e+02 -1.2109734e+02 -1.2107106e+02 -1.2104468e+02 -1.2101820e+02 -1.2099162e+02 -1.2096494e+02 -1.2093817e+02 -1.2091129e+02 -1.2088432e+02 -1.2085725e+02 -1.2083007e+02 -1.2080280e+02 -1.2077543e+02 -1.2074795e+02 -1.2072038e+02 -1.2069270e+02 -1.2066492e+02 -1.2063703e+02 -1.2060905e+02 -1.2058096e+02 -1.2055277e+02 -1.2052447e+02 -1.2049607e+02 -1.2046756e+02 -1.2043895e+02 -1.2041024e+02 -1.2038142e+02 -1.2035249e+02 -1.2032345e+02 -1.2029431e+02 -1.2026507e+02 -1.2023571e+02 -1.2020625e+02 -1.2017668e+02 -1.2014699e+02 -1.2011721e+02 -1.2008731e+02 -1.2005730e+02 -1.2002718e+02 -1.1999695e+02 -1.1996661e+02 -1.1993616e+02 -1.1990560e+02 -1.1987492e+02 -1.1984413e+02 -1.1981323e+02 -1.1978222e+02 -1.1975109e+02 -1.1971985e+02 -1.1968850e+02 -1.1965703e+02 -1.1962544e+02 -1.1959374e+02 -1.1956192e+02 -1.1952999e+02 -1.1949794e+02 -1.1946577e+02 -1.1943349e+02 -1.1940109e+02 -1.1936857e+02 -1.1933593e+02 -1.1930317e+02 -1.1927029e+02 -1.1923729e+02 -1.1920418e+02 -1.1917094e+02 -1.1913758e+02 -1.1910410e+02 -1.1907049e+02 -1.1903677e+02 -1.1900292e+02 -1.1896895e+02 -1.1893485e+02 -1.1890063e+02 -1.1886629e+02 -1.1883182e+02 -1.1879723e+02 -1.1876251e+02 -1.1872767e+02 -1.1869269e+02 -1.1865760e+02 -1.1862237e+02 -1.1858702e+02 -1.1855154e+02 -1.1851592e+02 -1.1848019e+02 -1.1844432e+02 -1.1840832e+02 -1.1837219e+02 -1.1833593e+02 -1.1829954e+02 -1.1826302e+02 -1.1822636e+02 -1.1818957e+02 -1.1815265e+02 -1.1811560e+02 -1.1807841e+02 -1.1804109e+02 -1.1800364e+02 -1.1796605e+02 -1.1792832e+02 -1.1789046e+02 -1.1785246e+02 -1.1781432e+02 -1.1777605e+02 -1.1773764e+02 -1.1769909e+02 -1.1766040e+02 -1.1762157e+02 -1.1758260e+02 -1.1754350e+02 -1.1750425e+02 -1.1746486e+02 -1.1742533e+02 -1.1738566e+02 -1.1734584e+02 -1.1730589e+02 -1.1726579e+02 -1.1722554e+02 -1.1718515e+02 -1.1714462e+02 -1.1710394e+02 -1.1706312e+02 -1.1702215e+02 -1.1698103e+02 -1.1693977e+02 -1.1689836e+02 -1.1685680e+02 -1.1681509e+02 -1.1677323e+02 -1.1673123e+02 -1.1668907e+02 -1.1664676e+02 -1.1660431e+02 -1.1656170e+02 -1.1651894e+02 -1.1647602e+02 -1.1643296e+02 -1.1638974e+02 -1.1634637e+02 -1.1630284e+02 -1.1625916e+02 -1.1621532e+02 -1.1617133e+02 -1.1612718e+02 -1.1608287e+02 -1.1603841e+02 -1.1599379e+02 -1.1594901e+02 -1.1590407e+02 -1.1585898e+02 -1.1581372e+02 -1.1576830e+02 -1.1572273e+02 -1.1567699e+02 -1.1563109e+02 -1.1558502e+02 -1.1553880e+02 -1.1549241e+02 -1.1544586e+02 -1.1539914e+02 -1.1535226e+02 -1.1530521e+02 -1.1525800e+02 -1.1521062e+02 -1.1516307e+02 -1.1511536e+02 -1.1506748e+02 -1.1501943e+02 -1.1497121e+02 -1.1492282e+02 -1.1487426e+02 -1.1482553e+02 -1.1477663e+02 -1.1472756e+02 -1.1467832e+02 -1.1462890e+02 -1.1457931e+02 -1.1452955e+02 -1.1447961e+02 -1.1442950e+02 -1.1437921e+02 -1.1432875e+02 -1.1427811e+02 -1.1422729e+02 -1.1417630e+02 -1.1412513e+02 -1.1407377e+02 -1.1402224e+02 -1.1397054e+02 -1.1391865e+02 -1.1386658e+02 -1.1381432e+02 -1.1376189e+02 -1.1370928e+02 -1.1365648e+02 -1.1360350e+02 -1.1355033e+02 -1.1349698e+02 -1.1344344e+02 -1.1338972e+02 -1.1333581e+02 -1.1328172e+02 -1.1322744e+02 -1.1317297e+02 -1.1311831e+02 -1.1306346e+02 -1.1300843e+02 -1.1295320e+02 -1.1289778e+02 -1.1284218e+02 -1.1278638e+02 -1.1273038e+02 -1.1267420e+02 -1.1261782e+02 -1.1256124e+02 -1.1250448e+02 -1.1244751e+02 -1.1239035e+02 -1.1233300e+02 -1.1227545e+02 -1.1221770e+02 -1.1215975e+02 -1.1210160e+02 -1.1204325e+02 -1.1198471e+02 -1.1192596e+02 -1.1186702e+02 -1.1180787e+02 -1.1174852e+02 -1.1168896e+02 -1.1162920e+02 -1.1156924e+02 -1.1150908e+02 -1.1144871e+02 -1.1138813e+02 -1.1132735e+02 -1.1126636e+02 -1.1120516e+02 -1.1114376e+02 -1.1108214e+02 -1.1102032e+02 -1.1095829e+02 -1.1089604e+02 -1.1083359e+02 -1.1077092e+02 -1.1070805e+02 -1.1064496e+02 -1.1058165e+02 -1.1051813e+02 -1.1045440e+02 -1.1039045e+02 -1.1032629e+02 -1.1026191e+02 -1.1019731e+02 -1.1013250e+02 -1.1006747e+02 -1.1000221e+02 -1.0993674e+02 -1.0987105e+02 -1.0980514e+02 -1.0973901e+02 -1.0967265e+02 -1.0960608e+02 -1.0953928e+02 -1.0947225e+02 -1.0940500e+02 -1.0933753e+02 -1.0926983e+02 -1.0920191e+02 -1.0913375e+02 -1.0906538e+02 -1.0899677e+02 -1.0892793e+02 -1.0885887e+02 -1.0878957e+02 -1.0872005e+02 -1.0865029e+02 -1.0858031e+02 -1.0851009e+02 -1.0843963e+02 -1.0836895e+02 -1.0829803e+02 -1.0822687e+02 -1.0815548e+02 -1.0808385e+02 -1.0801199e+02 -1.0793989e+02 -1.0786755e+02 -1.0779497e+02 -1.0772216e+02 -1.0764910e+02 -1.0757580e+02 -1.0750227e+02 -1.0742849e+02 -1.0735447e+02 -1.0728020e+02 -1.0720569e+02 -1.0713094e+02 -1.0705595e+02 -1.0698070e+02 -1.0690522e+02 -1.0682948e+02 -1.0675350e+02 -1.0667727e+02 -1.0660079e+02 -1.0652406e+02 -1.0644708e+02 -1.0636985e+02 -1.0629238e+02 -1.0621464e+02 -1.0613666e+02 -1.0605842e+02 -1.0597993e+02 -1.0590119e+02 -1.0582219e+02 -1.0574294e+02 -1.0566342e+02 -1.0558366e+02 -1.0550363e+02 -1.0542335e+02 -1.0534281e+02 -1.0526201e+02 -1.0518094e+02 -1.0509962e+02 -1.0501804e+02 -1.0493619e+02 -1.0485409e+02 -1.0477172e+02 -1.0468908e+02 -1.0460618e+02 -1.0452302e+02 -1.0443959e+02 -1.0435589e+02 -1.0427193e+02 -1.0418770e+02 -1.0410320e+02 -1.0401843e+02 -1.0393339e+02 -1.0384809e+02 -1.0376251e+02 -1.0367666e+02 -1.0359054e+02 -1.0350414e+02 -1.0341747e+02 -1.0333053e+02 -1.0324332e+02 -1.0315583e+02 -1.0306806e+02 -1.0298001e+02 -1.0289169e+02 -1.0280309e+02 -1.0271422e+02 -1.0262506e+02 -1.0253563e+02 -1.0244591e+02 -1.0235591e+02 -1.0226563e+02 -1.0217507e+02 -1.0208423e+02 -1.0199310e+02 -1.0190169e+02 -1.0180999e+02 -1.0171801e+02 -1.0162575e+02 -1.0153319e+02 -1.0144035e+02 -1.0134722e+02 -1.0125381e+02 -1.0116010e+02 -1.0106610e+02 -1.0097182e+02 -1.0087724e+02 -1.0078237e+02 -1.0068721e+02 -1.0059175e+02 -1.0049601e+02 -1.0039996e+02 -1.0030363e+02 -1.0020700e+02 -1.0011007e+02 -1.0001284e+02 -9.9915322e+01 -9.9817502e+01 -9.9719385e+01 -9.9620968e+01 -9.9522251e+01 -9.9423234e+01 -9.9323917e+01 -9.9224297e+01 -9.9124376e+01 -9.9024152e+01 -9.8923625e+01 -9.8822793e+01 -9.8721657e+01 -9.8620216e+01 -9.8518469e+01 -9.8416416e+01 -9.8314056e+01 -9.8211388e+01 -9.8108413e+01 -9.8005128e+01 -9.7901534e+01 -9.7797630e+01 -9.7693415e+01 -9.7588889e+01 -9.7484052e+01 -9.7378902e+01 -9.7273439e+01 -9.7167663e+01 -9.7061572e+01 -9.6955167e+01 -9.6848447e+01 -9.6741410e+01 -9.6634058e+01 -9.6526388e+01 -9.6418400e+01 -9.6310094e+01 -9.6201470e+01 -9.6092526e+01 -9.5983262e+01 -9.5873678e+01 -9.5763772e+01 -9.5653545e+01 -9.5542996e+01 -9.5432123e+01 -9.5320928e+01 -9.5209408e+01 -9.5097564e+01 -9.4985395e+01 -9.4872901e+01 -9.4760080e+01 -9.4646932e+01 -9.4533457e+01 -9.4419655e+01 -9.4305524e+01 -9.4191064e+01 -9.4076274e+01 -9.3961155e+01 -9.3845704e+01 -9.3729923e+01 -9.3613810e+01 -9.3497365e+01 -9.3380587e+01 -9.3263476e+01 -9.3146031e+01 -9.3028252e+01 -9.2910138e+01 -9.2791689e+01 -9.2672903e+01 -9.2553782e+01 -9.2434323e+01 -9.2314527e+01 -9.2194393e+01 -9.2073920e+01 -9.1953109e+01 -9.1831958e+01 -9.1710466e+01 -9.1588635e+01 -9.1466462e+01 -9.1343948e+01 -9.1221092e+01 -9.1097894e+01 -9.0974352e+01 -9.0850467e+01 -9.0726238e+01 -9.0601665e+01 -9.0476746e+01 -9.0351483e+01 -9.0225873e+01 -9.0099917e+01 -8.9973615e+01 -8.9846965e+01 -8.9719967e+01 -8.9592621e+01 -8.9464926e+01 -8.9336883e+01 -8.9208489e+01 -8.9079746e+01 -8.8950652e+01 -8.8821208e+01 -8.8691412e+01 -8.8561264e+01 -8.8430764e+01 -8.8299911e+01 -8.8168706e+01 -8.8037146e+01 -8.7905233e+01 -8.7772966e+01 -8.7640343e+01 -8.7507366e+01 -8.7374033e+01 -8.7240344e+01 -8.7106298e+01 -8.6971896e+01 -8.6837136e+01 -8.6702019e+01 -8.6566544e+01 -8.6430711e+01 -8.6294518e+01 -8.6157967e+01 -8.6021056e+01 -8.5883785e+01 -8.5746155e+01 -8.5608163e+01 -8.5469810e+01 -8.5331096e+01 -8.5192021e+01 -8.5052583e+01 -8.4912783e+01 -8.4772620e+01 -8.4632094e+01 -8.4491205e+01 -8.4349952e+01 -8.4208335e+01 -8.4066353e+01 -8.3924007e+01 -8.3781296e+01 -8.3638219e+01 -8.3494777e+01 -8.3350969e+01 -8.3206794e+01 -8.3062253e+01 -8.2917345e+01 -8.2772070e+01 -8.2626428e+01 -8.2480417e+01 -8.2334039e+01 -8.2187293e+01 -8.2040178e+01 -8.1892694e+01 -8.1744841e+01 -8.1596619e+01 -8.1448027e+01 -8.1299066e+01 -8.1149734e+01 -8.1000033e+01 -8.0849960e+01 -8.0699517e+01 -8.0548703e+01 -8.0397518e+01 -8.0245962e+01 -8.0094033e+01 -7.9941733e+01 -7.9789061e+01 -7.9636017e+01 -7.9482601e+01 -7.9328811e+01 -7.9174650e+01 -7.9020115e+01 -7.8865207e+01 -7.8709925e+01 -7.8554271e+01 -7.8398242e+01 -7.8241840e+01 -7.8085064e+01 -7.7927914e+01 -7.7770390e+01 -7.7612492e+01 -7.7454219e+01 -7.7295572e+01 -7.7136549e+01 -7.6977153e+01 -7.6817381e+01 -7.6657234e+01 -7.6496712e+01 -7.6335815e+01 -7.6174543e+01 -7.6012895e+01 -7.5850872e+01 -7.5688474e+01 -7.5525700e+01 -7.5362550e+01 -7.5199025e+01 -7.5035124e+01 -7.4870847e+01 -7.4706194e+01 -7.4541166e+01 -7.4375762e+01 -7.4209982e+01 -7.4043826e+01 -7.3877294e+01 -7.3710386e+01 -7.3543103e+01 -7.3375443e+01 -7.3207408e+01 -7.3038997e+01 -7.2870210e+01 -7.2701047e+01 -7.2531509e+01 -7.2361595e+01 -7.2191305e+01 -7.2020640e+01 -7.1849599e+01 -7.1678182e+01 -7.1506391e+01 -7.1334224e+01 -7.1161682e+01 -7.0988764e+01 -7.0815472e+01 -7.0641805e+01 -7.0467763e+01 -7.0293346e+01 -7.0118555e+01 -6.9943389e+01 -6.9767850e+01 -6.9591935e+01 -6.9415647e+01 -6.9238985e+01 -6.9061950e+01 -6.8884541e+01 -6.8706758e+01 -6.8528603e+01 -6.8350074e+01 -6.8171173e+01 -6.7991899e+01 -6.7812252e+01 -6.7632234e+01 -6.7451843e+01 -6.7271081e+01 -6.7089948e+01 -6.6908443e+01 -6.6726567e+01 -6.6544321e+01 -6.6361703e+01 -6.6178716e+01 -6.5995359e+01 -6.5811632e+01 -6.5627536e+01 -6.5443071e+01 -6.5258237e+01 -6.5073034e+01 -6.4887463e+01 -6.4701525e+01 -6.4515219e+01 -6.4328546e+01 -6.4141506e+01 -6.3954099e+01 -6.3766327e+01 -6.3578188e+01 -6.3389684e+01 -6.3200816e+01 -6.3011582e+01 -6.2821985e+01 -6.2632023e+01 -6.2441698e+01 -6.2251010e+01 -6.2059960e+01 -6.1868547e+01 -6.1676772e+01 -6.1484637e+01 -6.1292140e+01 -6.1099283e+01 -6.0906066e+01 -6.0712490e+01 -6.0518554e+01 -6.0324260e+01 -6.0129608e+01 -5.9934599e+01 -5.9739232e+01 -5.9543509e+01 -5.9347431e+01 -5.9150996e+01 -5.8954207e+01 -5.8757063e+01 -5.8559566e+01 -5.8361715e+01 -5.8163511e+01 -5.7964956e+01 -5.7766049e+01 -5.7566791e+01 -5.7367182e+01 -5.7167224e+01 -5.6966917e+01 -5.6766261e+01 -5.6565257e+01 -5.6363906e+01 -5.6162208e+01 -5.5960164e+01 -5.5757775e+01 -5.5555042e+01 -5.5351964e+01 -5.5148543e+01 -5.4944779e+01 -5.4740674e+01 -5.4536227e+01 -5.4331439e+01 -5.4126312e+01 -5.3920845e+01 -5.3715041e+01 -5.3508898e+01 -5.3302419e+01 -5.3095603e+01 -5.2888453e+01 -5.2680967e+01 -5.2473148e+01 -5.2264995e+01 -5.2056511e+01 -5.1847695e+01 -5.1638548e+01 -5.1429071e+01 -5.1219266e+01 -5.1009132e+01 -5.0798671e+01 -5.0587883e+01 -5.0376769e+01 -5.0165331e+01 -4.9953569e+01 -4.9741484e+01 -4.9529076e+01 -4.9316348e+01 -4.9103299e+01 -4.8889930e+01 -4.8676243e+01 -4.8462238e+01 -4.8247916e+01 -4.8033279e+01 -4.7818327e+01 -4.7603060e+01 -4.7387481e+01 -4.7171590e+01 -4.6955388e+01 -4.6738876e+01 -4.6522055e+01 -4.6304926e+01 -4.6087489e+01 -4.5869747e+01 -4.5651700e+01 -4.5433348e+01 -4.5214694e+01 -4.4995738e+01 -4.4776481e+01 -4.4556924e+01 -4.4337068e+01 -4.4116915e+01 -4.3896465e+01 -4.3675720e+01 -4.3454680e+01 -4.3233347e+01 -4.3011721e+01 -4.2789805e+01 -4.2567598e+01 -4.2345103e+01 -4.2122320e+01 -4.1899250e+01 -4.1675895e+01 -4.1452256e+01 -4.1228334e+01 -4.1004130e+01 -4.0779645e+01 -4.0554880e+01 -4.0329837e+01 -4.0104517e+01 -3.9878921e+01 -3.9653051e+01 -3.9426906e+01 -3.9200490e+01 -3.8973803e+01 -3.8746845e+01 -3.8519620e+01 -3.8292127e+01 -3.8064368e+01 -3.7836344e+01 -3.7608057e+01 -3.7379507e+01 -3.7150697e+01 -3.6921627e+01 -3.6692299e+01 -3.6462714e+01 -3.6232874e+01 -3.6002779e+01 -3.5772431e+01 -3.5541832e+01 -3.5310982e+01 -3.5079883e+01 -3.4848537e+01 -3.4616945e+01 -3.4385108e+01 -3.4153028e+01 -3.3920705e+01 -3.3688142e+01 -3.3455340e+01 -3.3222299e+01 -3.2989023e+01 -3.2755512e+01 -3.2521766e+01 -3.2287789e+01 -3.2053582e+01 -3.1819145e+01 -3.1584480e+01 -3.1349589e+01 -3.1114473e+01 -3.0879134e+01 -3.0643573e+01 -3.0407791e+01 -3.0171791e+01 -2.9935573e+01 -2.9699139e+01 -2.9462491e+01 -2.9225630e+01 -2.8988558e+01 -2.8751276e+01 -2.8513785e+01 -2.8276088e+01 -2.8038186e+01 -2.7800080e+01 -2.7561771e+01 -2.7323263e+01 -2.7084555e+01 -2.6845650e+01 -2.6606549e+01 -2.6367254e+01 -2.6127767e+01 -2.5888088e+01 -2.5648220e+01 -2.5408164e+01 -2.5167922e+01 -2.4927495e+01 -2.4686885e+01 -2.4446094e+01 -2.4205124e+01 -2.3963975e+01 -2.3722650e+01 -2.3481150e+01 -2.3239476e+01 -2.2997632e+01 -2.2755617e+01 -2.2513435e+01 -2.2271086e+01 -2.2028572e+01 -2.1785895e+01 -2.1543057e+01 -2.1300059e+01 -2.1056903e+01 -2.0813591e+01 -2.0570124e+01 -2.0326505e+01 -2.0082734e+01 -1.9838813e+01 -1.9594745e+01 -1.9350531e+01 -1.9106173e+01 -1.8861672e+01 -1.8617031e+01 -1.8372250e+01 -1.8127332e+01 -1.7882279e+01 -1.7637092e+01 -1.7391772e+01 -1.7146323e+01 -1.6900745e+01 -1.6655040e+01 -1.6409211e+01 -1.6163258e+01 -1.5917184e+01 -1.5670991e+01 -1.5424679e+01 -1.5178252e+01 -1.4931711e+01 -1.4685057e+01 -1.4438292e+01 -1.4191419e+01 -1.3944439e+01 -1.3697354e+01 -1.3450165e+01 -1.3202875e+01 -1.2955486e+01 -1.2707998e+01 -1.2460415e+01 -1.2212737e+01 -1.1964967e+01 -1.1717106e+01 -1.1469157e+01 -1.1221121e+01 -1.0973000e+01 -1.0724797e+01 -1.0476511e+01 -1.0228147e+01 -9.9797045e+00 -9.7311867e+00 -9.4825950e+00 -9.2339314e+00 -8.9851977e+00 -8.7363958e+00 -8.4875276e+00 -8.2385949e+00 -7.9895996e+00 -7.7405436e+00 -7.4914287e+00 -7.2422569e+00 -6.9930300e+00 -6.7437499e+00 -6.4944185e+00 -6.2450377e+00 -5.9956093e+00 -5.7461353e+00 -5.4966176e+00 -5.2470580e+00 -4.9974584e+00 -4.7478208e+00 -4.4981470e+00 -4.2484389e+00 -3.9986984e+00 -3.7489275e+00 -3.4991280e+00 -3.2493018e+00 -2.9994508e+00 -2.7495770e+00 -2.4996822e+00 -2.2497683e+00 -1.9998373e+00 -1.7498910e+00 -1.4999313e+00 -1.2499603e+00 -9.9997966e-01 -7.4999142e-01 -4.9999746e-01 -2.4999968e-01 2 | --------------------------------------------------------------------------------