diff --git a/.nfs0000000000442600000007e3 b/.nfs0000000000442600000007e3 new file mode 100755 index 0000000000000000000000000000000000000000..bfec6feaebe0ea98461c0680322a0070a5bc3727 Binary files /dev/null and b/.nfs0000000000442600000007e3 differ diff --git a/.nfs0000000000442602000007e4 b/.nfs0000000000442602000007e4 new file mode 100755 index 0000000000000000000000000000000000000000..3067bd5474d70681a81d0fb0a4515e5179b14b7c Binary files /dev/null and b/.nfs0000000000442602000007e4 differ diff --git a/.nfs00000000004426d600000806 b/.nfs00000000004426d600000806 new file mode 100755 index 0000000000000000000000000000000000000000..986bd9cd6783aa24745537df3536fa580ae0469d Binary files /dev/null and b/.nfs00000000004426d600000806 differ diff --git a/.nfs0000000000442714000007e5 b/.nfs0000000000442714000007e5 new file mode 100755 index 0000000000000000000000000000000000000000..6ca9a45207a9fe2783b28f6db4566711d8ba8c10 Binary files /dev/null and b/.nfs0000000000442714000007e5 differ diff --git a/cvxgen/solver.c b/cvxgen/solver.c new file mode 100644 index 0000000000000000000000000000000000000000..7ff93b0c4a8ed5235de38041a529fed4956cdbc7 --- /dev/null +++ b/cvxgen/solver.c @@ -0,0 +1,692 @@ +/* Produced by CVXGEN, 2016-01-17 08:15:52 -0500. */ +/* CVXGEN is Copyright (C) 2006-2012 Jacob Mattingley, jem@cvxgen.com. */ +/* The code in this file is Copyright (C) 2006-2012 Jacob Mattingley. */ +/* CVXGEN, or solvers produced by CVXGEN, cannot be used for commercial */ +/* applications without prior written permission from Jacob Mattingley. */ + +/* Filename: solver.c. */ +/* Description: Main solver file. */ +#include "solver.h" +double eval_gap(void) { + int i; + double gap; + gap = 0; + for (i = 0; i < 0; i++) + gap += work.z[i]*work.s[i]; + return gap; +} +void set_defaults(void) { + settings.resid_tol = 1e-6; + settings.eps = 1e-4; + settings.max_iters = 25; + settings.refine_steps = 1; + settings.s_init = 1; + settings.z_init = 1; + settings.debug = 0; + settings.verbose = 1; + settings.verbose_refinement = 0; + settings.better_start = 1; + settings.kkt_reg = 1e-7; +} +void setup_pointers(void) { + work.y = work.x + 198; + work.s = work.x + 298; + work.z = work.x + 298; + vars.x_1 = work.x + 98; + vars.x_2 = work.x + 99; + vars.x_3 = work.x + 100; + vars.x_4 = work.x + 101; + vars.x_5 = work.x + 102; + vars.x_6 = work.x + 103; + vars.x_7 = work.x + 104; + vars.x_8 = work.x + 105; + vars.x_9 = work.x + 106; + vars.x_10 = work.x + 107; + vars.x_11 = work.x + 108; + vars.x_12 = work.x + 109; + vars.x_13 = work.x + 110; + vars.x_14 = work.x + 111; + vars.x_15 = work.x + 112; + vars.x_16 = work.x + 113; + vars.x_17 = work.x + 114; + vars.x_18 = work.x + 115; + vars.x_19 = work.x + 116; + vars.x_20 = work.x + 117; + vars.x_21 = work.x + 118; + vars.x_22 = work.x + 119; + vars.x_23 = work.x + 120; + vars.x_24 = work.x + 121; + vars.x_25 = work.x + 122; + vars.x_26 = work.x + 123; + vars.x_27 = work.x + 124; + vars.x_28 = work.x + 125; + vars.x_29 = work.x + 126; + vars.x_30 = work.x + 127; + vars.x_31 = work.x + 128; + vars.x_32 = work.x + 129; + vars.x_33 = work.x + 130; + vars.x_34 = work.x + 131; + vars.x_35 = work.x + 132; + vars.x_36 = work.x + 133; + vars.x_37 = work.x + 134; + vars.x_38 = work.x + 135; + vars.x_39 = work.x + 136; + vars.x_40 = work.x + 137; + vars.x_41 = work.x + 138; + vars.x_42 = work.x + 139; + vars.x_43 = work.x + 140; + vars.x_44 = work.x + 141; + vars.x_45 = work.x + 142; + vars.x_46 = work.x + 143; + vars.x_47 = work.x + 144; + vars.x_48 = work.x + 145; + vars.x_49 = work.x + 146; + vars.x_50 = work.x + 147; + vars.x_51 = work.x + 148; + vars.x_52 = work.x + 149; + vars.x_53 = work.x + 150; + vars.x_54 = work.x + 151; + vars.x_55 = work.x + 152; + vars.x_56 = work.x + 153; + vars.x_57 = work.x + 154; + vars.x_58 = work.x + 155; + vars.x_59 = work.x + 156; + vars.x_60 = work.x + 157; + vars.x_61 = work.x + 158; + vars.x_62 = work.x + 159; + vars.x_63 = work.x + 160; + vars.x_64 = work.x + 161; + vars.x_65 = work.x + 162; + vars.x_66 = work.x + 163; + vars.x_67 = work.x + 164; + vars.x_68 = work.x + 165; + vars.x_69 = work.x + 166; + vars.x_70 = work.x + 167; + vars.x_71 = work.x + 168; + vars.x_72 = work.x + 169; + vars.x_73 = work.x + 170; + vars.x_74 = work.x + 171; + vars.x_75 = work.x + 172; + vars.x_76 = work.x + 173; + vars.x_77 = work.x + 174; + vars.x_78 = work.x + 175; + vars.x_79 = work.x + 176; + vars.x_80 = work.x + 177; + vars.x_81 = work.x + 178; + vars.x_82 = work.x + 179; + vars.x_83 = work.x + 180; + vars.x_84 = work.x + 181; + vars.x_85 = work.x + 182; + vars.x_86 = work.x + 183; + vars.x_87 = work.x + 184; + vars.x_88 = work.x + 185; + vars.x_89 = work.x + 186; + vars.x_90 = work.x + 187; + vars.x_91 = work.x + 188; + vars.x_92 = work.x + 189; + vars.x_93 = work.x + 190; + vars.x_94 = work.x + 191; + vars.x_95 = work.x + 192; + vars.x_96 = work.x + 193; + vars.x_97 = work.x + 194; + vars.x_98 = work.x + 195; + vars.x_99 = work.x + 196; + vars.x_100 = work.x + 197; +} +void setup_indexed_params(void) { + /* In CVXGEN, you can say */ + /* parameters */ + /* A[i] (5,3), i=1..4 */ + /* end */ + /* This function sets up A[2] to be a pointer to A_2, which is a length-15 */ + /* vector of doubles. */ + /* If you access parameters that you haven't defined in CVXGEN, the result */ + /* is undefined. */ + params.traj1[1] = params.traj1_1; + params.traj1[2] = params.traj1_2; + params.traj1[3] = params.traj1_3; + params.traj1[4] = params.traj1_4; + params.traj1[5] = params.traj1_5; + params.traj1[6] = params.traj1_6; + params.traj1[7] = params.traj1_7; + params.traj1[8] = params.traj1_8; + params.traj1[9] = params.traj1_9; + params.traj1[10] = params.traj1_10; + params.traj1[11] = params.traj1_11; + params.traj1[12] = params.traj1_12; + params.traj1[13] = params.traj1_13; + params.traj1[14] = params.traj1_14; + params.traj1[15] = params.traj1_15; + params.traj1[16] = params.traj1_16; + params.traj1[17] = params.traj1_17; + params.traj1[18] = params.traj1_18; + params.traj1[19] = params.traj1_19; + params.traj1[20] = params.traj1_20; + params.traj1[21] = params.traj1_21; + params.traj1[22] = params.traj1_22; + params.traj1[23] = params.traj1_23; + params.traj1[24] = params.traj1_24; + params.traj1[25] = params.traj1_25; + params.traj1[26] = params.traj1_26; + params.traj1[27] = params.traj1_27; + params.traj1[28] = params.traj1_28; + params.traj1[29] = params.traj1_29; + params.traj1[30] = params.traj1_30; + params.traj1[31] = params.traj1_31; + params.traj1[32] = params.traj1_32; + params.traj1[33] = params.traj1_33; + params.traj1[34] = params.traj1_34; + params.traj1[35] = params.traj1_35; + params.traj1[36] = params.traj1_36; + params.traj1[37] = params.traj1_37; + params.traj1[38] = params.traj1_38; + params.traj1[39] = params.traj1_39; + params.traj1[40] = params.traj1_40; + params.traj1[41] = params.traj1_41; + params.traj1[42] = params.traj1_42; + params.traj1[43] = params.traj1_43; + params.traj1[44] = params.traj1_44; + params.traj1[45] = params.traj1_45; + params.traj1[46] = params.traj1_46; + params.traj1[47] = params.traj1_47; + params.traj1[48] = params.traj1_48; + params.traj1[49] = params.traj1_49; + params.traj1[50] = params.traj1_50; + params.traj1[51] = params.traj1_51; + params.traj1[52] = params.traj1_52; + params.traj1[53] = params.traj1_53; + params.traj1[54] = params.traj1_54; + params.traj1[55] = params.traj1_55; + params.traj1[56] = params.traj1_56; + params.traj1[57] = params.traj1_57; + params.traj1[58] = params.traj1_58; + params.traj1[59] = params.traj1_59; + params.traj1[60] = params.traj1_60; + params.traj1[61] = params.traj1_61; + params.traj1[62] = params.traj1_62; + params.traj1[63] = params.traj1_63; + params.traj1[64] = params.traj1_64; + params.traj1[65] = params.traj1_65; + params.traj1[66] = params.traj1_66; + params.traj1[67] = params.traj1_67; + params.traj1[68] = params.traj1_68; + params.traj1[69] = params.traj1_69; + params.traj1[70] = params.traj1_70; + params.traj1[71] = params.traj1_71; + params.traj1[72] = params.traj1_72; + params.traj1[73] = params.traj1_73; + params.traj1[74] = params.traj1_74; + params.traj1[75] = params.traj1_75; + params.traj1[76] = params.traj1_76; + params.traj1[77] = params.traj1_77; + params.traj1[78] = params.traj1_78; + params.traj1[79] = params.traj1_79; + params.traj1[80] = params.traj1_80; + params.traj1[81] = params.traj1_81; + params.traj1[82] = params.traj1_82; + params.traj1[83] = params.traj1_83; + params.traj1[84] = params.traj1_84; + params.traj1[85] = params.traj1_85; + params.traj1[86] = params.traj1_86; + params.traj1[87] = params.traj1_87; + params.traj1[88] = params.traj1_88; + params.traj1[89] = params.traj1_89; + params.traj1[90] = params.traj1_90; + params.traj1[91] = params.traj1_91; + params.traj1[92] = params.traj1_92; + params.traj1[93] = params.traj1_93; + params.traj1[94] = params.traj1_94; + params.traj1[95] = params.traj1_95; + params.traj1[96] = params.traj1_96; + params.traj1[97] = params.traj1_97; + params.traj1[98] = params.traj1_98; + params.traj1[99] = params.traj1_99; + params.traj1[100] = params.traj1_100; +} +void setup_indexed_optvars(void) { + /* In CVXGEN, you can say */ + /* variables */ + /* x[i] (5), i=2..4 */ + /* end */ + /* This function sets up x[3] to be a pointer to x_3, which is a length-5 */ + /* vector of doubles. */ + /* If you access variables that you haven't defined in CVXGEN, the result */ + /* is undefined. */ + vars.x[1] = vars.x_1; + vars.x[2] = vars.x_2; + vars.x[3] = vars.x_3; + vars.x[4] = vars.x_4; + vars.x[5] = vars.x_5; + vars.x[6] = vars.x_6; + vars.x[7] = vars.x_7; + vars.x[8] = vars.x_8; + vars.x[9] = vars.x_9; + vars.x[10] = vars.x_10; + vars.x[11] = vars.x_11; + vars.x[12] = vars.x_12; + vars.x[13] = vars.x_13; + vars.x[14] = vars.x_14; + vars.x[15] = vars.x_15; + vars.x[16] = vars.x_16; + vars.x[17] = vars.x_17; + vars.x[18] = vars.x_18; + vars.x[19] = vars.x_19; + vars.x[20] = vars.x_20; + vars.x[21] = vars.x_21; + vars.x[22] = vars.x_22; + vars.x[23] = vars.x_23; + vars.x[24] = vars.x_24; + vars.x[25] = vars.x_25; + vars.x[26] = vars.x_26; + vars.x[27] = vars.x_27; + vars.x[28] = vars.x_28; + vars.x[29] = vars.x_29; + vars.x[30] = vars.x_30; + vars.x[31] = vars.x_31; + vars.x[32] = vars.x_32; + vars.x[33] = vars.x_33; + vars.x[34] = vars.x_34; + vars.x[35] = vars.x_35; + vars.x[36] = vars.x_36; + vars.x[37] = vars.x_37; + vars.x[38] = vars.x_38; + vars.x[39] = vars.x_39; + vars.x[40] = vars.x_40; + vars.x[41] = vars.x_41; + vars.x[42] = vars.x_42; + vars.x[43] = vars.x_43; + vars.x[44] = vars.x_44; + vars.x[45] = vars.x_45; + vars.x[46] = vars.x_46; + vars.x[47] = vars.x_47; + vars.x[48] = vars.x_48; + vars.x[49] = vars.x_49; + vars.x[50] = vars.x_50; + vars.x[51] = vars.x_51; + vars.x[52] = vars.x_52; + vars.x[53] = vars.x_53; + vars.x[54] = vars.x_54; + vars.x[55] = vars.x_55; + vars.x[56] = vars.x_56; + vars.x[57] = vars.x_57; + vars.x[58] = vars.x_58; + vars.x[59] = vars.x_59; + vars.x[60] = vars.x_60; + vars.x[61] = vars.x_61; + vars.x[62] = vars.x_62; + vars.x[63] = vars.x_63; + vars.x[64] = vars.x_64; + vars.x[65] = vars.x_65; + vars.x[66] = vars.x_66; + vars.x[67] = vars.x_67; + vars.x[68] = vars.x_68; + vars.x[69] = vars.x_69; + vars.x[70] = vars.x_70; + vars.x[71] = vars.x_71; + vars.x[72] = vars.x_72; + vars.x[73] = vars.x_73; + vars.x[74] = vars.x_74; + vars.x[75] = vars.x_75; + vars.x[76] = vars.x_76; + vars.x[77] = vars.x_77; + vars.x[78] = vars.x_78; + vars.x[79] = vars.x_79; + vars.x[80] = vars.x_80; + vars.x[81] = vars.x_81; + vars.x[82] = vars.x_82; + vars.x[83] = vars.x_83; + vars.x[84] = vars.x_84; + vars.x[85] = vars.x_85; + vars.x[86] = vars.x_86; + vars.x[87] = vars.x_87; + vars.x[88] = vars.x_88; + vars.x[89] = vars.x_89; + vars.x[90] = vars.x_90; + vars.x[91] = vars.x_91; + vars.x[92] = vars.x_92; + vars.x[93] = vars.x_93; + vars.x[94] = vars.x_94; + vars.x[95] = vars.x_95; + vars.x[96] = vars.x_96; + vars.x[97] = vars.x_97; + vars.x[98] = vars.x_98; + vars.x[99] = vars.x_99; + vars.x[100] = vars.x_100; +} +void setup_indexing(void) { + setup_pointers(); + setup_indexed_params(); + setup_indexed_optvars(); +} +void set_start(void) { + int i; + for (i = 0; i < 198; i++) + work.x[i] = 0; + for (i = 0; i < 100; i++) + work.y[i] = 0; + for (i = 0; i < 0; i++) + work.s[i] = (work.h[i] > 0) ? work.h[i] : settings.s_init; + for (i = 0; i < 0; i++) + work.z[i] = settings.z_init; +} +double eval_objv(void) { + int i; + double objv; + /* Borrow space in work.rhs. */ + multbyP(work.rhs, work.x); + objv = 0; + for (i = 0; i < 198; i++) + objv += work.x[i]*work.rhs[i]; + objv *= 0.5; + for (i = 0; i < 198; i++) + objv += work.q[i]*work.x[i]; + objv += work.quad_309377593344[0]+work.quad_170383695872[0]+work.quad_112192413696[0]+work.quad_271369404416[0]+work.quad_974379421696[0]+work.quad_880958541824[0]+work.quad_572094451712[0]+work.quad_789148684288[0]+work.quad_448304680960[0]+work.quad_196635672576[0]+work.quad_489733091328[0]+work.quad_802233995264[0]+work.quad_865562517504[0]+work.quad_910621253632[0]+work.quad_321513025536[0]+work.quad_997344780288[0]+work.quad_448780910592[0]+work.quad_115901485056[0]+work.quad_782888361984[0]+work.quad_609463140352[0]+work.quad_88437858304[0]+work.quad_984663347200[0]+work.quad_230162866176[0]+work.quad_416382242816[0]+work.quad_380873158656[0]+work.quad_556464291840[0]+work.quad_266292043776[0]+work.quad_970572640256[0]+work.quad_39497891840[0]+work.quad_701607514112[0]+work.quad_181586403328[0]+work.quad_260463075328[0]+work.quad_382856859648[0]+work.quad_199224414208[0]+work.quad_511656841216[0]+work.quad_171214155776[0]+work.quad_70639910912[0]+work.quad_463249276928[0]+work.quad_244412502016[0]+work.quad_258282409984[0]+work.quad_321028120576[0]+work.quad_30674518016[0]+work.quad_824505257984[0]+work.quad_484111179776[0]+work.quad_675570683904[0]+work.quad_386911121408[0]+work.quad_932702867456[0]+work.quad_274526810112[0]+work.quad_96616189952[0]+work.quad_711864590336[0]+work.quad_200392192000[0]+work.quad_150270558208[0]+work.quad_598460686336[0]+work.quad_831592636416[0]+work.quad_874189471744[0]+work.quad_632352092160[0]+work.quad_969116119040[0]+work.quad_610911072256[0]+work.quad_606707699712[0]+work.quad_449159319552[0]+work.quad_700922720256[0]+work.quad_911067136000[0]+work.quad_304706789376[0]+work.quad_530900680704[0]+work.quad_307691851776[0]+work.quad_875119529984[0]+work.quad_330167877632[0]+work.quad_106008100864[0]+work.quad_586821791744[0]+work.quad_62270459904[0]+work.quad_705160380416[0]+work.quad_566627430400[0]+work.quad_833211822080[0]+work.quad_28799266816[0]+work.quad_442252132352[0]+work.quad_713742774272[0]+work.quad_447903891456[0]+work.quad_655034785792[0]+work.quad_576686788608[0]+work.quad_288749699072[0]+work.quad_866096066560[0]+work.quad_345799389184[0]+work.quad_335292588032[0]+work.quad_292534816768[0]+work.quad_832380674048[0]+work.quad_934938374144[0]+work.quad_265476059136[0]+work.quad_478224822272[0]+work.quad_901249572864[0]+work.quad_216942473216[0]+work.quad_227493912576[0]+work.quad_458072092672[0]+work.quad_912331198464[0]+work.quad_307004768256[0]+work.quad_284125421568[0]+work.quad_704038281216[0]+work.quad_401987686400[0]+work.quad_592084643840[0]+work.quad_8875266048[0]+work.quad_270270570496[0]; + return objv; +} +void fillrhs_aff(void) { + int i; + double *r1, *r2, *r3, *r4; + r1 = work.rhs; + r2 = work.rhs + 198; + r3 = work.rhs + 198; + r4 = work.rhs + 198; + /* r1 = -A^Ty - G^Tz - Px - q. */ + multbymAT(r1, work.y); + multbymGT(work.buffer, work.z); + for (i = 0; i < 198; i++) + r1[i] += work.buffer[i]; + multbyP(work.buffer, work.x); + for (i = 0; i < 198; i++) + r1[i] -= work.buffer[i] + work.q[i]; + /* r2 = -z. */ + for (i = 0; i < 0; i++) + r2[i] = -work.z[i]; + /* r3 = -Gx - s + h. */ + multbymG(r3, work.x); + for (i = 0; i < 0; i++) + r3[i] += -work.s[i] + work.h[i]; + /* r4 = -Ax + b. */ + multbymA(r4, work.x); + for (i = 0; i < 100; i++) + r4[i] += work.b[i]; +} +void fillrhs_cc(void) { + int i; + double *r2; + double *ds_aff, *dz_aff; + double mu; + double alpha; + double sigma; + double smu; + double minval; + r2 = work.rhs + 198; + ds_aff = work.lhs_aff + 198; + dz_aff = work.lhs_aff + 198; + mu = 0; + for (i = 0; i < 0; i++) + mu += work.s[i]*work.z[i]; + /* Don't finish calculating mu quite yet. */ + /* Find min(min(ds./s), min(dz./z)). */ + minval = 0; + for (i = 0; i < 0; i++) + if (ds_aff[i] < minval*work.s[i]) + minval = ds_aff[i]/work.s[i]; + for (i = 0; i < 0; i++) + if (dz_aff[i] < minval*work.z[i]) + minval = dz_aff[i]/work.z[i]; + /* Find alpha. */ + if (-1 < minval) + alpha = 1; + else + alpha = -1/minval; + sigma = 0; + for (i = 0; i < 0; i++) + sigma += (work.s[i] + alpha*ds_aff[i])* + (work.z[i] + alpha*dz_aff[i]); + sigma /= mu; + sigma = sigma*sigma*sigma; + /* Finish calculating mu now. */ + smu = sigma*mu; + /* Fill-in the rhs. */ + for (i = 0; i < 198; i++) + work.rhs[i] = 0; + for (i = 198; i < 298; i++) + work.rhs[i] = 0; + for (i = 0; i < 0; i++) + r2[i] = work.s_inv[i]*(smu - ds_aff[i]*dz_aff[i]); +} +void refine(double *target, double *var) { + int i, j; + double *residual = work.buffer; + double norm2; + double *new_var = work.buffer2; + for (j = 0; j < settings.refine_steps; j++) { + norm2 = 0; + matrix_multiply(residual, var); + for (i = 0; i < 298; i++) { + residual[i] = residual[i] - target[i]; + norm2 += residual[i]*residual[i]; + } +#ifndef ZERO_LIBRARY_MODE + if (settings.verbose_refinement) { + if (j == 0) + printf("Initial residual before refinement has norm squared %.6g.\n", norm2); + else + printf("After refinement we get squared norm %.6g.\n", norm2); + } +#endif + /* Solve to find new_var = KKT \ (target - A*var). */ + ldl_solve(residual, new_var); + /* Update var += new_var, or var += KKT \ (target - A*var). */ + for (i = 0; i < 298; i++) { + var[i] -= new_var[i]; + } + } +#ifndef ZERO_LIBRARY_MODE + if (settings.verbose_refinement) { + /* Check the residual once more, but only if we're reporting it, since */ + /* it's expensive. */ + norm2 = 0; + matrix_multiply(residual, var); + for (i = 0; i < 298; i++) { + residual[i] = residual[i] - target[i]; + norm2 += residual[i]*residual[i]; + } + if (j == 0) + printf("Initial residual before refinement has norm squared %.6g.\n", norm2); + else + printf("After refinement we get squared norm %.6g.\n", norm2); + } +#endif +} +double calc_ineq_resid_squared(void) { + /* Calculates the norm ||-Gx - s + h||. */ + double norm2_squared; + int i; + /* Find -Gx. */ + multbymG(work.buffer, work.x); + /* Add -s + h. */ + for (i = 0; i < 0; i++) + work.buffer[i] += -work.s[i] + work.h[i]; + /* Now find the squared norm. */ + norm2_squared = 0; + for (i = 0; i < 0; i++) + norm2_squared += work.buffer[i]*work.buffer[i]; + return norm2_squared; +} +double calc_eq_resid_squared(void) { + /* Calculates the norm ||-Ax + b||. */ + double norm2_squared; + int i; + /* Find -Ax. */ + multbymA(work.buffer, work.x); + /* Add +b. */ + for (i = 0; i < 100; i++) + work.buffer[i] += work.b[i]; + /* Now find the squared norm. */ + norm2_squared = 0; + for (i = 0; i < 100; i++) + norm2_squared += work.buffer[i]*work.buffer[i]; + return norm2_squared; +} +void better_start(void) { + /* Calculates a better starting point, using a similar approach to CVXOPT. */ + /* Not yet speed optimized. */ + int i; + double *x, *s, *z, *y; + double alpha; + work.block_33[0] = -1; + /* Make sure sinvz is 1 to make hijacked KKT system ok. */ + for (i = 0; i < 0; i++) + work.s_inv_z[i] = 1; + fill_KKT(); + ldl_factor(); + fillrhs_start(); + /* Borrow work.lhs_aff for the solution. */ + ldl_solve(work.rhs, work.lhs_aff); + /* Don't do any refinement for now. Precision doesn't matter too much. */ + x = work.lhs_aff; + s = work.lhs_aff + 198; + z = work.lhs_aff + 198; + y = work.lhs_aff + 198; + /* Just set x and y as is. */ + for (i = 0; i < 198; i++) + work.x[i] = x[i]; + for (i = 0; i < 100; i++) + work.y[i] = y[i]; + /* Now complete the initialization. Start with s. */ + /* Must have alpha > max(z). */ + alpha = -1e99; + for (i = 0; i < 0; i++) + if (alpha < z[i]) + alpha = z[i]; + if (alpha < 0) { + for (i = 0; i < 0; i++) + work.s[i] = -z[i]; + } else { + alpha += 1; + for (i = 0; i < 0; i++) + work.s[i] = -z[i] + alpha; + } + /* Now initialize z. */ + /* Now must have alpha > max(-z). */ + alpha = -1e99; + for (i = 0; i < 0; i++) + if (alpha < -z[i]) + alpha = -z[i]; + if (alpha < 0) { + for (i = 0; i < 0; i++) + work.z[i] = z[i]; + } else { + alpha += 1; + for (i = 0; i < 0; i++) + work.z[i] = z[i] + alpha; + } +} +void fillrhs_start(void) { + /* Fill rhs with (-q, 0, h, b). */ + int i; + double *r1, *r2, *r3, *r4; + r1 = work.rhs; + r2 = work.rhs + 198; + r3 = work.rhs + 198; + r4 = work.rhs + 198; + for (i = 0; i < 198; i++) + r1[i] = -work.q[i]; + for (i = 0; i < 0; i++) + r2[i] = 0; + for (i = 0; i < 0; i++) + r3[i] = work.h[i]; + for (i = 0; i < 100; i++) + r4[i] = work.b[i]; +} +long solve(void) { + int i; + int iter; + double *dx, *ds, *dy, *dz; + double minval; + double alpha; + work.converged = 0; + setup_pointers(); + pre_ops(); +#ifndef ZERO_LIBRARY_MODE + if (0) + printf("iter objv gap |Ax-b| |Gx+s-h| step\n"); +#endif + fillq(); + fillh(); + fillb(); + if (settings.better_start) + better_start(); + else + set_start(); + for (iter = 0; iter < settings.max_iters; iter++) { + for (i = 0; i < 0; i++) { + work.s_inv[i] = 1.0 / work.s[i]; + work.s_inv_z[i] = work.s_inv[i]*work.z[i]; + } + work.block_33[0] = 0; + fill_KKT(); + ldl_factor(); + /* Affine scaling directions. */ + fillrhs_aff(); + ldl_solve(work.rhs, work.lhs_aff); + refine(work.rhs, work.lhs_aff); + /* Centering plus corrector directions. */ + fillrhs_cc(); + ldl_solve(work.rhs, work.lhs_cc); + refine(work.rhs, work.lhs_cc); + /* Add the two together and store in aff. */ + for (i = 0; i < 298; i++) + work.lhs_aff[i] += work.lhs_cc[i]; + /* Rename aff to reflect its new meaning. */ + dx = work.lhs_aff; + ds = work.lhs_aff + 198; + dz = work.lhs_aff + 198; + dy = work.lhs_aff + 198; + /* Find min(min(ds./s), min(dz./z)). */ + minval = 0; + for (i = 0; i < 0; i++) + if (ds[i] < minval*work.s[i]) + minval = ds[i]/work.s[i]; + for (i = 0; i < 0; i++) + if (dz[i] < minval*work.z[i]) + minval = dz[i]/work.z[i]; + /* Find alpha. */ + if (-0.99 < minval) + alpha = 1; + else + alpha = -0.99/minval; + /* Update the primal and dual variables. */ + for (i = 0; i < 198; i++) + work.x[i] += alpha*dx[i]; + for (i = 0; i < 0; i++) + work.s[i] += alpha*ds[i]; + for (i = 0; i < 0; i++) + work.z[i] += alpha*dz[i]; + for (i = 0; i < 100; i++) + work.y[i] += alpha*dy[i]; + work.gap = eval_gap(); + work.eq_resid_squared = calc_eq_resid_squared(); + work.ineq_resid_squared = calc_ineq_resid_squared(); +#ifndef ZERO_LIBRARY_MODE + if (0) { + work.optval = eval_objv(); + printf("%3d %10.3e %9.2e %9.2e %9.2e % 6.4f\n", + iter+1, work.optval, work.gap, sqrt(work.eq_resid_squared), + sqrt(work.ineq_resid_squared), alpha); + } +#endif + /* Test termination conditions. Requires optimality, and satisfied */ + /* constraints. */ + if ( (work.gap < settings.eps) + && (work.eq_resid_squared <= settings.resid_tol*settings.resid_tol) + && (work.ineq_resid_squared <= settings.resid_tol*settings.resid_tol) + ) { + work.converged = 1; + work.optval = eval_objv(); + return iter+1; + } + } + return iter; +} diff --git a/cvxgen/solver.h b/cvxgen/solver.h new file mode 100644 index 0000000000000000000000000000000000000000..56b08df97f6adb69d57563020c7357ea567db650 --- /dev/null +++ b/cvxgen/solver.h @@ -0,0 +1,540 @@ +/* Produced by CVXGEN, 2016-01-17 08:15:56 -0500. */ +/* CVXGEN is Copyright (C) 2006-2012 Jacob Mattingley, jem@cvxgen.com. */ +/* The code in this file is Copyright (C) 2006-2012 Jacob Mattingley. */ +/* CVXGEN, or solvers produced by CVXGEN, cannot be used for commercial */ +/* applications without prior written permission from Jacob Mattingley. */ + +/* Filename: solver.h. */ +/* Description: Header file with relevant definitions. */ +#ifndef SOLVER_H +#define SOLVER_H +/* Uncomment the next line to remove all library dependencies. */ +/*#define ZERO_LIBRARY_MODE */ +#ifdef MATLAB_MEX_FILE +/* Matlab functions. MATLAB_MEX_FILE will be defined by the mex compiler. */ +/* If you are not using the mex compiler, this functionality will not intrude, */ +/* as it will be completely disabled at compile-time. */ +#include "mex.h" +#else +#ifndef ZERO_LIBRARY_MODE +#include <stdio.h> +#endif +#endif +/* Space must be allocated somewhere (testsolver.c, csolve.c or your own */ +/* program) for the global variables vars, params, work and settings. */ +/* At the bottom of this file, they are externed. */ +#ifndef ZERO_LIBRARY_MODE +#include <math.h> +#define pm(A, m, n) printmatrix(#A, A, m, n, 1) +#endif + +#include <armadillo> +using namespace arma; +typedef struct Params_t { + double traj1_1[1]; + double traj1_2[1]; + double traj1_3[1]; + double traj1_4[1]; + double traj1_5[1]; + double traj1_6[1]; + double traj1_7[1]; + double traj1_8[1]; + double traj1_9[1]; + double traj1_10[1]; + double traj1_11[1]; + double traj1_12[1]; + double traj1_13[1]; + double traj1_14[1]; + double traj1_15[1]; + double traj1_16[1]; + double traj1_17[1]; + double traj1_18[1]; + double traj1_19[1]; + double traj1_20[1]; + double traj1_21[1]; + double traj1_22[1]; + double traj1_23[1]; + double traj1_24[1]; + double traj1_25[1]; + double traj1_26[1]; + double traj1_27[1]; + double traj1_28[1]; + double traj1_29[1]; + double traj1_30[1]; + double traj1_31[1]; + double traj1_32[1]; + double traj1_33[1]; + double traj1_34[1]; + double traj1_35[1]; + double traj1_36[1]; + double traj1_37[1]; + double traj1_38[1]; + double traj1_39[1]; + double traj1_40[1]; + double traj1_41[1]; + double traj1_42[1]; + double traj1_43[1]; + double traj1_44[1]; + double traj1_45[1]; + double traj1_46[1]; + double traj1_47[1]; + double traj1_48[1]; + double traj1_49[1]; + double traj1_50[1]; + double traj1_51[1]; + double traj1_52[1]; + double traj1_53[1]; + double traj1_54[1]; + double traj1_55[1]; + double traj1_56[1]; + double traj1_57[1]; + double traj1_58[1]; + double traj1_59[1]; + double traj1_60[1]; + double traj1_61[1]; + double traj1_62[1]; + double traj1_63[1]; + double traj1_64[1]; + double traj1_65[1]; + double traj1_66[1]; + double traj1_67[1]; + double traj1_68[1]; + double traj1_69[1]; + double traj1_70[1]; + double traj1_71[1]; + double traj1_72[1]; + double traj1_73[1]; + double traj1_74[1]; + double traj1_75[1]; + double traj1_76[1]; + double traj1_77[1]; + double traj1_78[1]; + double traj1_79[1]; + double traj1_80[1]; + double traj1_81[1]; + double traj1_82[1]; + double traj1_83[1]; + double traj1_84[1]; + double traj1_85[1]; + double traj1_86[1]; + double traj1_87[1]; + double traj1_88[1]; + double traj1_89[1]; + double traj1_90[1]; + double traj1_91[1]; + double traj1_92[1]; + double traj1_93[1]; + double traj1_94[1]; + double traj1_95[1]; + double traj1_96[1]; + double traj1_97[1]; + double traj1_98[1]; + double traj1_99[1]; + double traj1_100[1]; + double lambda[1]; + double traj2_first[1]; + double traj2_second[1]; + double *traj1[101]; +} Params; +typedef struct Vars_t { + double *x_1; /* 1 rows. */ + double *x_2; /* 1 rows. */ + double *x_3; /* 1 rows. */ + double *x_4; /* 1 rows. */ + double *x_5; /* 1 rows. */ + double *x_6; /* 1 rows. */ + double *x_7; /* 1 rows. */ + double *x_8; /* 1 rows. */ + double *x_9; /* 1 rows. */ + double *x_10; /* 1 rows. */ + double *x_11; /* 1 rows. */ + double *x_12; /* 1 rows. */ + double *x_13; /* 1 rows. */ + double *x_14; /* 1 rows. */ + double *x_15; /* 1 rows. */ + double *x_16; /* 1 rows. */ + double *x_17; /* 1 rows. */ + double *x_18; /* 1 rows. */ + double *x_19; /* 1 rows. */ + double *x_20; /* 1 rows. */ + double *x_21; /* 1 rows. */ + double *x_22; /* 1 rows. */ + double *x_23; /* 1 rows. */ + double *x_24; /* 1 rows. */ + double *x_25; /* 1 rows. */ + double *x_26; /* 1 rows. */ + double *x_27; /* 1 rows. */ + double *x_28; /* 1 rows. */ + double *x_29; /* 1 rows. */ + double *x_30; /* 1 rows. */ + double *x_31; /* 1 rows. */ + double *x_32; /* 1 rows. */ + double *x_33; /* 1 rows. */ + double *x_34; /* 1 rows. */ + double *x_35; /* 1 rows. */ + double *x_36; /* 1 rows. */ + double *x_37; /* 1 rows. */ + double *x_38; /* 1 rows. */ + double *x_39; /* 1 rows. */ + double *x_40; /* 1 rows. */ + double *x_41; /* 1 rows. */ + double *x_42; /* 1 rows. */ + double *x_43; /* 1 rows. */ + double *x_44; /* 1 rows. */ + double *x_45; /* 1 rows. */ + double *x_46; /* 1 rows. */ + double *x_47; /* 1 rows. */ + double *x_48; /* 1 rows. */ + double *x_49; /* 1 rows. */ + double *x_50; /* 1 rows. */ + double *x_51; /* 1 rows. */ + double *x_52; /* 1 rows. */ + double *x_53; /* 1 rows. */ + double *x_54; /* 1 rows. */ + double *x_55; /* 1 rows. */ + double *x_56; /* 1 rows. */ + double *x_57; /* 1 rows. */ + double *x_58; /* 1 rows. */ + double *x_59; /* 1 rows. */ + double *x_60; /* 1 rows. */ + double *x_61; /* 1 rows. */ + double *x_62; /* 1 rows. */ + double *x_63; /* 1 rows. */ + double *x_64; /* 1 rows. */ + double *x_65; /* 1 rows. */ + double *x_66; /* 1 rows. */ + double *x_67; /* 1 rows. */ + double *x_68; /* 1 rows. */ + double *x_69; /* 1 rows. */ + double *x_70; /* 1 rows. */ + double *x_71; /* 1 rows. */ + double *x_72; /* 1 rows. */ + double *x_73; /* 1 rows. */ + double *x_74; /* 1 rows. */ + double *x_75; /* 1 rows. */ + double *x_76; /* 1 rows. */ + double *x_77; /* 1 rows. */ + double *x_78; /* 1 rows. */ + double *x_79; /* 1 rows. */ + double *x_80; /* 1 rows. */ + double *x_81; /* 1 rows. */ + double *x_82; /* 1 rows. */ + double *x_83; /* 1 rows. */ + double *x_84; /* 1 rows. */ + double *x_85; /* 1 rows. */ + double *x_86; /* 1 rows. */ + double *x_87; /* 1 rows. */ + double *x_88; /* 1 rows. */ + double *x_89; /* 1 rows. */ + double *x_90; /* 1 rows. */ + double *x_91; /* 1 rows. */ + double *x_92; /* 1 rows. */ + double *x_93; /* 1 rows. */ + double *x_94; /* 1 rows. */ + double *x_95; /* 1 rows. */ + double *x_96; /* 1 rows. */ + double *x_97; /* 1 rows. */ + double *x_98; /* 1 rows. */ + double *x_99; /* 1 rows. */ + double *x_100; /* 1 rows. */ + double *t_01; /* 1 rows. */ + double *t_02; /* 1 rows. */ + double *t_03; /* 1 rows. */ + double *t_04; /* 1 rows. */ + double *t_05; /* 1 rows. */ + double *t_06; /* 1 rows. */ + double *t_07; /* 1 rows. */ + double *t_08; /* 1 rows. */ + double *t_09; /* 1 rows. */ + double *t_10; /* 1 rows. */ + double *t_11; /* 1 rows. */ + double *t_12; /* 1 rows. */ + double *t_13; /* 1 rows. */ + double *t_14; /* 1 rows. */ + double *t_15; /* 1 rows. */ + double *t_16; /* 1 rows. */ + double *t_17; /* 1 rows. */ + double *t_18; /* 1 rows. */ + double *t_19; /* 1 rows. */ + double *t_20; /* 1 rows. */ + double *t_21; /* 1 rows. */ + double *t_22; /* 1 rows. */ + double *t_23; /* 1 rows. */ + double *t_24; /* 1 rows. */ + double *t_25; /* 1 rows. */ + double *t_26; /* 1 rows. */ + double *t_27; /* 1 rows. */ + double *t_28; /* 1 rows. */ + double *t_29; /* 1 rows. */ + double *t_30; /* 1 rows. */ + double *t_31; /* 1 rows. */ + double *t_32; /* 1 rows. */ + double *t_33; /* 1 rows. */ + double *t_34; /* 1 rows. */ + double *t_35; /* 1 rows. */ + double *t_36; /* 1 rows. */ + double *t_37; /* 1 rows. */ + double *t_38; /* 1 rows. */ + double *t_39; /* 1 rows. */ + double *t_40; /* 1 rows. */ + double *t_41; /* 1 rows. */ + double *t_42; /* 1 rows. */ + double *t_43; /* 1 rows. */ + double *t_44; /* 1 rows. */ + double *t_45; /* 1 rows. */ + double *t_46; /* 1 rows. */ + double *t_47; /* 1 rows. */ + double *t_48; /* 1 rows. */ + double *t_49; /* 1 rows. */ + double *t_50; /* 1 rows. */ + double *t_51; /* 1 rows. */ + double *t_52; /* 1 rows. */ + double *t_53; /* 1 rows. */ + double *t_54; /* 1 rows. */ + double *t_55; /* 1 rows. */ + double *t_56; /* 1 rows. */ + double *t_57; /* 1 rows. */ + double *t_58; /* 1 rows. */ + double *t_59; /* 1 rows. */ + double *t_60; /* 1 rows. */ + double *t_61; /* 1 rows. */ + double *t_62; /* 1 rows. */ + double *t_63; /* 1 rows. */ + double *t_64; /* 1 rows. */ + double *t_65; /* 1 rows. */ + double *t_66; /* 1 rows. */ + double *t_67; /* 1 rows. */ + double *t_68; /* 1 rows. */ + double *t_69; /* 1 rows. */ + double *t_70; /* 1 rows. */ + double *t_71; /* 1 rows. */ + double *t_72; /* 1 rows. */ + double *t_73; /* 1 rows. */ + double *t_74; /* 1 rows. */ + double *t_75; /* 1 rows. */ + double *t_76; /* 1 rows. */ + double *t_77; /* 1 rows. */ + double *t_78; /* 1 rows. */ + double *t_79; /* 1 rows. */ + double *t_80; /* 1 rows. */ + double *t_81; /* 1 rows. */ + double *t_82; /* 1 rows. */ + double *t_83; /* 1 rows. */ + double *t_84; /* 1 rows. */ + double *t_85; /* 1 rows. */ + double *t_86; /* 1 rows. */ + double *t_87; /* 1 rows. */ + double *t_88; /* 1 rows. */ + double *t_89; /* 1 rows. */ + double *t_90; /* 1 rows. */ + double *t_91; /* 1 rows. */ + double *t_92; /* 1 rows. */ + double *t_93; /* 1 rows. */ + double *t_94; /* 1 rows. */ + double *t_95; /* 1 rows. */ + double *t_96; /* 1 rows. */ + double *t_97; /* 1 rows. */ + double *t_98; /* 1 rows. */ + double *x[101]; +} Vars; +typedef struct Workspace_t { + double *h; + double *s_inv; + double *s_inv_z; + double b[100]; + double q[198]; + double rhs[298]; + double x[298]; + double *s; + double *z; + double *y; + double lhs_aff[298]; + double lhs_cc[298]; + double buffer[298]; + double buffer2[298]; + double KKT[593]; + double L[493]; + double d[298]; + double v[298]; + double d_inv[298]; + double gap; + double optval; + double ineq_resid_squared; + double eq_resid_squared; + double block_33[1]; + /* Pre-op symbols. */ + double quad_309377593344[1]; + double quad_170383695872[1]; + double quad_112192413696[1]; + double quad_271369404416[1]; + double quad_974379421696[1]; + double quad_880958541824[1]; + double quad_572094451712[1]; + double quad_789148684288[1]; + double quad_448304680960[1]; + double quad_196635672576[1]; + double quad_489733091328[1]; + double quad_802233995264[1]; + double quad_865562517504[1]; + double quad_910621253632[1]; + double quad_321513025536[1]; + double quad_997344780288[1]; + double quad_448780910592[1]; + double quad_115901485056[1]; + double quad_782888361984[1]; + double quad_609463140352[1]; + double quad_88437858304[1]; + double quad_984663347200[1]; + double quad_230162866176[1]; + double quad_416382242816[1]; + double quad_380873158656[1]; + double quad_556464291840[1]; + double quad_266292043776[1]; + double quad_970572640256[1]; + double quad_39497891840[1]; + double quad_701607514112[1]; + double quad_181586403328[1]; + double quad_260463075328[1]; + double quad_382856859648[1]; + double quad_199224414208[1]; + double quad_511656841216[1]; + double quad_171214155776[1]; + double quad_70639910912[1]; + double quad_463249276928[1]; + double quad_244412502016[1]; + double quad_258282409984[1]; + double quad_321028120576[1]; + double quad_30674518016[1]; + double quad_824505257984[1]; + double quad_484111179776[1]; + double quad_675570683904[1]; + double quad_386911121408[1]; + double quad_932702867456[1]; + double quad_274526810112[1]; + double quad_96616189952[1]; + double quad_711864590336[1]; + double quad_200392192000[1]; + double quad_150270558208[1]; + double quad_598460686336[1]; + double quad_831592636416[1]; + double quad_874189471744[1]; + double quad_632352092160[1]; + double quad_969116119040[1]; + double quad_610911072256[1]; + double quad_606707699712[1]; + double quad_449159319552[1]; + double quad_700922720256[1]; + double quad_911067136000[1]; + double quad_304706789376[1]; + double quad_530900680704[1]; + double quad_307691851776[1]; + double quad_875119529984[1]; + double quad_330167877632[1]; + double quad_106008100864[1]; + double quad_586821791744[1]; + double quad_62270459904[1]; + double quad_705160380416[1]; + double quad_566627430400[1]; + double quad_833211822080[1]; + double quad_28799266816[1]; + double quad_442252132352[1]; + double quad_713742774272[1]; + double quad_447903891456[1]; + double quad_655034785792[1]; + double quad_576686788608[1]; + double quad_288749699072[1]; + double quad_866096066560[1]; + double quad_345799389184[1]; + double quad_335292588032[1]; + double quad_292534816768[1]; + double quad_832380674048[1]; + double quad_934938374144[1]; + double quad_265476059136[1]; + double quad_478224822272[1]; + double quad_901249572864[1]; + double quad_216942473216[1]; + double quad_227493912576[1]; + double quad_458072092672[1]; + double quad_912331198464[1]; + double quad_307004768256[1]; + double quad_284125421568[1]; + double quad_704038281216[1]; + double quad_401987686400[1]; + double quad_592084643840[1]; + double quad_8875266048[1]; + double quad_270270570496[1]; + int converged; +} Workspace; +typedef struct Settings_t { + double resid_tol; + double eps; + int max_iters; + int refine_steps; + int better_start; + /* Better start obviates the need for s_init and z_init. */ + double s_init; + double z_init; + int verbose; + /* Show extra details of the iterative refinement steps. */ + int verbose_refinement; + int debug; + /* For regularization. Minimum value of abs(D_ii) in the kkt D factor. */ + double kkt_reg; +} Settings; +extern Vars vars; +extern Params params; +extern Workspace work; +extern Settings settings; +/* Function definitions in ldl.c: */ +void ldl_solve(double *target, double *var); +void ldl_factor(void); +double check_factorization(void); +void matrix_multiply(double *result, double *source); +double check_residual(double *target, double *multiplicand); +void fill_KKT(void); + +/* Function definitions in matrix_support.c: */ +void multbymA(double *lhs, double *rhs); +void multbymAT(double *lhs, double *rhs); +void multbymG(double *lhs, double *rhs); +void multbymGT(double *lhs, double *rhs); +void multbyP(double *lhs, double *rhs); +void fillq(void); +void fillh(void); +void fillb(void); +void pre_ops(void); + +/* Function definitions in solver.c: */ +double eval_gap(void); +void set_defaults(void); +void setup_pointers(void); +void setup_indexed_params(void); +void setup_indexed_optvars(void); +void setup_indexing(void); +void set_start(void); +double eval_objv(void); +void fillrhs_aff(void); +void fillrhs_cc(void); +void refine(double *target, double *var); +double calc_ineq_resid_squared(void); +double calc_eq_resid_squared(void); +void better_start(void); +void fillrhs_start(void); +long solve(void); + +/* Function definitions in testsolver.c: */ +int main(int argc, char **argv); +void load_default_data(const mat& traj1, const mat& traj2); + +/* Function definitions in util.c: */ +void tic(void); +float toc(void); +float tocq(void); +void printmatrix(char *name, double *A, int m, int n, int sparse); +double unif(double lower, double upper); +float ran1(long*idum, int reset); +float randn_internal(long *idum, int reset); +double randn(void); +void reset_rand(void); + +#endif diff --git a/plotMat3.cc b/plotMat3.cc new file mode 100644 index 0000000000000000000000000000000000000000..ca1c5790e70fe066e2019424c1cbd25377df1745 --- /dev/null +++ b/plotMat3.cc @@ -0,0 +1,30 @@ +#include "plotMat3.h" +#include "plotgnu3.h" +#include <string> +using namespace std; +using namespace arma; + + + +void plotMat3(const arma::mat& traj, const string& labelname) { + + vector<double> x; + for (int i = 0; i < traj.n_rows; ++i) { + x.push_back(traj(i,0)); + } + vector<double> y; + for (int i = 0; i < traj.n_rows; ++i) { + y.push_back(traj(i,1)); + } + + vector<double> z; + for (int i = 0; i < traj.n_rows; ++i) { + z.push_back(traj(i,2)); + } + + plotgnu3(x,y,z,labelname); + + + +} + diff --git a/plotMat3.h b/plotMat3.h new file mode 100644 index 0000000000000000000000000000000000000000..2e68a1d6f34a9317213bf59993ef49838b7e9370 --- /dev/null +++ b/plotMat3.h @@ -0,0 +1,13 @@ +#include <armadillo> +#include <vector> +#include <string> +using namespace std; +using namespace arma; + + +#ifndef plotMat3_H +#define plotMat3_H + + +void plotMat3(const arma::mat& traj, const string& labelname); +#endif diff --git a/plotgnu3.cc b/plotgnu3.cc new file mode 100644 index 0000000000000000000000000000000000000000..dd02c2b4c0f11556c4a9b7a26e69f449e97c5a5d --- /dev/null +++ b/plotgnu3.cc @@ -0,0 +1,33 @@ +#include "plotgnu3.h" +#include "gnuplot-cpp/gnuplot_i.hpp" //Gnuplot class handles POSIX-Pipe-communikation with Gnuplot + + +using namespace std; + +void wait_for_key () +{ +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) // every keypress registered, also arrow keys + cout << endl << "Press any key to continue..." << endl; + + FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); + _getch(); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + cout << endl << "Press ENTER to continue..." << endl; + + std::cin.clear(); + std::cin.ignore(std::cin.rdbuf()->in_avail()); + std::cin.get(); +#endif + return; +} + +void plotgnu3(const vector<double>& x, const vector<double>& y, const vector<double>& z, const string& labelname) { + static Gnuplot g1("lines"); + //g1.reset_plot(); + //g1.unset_grid(); + + + g1.plot_xyz(x, y, z,labelname); + g1.showonscreen(); + wait_for_key(); +} diff --git a/plotgnu3.h b/plotgnu3.h new file mode 100644 index 0000000000000000000000000000000000000000..af4cb4197d8e606f0f592eafc2d76b93728cf2e2 --- /dev/null +++ b/plotgnu3.h @@ -0,0 +1,10 @@ +#include <vector> +#include <string> +using namespace std; + +#ifndef PLOTGNU3_H +#define PLOTGNU3_H + + +void plotgnu3(const vector<double>& x, const vector<double>& y, const vector<double>& z, const string& labelname); +#endif diff --git a/yMod.txt b/yMod.txt new file mode 100644 index 0000000000000000000000000000000000000000..01fb0bec3ca8cd5fcca262267bdcebfd4e1ec5a3 --- /dev/null +++ b/yMod.txt @@ -0,0 +1,100 @@ + 3.152363611412e+02 -1.918230521602e+02 -1.065352010224e+02 + 3.163109250976e+02 -1.900483623986e+02 -1.070775632292e+02 + 3.173858567719e+02 -1.882732184828e+02 -1.076204422149e+02 + 3.184617857328e+02 -1.864968790468e+02 -1.081648231518e+02 + 3.195395061126e+02 -1.847184635219e+02 -1.087121132816e+02 + 3.206199134857e+02 -1.829370694807e+02 -1.092640669860e+02 + 3.217039753788e+02 -1.811518655388e+02 -1.098226786122e+02 + 3.227927189348e+02 -1.793621592628e+02 -1.103900726086e+02 + 3.238872130167e+02 -1.775674528690e+02 -1.109684163070e+02 + 3.249885397241e+02 -1.757674886213e+02 -1.115598607186e+02 + 3.260977675630e+02 -1.739622725884e+02 -1.121665032848e+02 + 3.272159367499e+02 -1.721520649889e+02 -1.127903637158e+02 + 3.283440553328e+02 -1.703373356642e+02 -1.134333638555e+02 + 3.294830978601e+02 -1.685187154841e+02 -1.140973101717e+02 + 3.306339976305e+02 -1.666969591002e+02 -1.147838715022e+02 + 3.317976371025e+02 -1.648729230796e+02 -1.154945636878e+02 + 3.329748380925e+02 -1.630475421512e+02 -1.162307466995e+02 + 3.341663479044e+02 -1.612218138478e+02 -1.169936572667e+02 + 3.353728383584e+02 -1.593967772390e+02 -1.177844509772e+02 + 3.365949162042e+02 -1.575734851833e+02 -1.186042390519e+02 + 3.378331391440e+02 -1.557529737665e+02 -1.194541059517e+02 + 3.390880341411e+02 -1.539362328383e+02 -1.203351230656e+02 + 3.403601163143e+02 -1.521241806679e+02 -1.212483694124e+02 + 3.416499020476e+02 -1.503176501697e+02 -1.221949506280e+02 + 3.429579070018e+02 -1.485173916489e+02 -1.231760116875e+02 + 3.442846308078e+02 -1.467240766037e+02 -1.241927376371e+02 + 3.456305345911e+02 -1.449383051096e+02 -1.252463344828e+02 + 3.469960121037e+02 -1.431606051322e+02 -1.263379921427e+02 + 3.483813534938e+02 -1.413914256276e+02 -1.274688323914e+02 + 3.497867099191e+02 -1.396311387488e+02 -1.286398448907e+02 + 3.512120604633e+02 -1.378800509510e+02 -1.298518347601e+02 + 3.526571808638e+02 -1.361384049186e+02 -1.311053858316e+02 + 3.541216213551e+02 -1.344063883621e+02 -1.324008347291e+02 + 3.556047001176e+02 -1.326841573469e+02 -1.337382573192e+02 + 3.571055158545e+02 -1.309718671150e+02 -1.351174704950e+02 + 3.586229724114e+02 -1.292697039430e+02 -1.365380464279e+02 + 3.601558025619e+02 -1.275779158056e+02 -1.379993330213e+02 + 3.617025899163e+02 -1.258968391442e+02 -1.395004810926e+02 + 3.632617844422e+02 -1.242269204871e+02 -1.410404890958e+02 + 3.648317101636e+02 -1.225687136151e+02 -1.426182267944e+02 + 3.664106050033e+02 -1.209228880012e+02 -1.442324750490e+02 + 3.679966619192e+02 -1.192901919478e+02 -1.458819442894e+02 + 3.695880643319e+02 -1.176714302968e+02 -1.475652852039e+02 + 3.711830142180e+02 -1.160674360179e+02 -1.492810877438e+02 + 3.727797535828e+02 -1.144790656399e+02 -1.510278843128e+02 + 3.743765747878e+02 -1.129072141495e+02 -1.528041500756e+02 + 3.759718207679e+02 -1.113528374818e+02 -1.546082922802e+02 + 3.775638828823e+02 -1.098169745994e+02 -1.564386256907e+02 + 3.791512002035e+02 -1.083007538916e+02 -1.582933333478e+02 + 3.807322560858e+02 -1.068053715631e+02 -1.601704184762e+02 + 3.823055719401e+02 -1.053320472253e+02 -1.620676508903e+02 + 3.838697113367e+02 -1.038819925057e+02 -1.639825303555e+02 + 3.854232930914e+02 -1.024563682357e+02 -1.659122868121e+02 + 3.869649920440e+02 -1.010562495330e+02 -1.678539004481e+02 + 3.884935396649e+02 -9.968260988370e+01 -1.698041468857e+02 + 3.900077450788e+02 -9.833630997044e+01 -1.717596464146e+02 + 3.915065173472e+02 -9.701809183180e+01 -1.737169183661e+02 + 3.929888807948e+02 -9.572858419495e+01 -1.756724515192e+02 + 3.944539908677e+02 -9.446830737010e+01 -1.776227944101e+02 + 3.959011562639e+02 -9.323767098522e+01 -1.795646378141e+02 + 3.973298609302e+02 -9.203697150681e+01 -1.814948554898e+02 + 3.987397787013e+02 -9.086639309226e+01 -1.834105089478e+02 + 4.001307849034e+02 -8.972601083370e+01 -1.853088434051e+02 + 4.015029517597e+02 -8.861579971838e+01 -1.871872644843e+02 + 4.028565257808e+02 -8.753567932914e+01 -1.890433212958e+02 + 4.041918980998e+02 -8.648559542314e+01 -1.908747166956e+02 + 4.055095786592e+02 -8.546560556717e+01 -1.926793138267e+02 + 4.068101653200e+02 -8.447595144825e+01 -1.944551288562e+02 + 4.080943051532e+02 -8.351711762618e+01 -1.962003194500e+02 + 4.093626508655e+02 -8.258987342310e+01 -1.979131767076e+02 + 4.106158193758e+02 -8.169529193429e+01 -1.995921152088e+02 + 4.118543578090e+02 -8.083473734957e+01 -2.012356525814e+02 + 4.130787187456e+02 -8.000982435178e+01 -2.028423856812e+02 + 4.142892448971e+02 -7.922237787544e+01 -2.044109745872e+02 + 4.154861611450e+02 -7.847442089234e+01 -2.059401281971e+02 + 4.166695668695e+02 -7.776817105083e+01 -2.074285984874e+02 + 4.178394180106e+02 -7.710601692127e+01 -2.088751590056e+02 + 4.189954842950e+02 -7.649047721890e+01 -2.102785606507e+02 + 4.201373183271e+02 -7.592409852034e+01 -2.116374704775e+02 + 4.212642341080e+02 -7.540931346494e+01 -2.129504067747e+02 + 4.223752855395e+02 -7.494829779056e+01 -2.142156809260e+02 + 4.234692411481e+02 -7.454284639903e+01 -2.154313532795e+02 + 4.245445584641e+02 -7.419427300871e+01 -2.165952260197e+02 + 4.255993575267e+02 -7.390333352302e+01 -2.177048759806e+02 + 4.266313883272e+02 -7.367017375573e+01 -2.187577004798e+02 + 4.276379902730e+02 -7.349429905558e+01 -2.197509518723e+02 + 4.286160473368e+02 -7.337455570326e+01 -2.206817633168e+02 + 4.295619427323e+02 -7.330911063479e+01 -2.215471772987e+02 + 4.304715218026e+02 -7.329542737767e+01 -2.223441912889e+02 + 4.313400748232e+02 -7.333025389017e+01 -2.230698185112e+02 + 4.321623276676e+02 -7.340962375020e+01 -2.237211501588e+02 + 4.329324197656e+02 -7.352884580162e+01 -2.242954160567e+02 + 4.336438707026e+02 -7.368248192280e+01 -2.247900283003e+02 + 4.342895594658e+02 -7.386431361043e+01 -2.252025884597e+02 + 4.348617333487e+02 -7.406730338621e+01 -2.255308751806e+02 + 4.353520241127e+02 -7.428355583117e+01 -2.257728356904e+02 + 4.357514582980e+02 -7.450430274481e+01 -2.259265963781e+02 + 4.360504678506e+02 -7.471993105307e+01 -2.259905013836e+02 + 4.362388999991e+02 -7.492003900016e+01 -2.259631799990e+02 + 4.363060300000e+02 -7.509350599999e+01 -2.258436300000e+02 diff --git a/yRes1.txt b/yRes1.txt new file mode 100644 index 0000000000000000000000000000000000000000..f88f5ce12571dce9e5a93612b710b66c9dc0e6dd --- /dev/null +++ b/yRes1.txt @@ -0,0 +1,501 @@ + 3.189135400000e+02 -1.872815100000e+02 -1.117029900000e+02 + 3.189135400000e+02 -1.872815100000e+02 -1.117029900000e+02 + 3.189135400000e+02 -1.872815100000e+02 -1.117029900000e+02 + 3.190634023728e+02 -1.870987692883e+02 -1.118203956939e+02 + 3.193745946187e+02 -1.866939423348e+02 -1.120460618483e+02 + 3.198059647255e+02 -1.860878900612e+02 -1.123268741796e+02 + 3.203054442717e+02 -1.853210267457e+02 -1.126057948956e+02 + 3.208299441479e+02 -1.844337230274e+02 -1.128408646914e+02 + 3.213526580114e+02 -1.834580297140e+02 -1.130113831855e+02 + 3.218602649503e+02 -1.824170631237e+02 -1.131126628814e+02 + 3.223453393978e+02 -1.813282348414e+02 -1.131455063329e+02 + 3.228035524945e+02 -1.802046760170e+02 -1.131125339168e+02 + 3.232355372530e+02 -1.790545050359e+02 -1.130208727566e+02 + 3.236472743401e+02 -1.778810957418e+02 -1.128830589654e+02 + 3.240480235767e+02 -1.766847646184e+02 -1.127147988063e+02 + 3.244480686349e+02 -1.754643921905e+02 -1.125323640101e+02 + 3.248577137007e+02 -1.742180525273e+02 -1.123513924160e+02 + 3.252872246058e+02 -1.729430110689e+02 -1.121868251295e+02 + 3.257466235205e+02 -1.716360375113e+02 -1.120528049055e+02 + 3.262448636986e+02 -1.702943635553e+02 -1.119619774325e+02 + 3.267890054309e+02 -1.689165750064e+02 -1.119247643029e+02 + 3.273841500076e+02 -1.675026453894e+02 -1.119493464002e+02 + 3.280341104093e+02 -1.660531518555e+02 -1.120423465375e+02 + 3.287422053746e+02 -1.645683807737e+02 -1.122096196311e+02 + 3.295115146613e+02 -1.630481453437e+02 -1.124565082926e+02 + 3.303444241342e+02 -1.614925413771e+02 -1.127874052048e+02 + 3.312420606670e+02 -1.599028090865e+02 -1.132052279350e+02 + 3.322042747304e+02 -1.582813576169e+02 -1.137114748764e+02 + 3.332301628097e+02 -1.566309398085e+02 -1.143068706721e+02 + 3.343187182748e+02 -1.549536006940e+02 -1.149921607199e+02 + 3.354691467969e+02 -1.532502341085e+02 -1.157684453378e+02 + 3.366805598861e+02 -1.515213383336e+02 -1.166366122824e+02 + 3.379513771579e+02 -1.497683258254e+02 -1.175963648335e+02 + 3.392791040225e+02 -1.479940116302e+02 -1.186459103005e+02 + 3.406606363419e+02 -1.462019330604e+02 -1.197825990990e+02 + 3.420927905770e+02 -1.443951205774e+02 -1.210040423121e+02 + 3.435726971352e+02 -1.425751984001e+02 -1.223089319413e+02 + 3.450977256147e+02 -1.407427587258e+02 -1.236966296479e+02 + 3.466649970926e+02 -1.388988944991e+02 -1.251656224199e+02 + 3.482710554067e+02 -1.370462556747e+02 -1.267125007757e+02 + 3.499120187805e+02 -1.351886953551e+02 -1.283324464071e+02 + 3.515840299880e+02 -1.333300402397e+02 -1.300207292840e+02 + 3.532837024870e+02 -1.314728628976e+02 -1.317742396014e+02 + 3.550082016997e+02 -1.296182611080e+02 -1.335916864918e+02 + 3.567547814632e+02 -1.277671365015e+02 -1.354717169457e+02 + 3.585202627933e+02 -1.259216480137e+02 -1.374108143408e+02 + 3.603010163867e+02 -1.240853358137e+02 -1.394031451925e+02 + 3.620933930959e+02 -1.222621124425e+02 -1.414420971675e+02 + 3.638942901413e+02 -1.204549665121e+02 -1.435222836857e+02 + 3.657014481725e+02 -1.186652711649e+02 -1.456406261049e+02 + 3.675130450097e+02 -1.168935474238e+02 -1.477951320287e+02 + 3.693268964131e+02 -1.151410412758e+02 -1.499823741180e+02 + 3.711401681733e+02 -1.134103444959e+02 -1.521965020958e+02 + 3.729498147726e+02 -1.117047079472e+02 -1.544303427121e+02 + 3.747533901988e+02 -1.100268013666e+02 -1.566773631901e+02 + 3.765497278741e+02 -1.083777154853e+02 -1.589332497877e+02 + 3.783386895739e+02 -1.067571901362e+02 -1.611956282561e+02 + 3.801198739310e+02 -1.051651596300e+02 -1.634618076099e+02 + 3.818916958964e+02 -1.036029062869e+02 -1.657271204626e+02 + 3.836517287578e+02 -1.020728353851e+02 -1.679853706024e+02 + 3.853978930437e+02 -1.005775053844e+02 -1.702304982090e+02 + 3.871297922509e+02 -9.911866250661e+01 -1.724583082607e+02 + 3.888490113218e+02 -9.769692959739e+01 -1.746669551578e+02 + 3.905574066848e+02 -9.631254987685e+01 -1.768552518470e+02 + 3.922550249849e+02 -9.496636885831e+01 -1.790205485501e+02 + 3.939398735941e+02 -9.366008330170e+01 -1.811584329849e+02 + 3.956093121943e+02 -9.239604495024e+01 -1.832639205780e+02 + 3.972619695159e+02 -9.117719437063e+01 -1.853329839763e+02 + 3.988989316969e+02 -9.000704617060e+01 -1.873634766924e+02 + 4.005225737433e+02 -8.888913422843e+01 -1.893544628889e+02 + 4.021337988945e+02 -8.782603683415e+01 -1.913044978332e+02 + 4.037308214224e+02 -8.681901612208e+01 -1.932108139094e+02 + 4.053101255282e+02 -8.586864216402e+01 -1.950697097240e+02 + 4.068682243780e+02 -8.497610361506e+01 -1.968771842477e+02 + 4.084031201875e+02 -8.414451726473e+01 -1.986293274451e+02 + 4.099143301118e+02 -8.337856355454e+01 -2.003225612508e+02 + 4.114012369391e+02 -8.268183775910e+01 -2.019539065883e+02 + 4.128617057405e+02 -8.205476053347e+01 -2.035211106539e+02 + 4.142920564647e+02 -8.149494539315e+01 -2.050223260115e+02 + 4.156874042155e+02 -8.099893917552e+01 -2.064551345019e+02 + 4.170415740457e+02 -8.056405655701e+01 -2.078150602462e+02 + 4.183471141280e+02 -8.018911614120e+01 -2.090950463522e+02 + 4.195964288237e+02 -7.987306503602e+01 -2.102877592386e+02 + 4.207832141935e+02 -7.961294534819e+01 -2.113887291238e+02 + 4.219025902781e+02 -7.940339210846e+01 -2.123969295986e+02 + 4.229503018597e+02 -7.923735599418e+01 -2.133134097239e+02 + 4.239221907200e+02 -7.910701512247e+01 -2.141400164135e+02 + 4.248145370011e+02 -7.900457334852e+01 -2.148790424917e+02 + 4.256250631431e+02 -7.892294026658e+01 -2.155336092198e+02 + 4.263538409615e+02 -7.885619442184e+01 -2.161081398289e+02 + 4.270034939672e+02 -7.879972793226e+01 -2.166084280323e+02 + 4.275787202299e+02 -7.875012277884e+01 -2.170412831906e+02 + 4.280855356756e+02 -7.870490557599e+01 -2.174140108400e+02 + 4.285305724660e+02 -7.866229980174e+01 -2.177339483553e+02 + 4.289205647662e+02 -7.862102683448e+01 -2.180081389600e+02 + 4.292620221155e+02 -7.858016217226e+01 -2.182431388578e+02 + 4.295610448279e+02 -7.853903614693e+01 -2.184449228565e+02 + 4.298232340481e+02 -7.849716613743e+01 -2.186188540919e+02 + 4.300536605249e+02 -7.845420986642e+01 -2.187696922387e+02 + 4.302568680156e+02 -7.840993253697e+01 -2.189016232578e+02 + 4.304368961056e+02 -7.836418306815e+01 -2.190183001150e+02 + 4.305973131327e+02 -7.831687640008e+01 -2.191228881133e+02 + 4.307412536285e+02 -7.826797994220e+01 -2.192181111108e+02 + 4.308714569768e+02 -7.821750293058e+01 -2.193062965064e+02 + 4.309903053844e+02 -7.816548789193e+01 -2.193894178425e+02 + 4.310998601021e+02 -7.811200368132e+01 -2.194691344562e+02 + 4.312018953454e+02 -7.805713973091e+01 -2.195468279554e+02 + 4.312979296707e+02 -7.800100125573e+01 -2.196236354972e+02 + 4.313892547487e+02 -7.794370523331e+01 -2.197004799664e+02 + 4.314769615840e+02 -7.788537702105e+01 -2.197780972116e+02 + 4.315619642913e+02 -7.782614750731e+01 -2.198570605321e+02 + 4.316450215744e+02 -7.776615071412e+01 -2.199378026214e+02 + 4.317267560665e+02 -7.770552178586e+01 -2.200206351731e+02 + 4.318076716962e+02 -7.764439530957e+01 -2.201057663507e+02 + 4.318881692424e+02 -7.758290392168e+01 -2.201933163131e+02 + 4.319685602337e+02 -7.752117716258e+01 -2.202833309762e+02 + 4.320490793400e+02 -7.745934054630e+01 -2.203757941784e+02 + 4.321298953957e+02 -7.739751481651e+01 -2.204706384050e+02 + 4.322111211835e+02 -7.733581536425e+01 -2.205677542149e+02 + 4.322928220961e+02 -7.727435178549e+01 -2.206669985003e+02 + 4.323750237877e+02 -7.721322755948e+01 -2.207682016987e+02 + 4.324577189143e+02 -7.715253983113e+01 -2.208711740662e+02 + 4.325408730545e+02 -7.709237928259e+01 -2.209757111129e+02 + 4.326244298954e+02 -7.703283008088e+01 -2.210815982875e+02 + 4.327083157589e+02 -7.697396989015e+01 -2.211886149957e+02 + 4.327924435381e+02 -7.691586993835e+01 -2.212965380244e+02 + 4.328767161072e+02 -7.685859512933e+01 -2.214051444393e+02 + 4.329610292605e+02 -7.680220419245e+01 -2.215142140161e+02 + 4.330452742335e+02 -7.674674986289e+01 -2.216235312596e+02 + 4.331293398518e+02 -7.669227908641e+01 -2.217328870596e+02 + 4.332131143506e+02 -7.663883324332e+01 -2.218420800280e+02 + 4.332964869018e+02 -7.658644838707e+01 -2.219509175561e+02 + 4.333793488842e+02 -7.653515549331e+01 -2.220592166280e+02 + 4.334615949264e+02 -7.648498071598e+01 -2.221668044219e+02 + 4.335431237503e+02 -7.643594564741e+01 -2.222735187271e+02 + 4.336238388411e+02 -7.638806757990e+01 -2.223792082032e+02 + 4.337036489639e+02 -7.634135976638e+01 -2.224837325025e+02 + 4.337824685495e+02 -7.629583167856e+01 -2.225869622776e+02 + 4.338602179642e+02 -7.625148926076e+01 -2.226887790902e+02 + 4.339368236824e+02 -7.620833517824e+01 -2.227890752389e+02 + 4.340122183738e+02 -7.616636905895e+01 -2.228877535179e+02 + 4.340863409190e+02 -7.612558772776e+01 -2.229847269202e+02 + 4.341591363645e+02 -7.608598543264e+01 -2.230799182968e+02 + 4.342305558264e+02 -7.604755406206e+01 -2.231732599795e+02 + 4.343005563525e+02 -7.601028335344e+01 -2.232646933771e+02 + 4.343691007491e+02 -7.597416109225e+01 -2.233541685522e+02 + 4.344361573813e+02 -7.593917330157e+01 -2.234416437840e+02 + 4.345016999499e+02 -7.590530442223e+01 -2.235270851234e+02 + 4.345657072531e+02 -7.587253748333e+01 -2.236104659448e+02 + 4.346281629353e+02 -7.584085426333e+01 -2.236917664985e+02 + 4.346890552278e+02 -7.581023544179e+01 -2.237709734671e+02 + 4.347483766846e+02 -7.578066074199e+01 -2.238480795282e+02 + 4.348061239159e+02 -7.575210906457e+01 -2.239230829280e+02 + 4.348622973231e+02 -7.572455861253e+01 -2.239959870638e+02 + 4.349169008349e+02 -7.569798700775e+01 -2.240668000810e+02 + 4.349699416486e+02 -7.567237139943e+01 -2.241355344836e+02 + 4.350214299768e+02 -7.564768856467e+01 -2.242022067588e+02 + 4.350713788013e+02 -7.562391500158e+01 -2.242668370187e+02 + 4.351198036342e+02 -7.560102701516e+01 -2.243294486569e+02 + 4.351667222884e+02 -7.557900079638e+01 -2.243900680220e+02 + 4.352121546568e+02 -7.555781249466e+01 -2.244487241079e+02 + 4.352561225011e+02 -7.553743828424e+01 -2.245054482599e+02 + 4.352986492507e+02 -7.551785442459e+01 -2.245602738984e+02 + 4.353397598114e+02 -7.549903731535e+01 -2.246132362576e+02 + 4.353794803848e+02 -7.548096354591e+01 -2.246643721407e+02 + 4.354178382969e+02 -7.546360994018e+01 -2.247137196909e+02 + 4.354548618374e+02 -7.544695359663e+01 -2.247613181771e+02 + 4.354905801088e+02 -7.543097192401e+01 -2.248072077942e+02 + 4.355250228850e+02 -7.541564267298e+01 -2.248514294776e+02 + 4.355582204795e+02 -7.540094396398e+01 -2.248940247317e+02 + 4.355902036225e+02 -7.538685431146e+01 -2.249350354709e+02 + 4.356210033474e+02 -7.537335264490e+01 -2.249745038730e+02 + 4.356506508851e+02 -7.536041832671e+01 -2.250124722453e+02 + 4.356791775672e+02 -7.534803116726e+01 -2.250489829010e+02 + 4.357066147367e+02 -7.533617143737e+01 -2.250840780468e+02 + 4.357329936662e+02 -7.532481987831e+01 -2.251177996811e+02 + 4.357583454833e+02 -7.531395770952e+01 -2.251501895009e+02 + 4.357827011030e+02 -7.530356663440e+01 -2.251812888184e+02 + 4.358060911659e+02 -7.529362884415e+01 -2.252111384861e+02 + 4.358285459834e+02 -7.528412701985e+01 -2.252397788295e+02 + 4.358500954877e+02 -7.527504433308e+01 -2.252672495879e+02 + 4.358707691880e+02 -7.526636444503e+01 -2.252935898617e+02 + 4.358905961310e+02 -7.525807150438e+01 -2.253188380663e+02 + 4.359096048666e+02 -7.525015014400e+01 -2.253430318927e+02 + 4.359278234180e+02 -7.524258547662e+01 -2.253662082728e+02 + 4.359452792559e+02 -7.523536308955e+01 -2.253884033507e+02 + 4.359619992763e+02 -7.522846903859e+01 -2.254096524588e+02 + 4.359780097823e+02 -7.522188984124e+01 -2.254299900978e+02 + 4.359933364686e+02 -7.521561246917e+01 -2.254494499219e+02 + 4.360080044100e+02 -7.520962434028e+01 -2.254680647264e+02 + 4.360220380515e+02 -7.520391331011e+01 -2.254858664404e+02 + 4.360354612019e+02 -7.519846766300e+01 -2.255028861211e+02 + 4.360482970294e+02 -7.519327610279e+01 -2.255191539522e+02 + 4.360605680597e+02 -7.518832774326e+01 -2.255346992445e+02 + 4.360722961753e+02 -7.518361209838e+01 -2.255495504389e+02 + 4.360835026177e+02 -7.517911907232e+01 -2.255637351111e+02 + 4.360942079902e+02 -7.517483894941e+01 -2.255772799796e+02 + 4.361044322627e+02 -7.517076238387e+01 -2.255902109136e+02 + 4.361141947779e+02 -7.516688038966e+01 -2.256025529441e+02 + 4.361235142583e+02 -7.516318433013e+01 -2.256143302752e+02 + 4.361324088146e+02 -7.515966590788e+01 -2.256255662974e+02 + 4.361408959546e+02 -7.515631715447e+01 -2.256362836014e+02 + 4.361489925934e+02 -7.515313042032e+01 -2.256465039931e+02 + 4.361567150640e+02 -7.515009836465e+01 -2.256562485095e+02 + 4.361640791286e+02 -7.514721394558e+01 -2.256655374345e+02 + 4.361710999904e+02 -7.514447041027e+01 -2.256743903167e+02 + 4.361777923058e+02 -7.514186128530e+01 -2.256828259860e+02 + 4.361841701969e+02 -7.513938036714e+01 -2.256908625717e+02 + 4.361902472647e+02 -7.513702171281e+01 -2.256985175202e+02 + 4.361960366019e+02 -7.513477963077e+01 -2.257058076138e+02 + 4.362015508061e+02 -7.513264867190e+01 -2.257127489881e+02 + 4.362068019936e+02 -7.513062362075e+01 -2.257193571510e+02 + 4.362118018122e+02 -7.512869948700e+01 -2.257256470010e+02 + 4.362165614554e+02 -7.512687149708e+01 -2.257316328449e+02 + 4.362210916751e+02 -7.512513508601e+01 -2.257373284169e+02 + 4.362254027955e+02 -7.512348588950e+01 -2.257427468955e+02 + 4.362295047259e+02 -7.512191973623e+01 -2.257479009225e+02 + 4.362334069743e+02 -7.512043264031e+01 -2.257528026196e+02 + 4.362371186600e+02 -7.511902079406e+01 -2.257574636064e+02 + 4.362406485268e+02 -7.511768056089e+01 -2.257618950172e+02 + 4.362440049553e+02 -7.511640846849e+01 -2.257661075179e+02 + 4.362471959753e+02 -7.511520120217e+01 -2.257701113222e+02 + 4.362502292785e+02 -7.511405559847e+01 -2.257739162081e+02 + 4.362531122296e+02 -7.511296863890e+01 -2.257775315334e+02 + 4.362558518789e+02 -7.511193744396e+01 -2.257809662512e+02 + 4.362584549730e+02 -7.511095926737e+01 -2.257842289250e+02 + 4.362609279664e+02 -7.511003149039e+01 -2.257873277433e+02 + 4.362632770323e+02 -7.510915161648e+01 -2.257902705336e+02 + 4.362655080732e+02 -7.510831726608e+01 -2.257930647769e+02 + 4.362676267311e+02 -7.510752617154e+01 -2.257957176205e+02 + 4.362696383978e+02 -7.510677617233e+01 -2.257982358918e+02 + 4.362715482246e+02 -7.510606521036e+01 -2.258006261105e+02 + 4.362733611317e+02 -7.510539132547e+01 -2.258028945011e+02 + 4.362750818173e+02 -7.510475265117e+01 -2.258050470048e+02 + 4.362767147668e+02 -7.510414741042e+01 -2.258070892912e+02 + 4.362782642614e+02 -7.510357391171e+01 -2.258090267694e+02 + 4.362797343860e+02 -7.510303054519e+01 -2.258108645988e+02 + 4.362811290380e+02 -7.510251577900e+01 -2.258126076995e+02 + 4.362824519344e+02 -7.510202815572e+01 -2.258142607625e+02 + 4.362837066201e+02 -7.510156628903e+01 -2.258158282594e+02 + 4.362848964744e+02 -7.510112886040e+01 -2.258173144517e+02 + 4.362860247185e+02 -7.510071461603e+01 -2.258187233999e+02 + 4.362870944224e+02 -7.510032236382e+01 -2.258200589722e+02 + 4.362881085109e+02 -7.509995097052e+01 -2.258213248530e+02 + 4.362890697703e+02 -7.509959935900e+01 -2.258225245509e+02 + 4.362899808544e+02 -7.509926650563e+01 -2.258236614062e+02 + 4.362908442904e+02 -7.509895143772e+01 -2.258247385990e+02 + 4.362916624841e+02 -7.509865323118e+01 -2.258257591557e+02 + 4.362924377257e+02 -7.509837100818e+01 -2.258267259562e+02 + 4.362931721950e+02 -7.509810393497e+01 -2.258276417407e+02 + 4.362938679659e+02 -7.509785121974e+01 -2.258285091155e+02 + 4.362945270118e+02 -7.509761211068e+01 -2.258293305599e+02 + 4.362951512097e+02 -7.509738589397e+01 -2.258301084313e+02 + 4.362957423449e+02 -7.509717189203e+01 -2.258308449710e+02 + 4.362963021148e+02 -7.509696946170e+01 -2.258315423100e+02 + 4.362968321336e+02 -7.509677799262e+01 -2.258322024735e+02 + 4.362973339355e+02 -7.509659690557e+01 -2.258328273863e+02 + 4.362978089789e+02 -7.509642565104e+01 -2.258334188774e+02 + 4.362982586497e+02 -7.509626370766e+01 -2.258339786843e+02 + 4.362986842647e+02 -7.509611058092e+01 -2.258345084576e+02 + 4.362990870750e+02 -7.509596580176e+01 -2.258350097651e+02 + 4.362994682689e+02 -7.509582892536e+01 -2.258354840955e+02 + 4.362998289751e+02 -7.509569952994e+01 -2.258359328624e+02 + 4.363001702656e+02 -7.509557721557e+01 -2.258363574080e+02 + 4.363004931579e+02 -7.509546160313e+01 -2.258367590063e+02 + 4.363007986184e+02 -7.509535233323e+01 -2.258371388665e+02 + 4.363010875642e+02 -7.509524906522e+01 -2.258374981362e+02 + 4.363013608658e+02 -7.509515147629e+01 -2.258378379043e+02 + 4.363016193493e+02 -7.509505926052e+01 -2.258381592040e+02 + 4.363018637985e+02 -7.509497212804e+01 -2.258384630153e+02 + 4.363020949573e+02 -7.509488980425e+01 -2.258387502681e+02 + 4.363023135311e+02 -7.509481202898e+01 -2.258390218439e+02 + 4.363025201891e+02 -7.509473855581e+01 -2.258392785791e+02 + 4.363027155660e+02 -7.509466915134e+01 -2.258395212663e+02 + 4.363029002637e+02 -7.509460359453e+01 -2.258397506575e+02 + 4.363030748529e+02 -7.509454167606e+01 -2.258399674651e+02 + 4.363032398746e+02 -7.509448319774e+01 -2.258401723647e+02 + 4.363033958417e+02 -7.509442797194e+01 -2.258403659964e+02 + 4.363035432405e+02 -7.509437582101e+01 -2.258405489669e+02 + 4.363036825316e+02 -7.509432657679e+01 -2.258407218512e+02 + 4.363038141517e+02 -7.509428008014e+01 -2.258408851940e+02 + 4.363039385147e+02 -7.509423618041e+01 -2.258410395113e+02 + 4.363040560124e+02 -7.509419473505e+01 -2.258411852918e+02 + 4.363041670163e+02 -7.509415560918e+01 -2.258413229988e+02 + 4.363042718783e+02 -7.509411867516e+01 -2.258414530705e+02 + 4.363043709314e+02 -7.509408381223e+01 -2.258415759224e+02 + 4.363044644913e+02 -7.509405090617e+01 -2.258416919476e+02 + 4.363045528569e+02 -7.509401984891e+01 -2.258418015184e+02 + 4.363046363110e+02 -7.509399053824e+01 -2.258419049874e+02 + 4.363047151216e+02 -7.509396287749e+01 -2.258420026881e+02 + 4.363047895424e+02 -7.509393677524e+01 -2.258420949363e+02 + 4.363048598135e+02 -7.509391214503e+01 -2.258421820311e+02 + 4.363049261620e+02 -7.509388890513e+01 -2.258422642553e+02 + 4.363049888032e+02 -7.509386697823e+01 -2.258423418765e+02 + 4.363050479404e+02 -7.509384629126e+01 -2.258424151480e+02 + 4.363051037665e+02 -7.509382677515e+01 -2.258424843096e+02 + 4.363051564635e+02 -7.509380836459e+01 -2.258425495878e+02 + 4.363052062040e+02 -7.509379099787e+01 -2.258426111972e+02 + 4.363052531511e+02 -7.509377461664e+01 -2.258426693406e+02 + 4.363052974590e+02 -7.509375916578e+01 -2.258427242099e+02 + 4.363053392738e+02 -7.509374459318e+01 -2.258427759865e+02 + 4.363053787334e+02 -7.509373084961e+01 -2.258428248420e+02 + 4.363054159684e+02 -7.509371788857e+01 -2.258428709386e+02 + 4.363054511023e+02 -7.509370566609e+01 -2.258429144299e+02 + 4.363054842517e+02 -7.509369414065e+01 -2.258429554607e+02 + 4.363055155271e+02 -7.509368327303e+01 -2.258429941682e+02 + 4.363055450329e+02 -7.509367302619e+01 -2.258430306820e+02 + 4.363055728675e+02 -7.509366336511e+01 -2.258430651246e+02 + 4.363055991244e+02 -7.509365425674e+01 -2.258430976118e+02 + 4.363056238915e+02 -7.509364566988e+01 -2.258431282530e+02 + 4.363056472523e+02 -7.509363757503e+01 -2.258431571517e+02 + 4.363056692854e+02 -7.509362994435e+01 -2.258431844054e+02 + 4.363056900652e+02 -7.509362275156e+01 -2.258432101067e+02 + 4.363057096620e+02 -7.509361597184e+01 -2.258432343426e+02 + 4.363057281422e+02 -7.509360958175e+01 -2.258432571957e+02 + 4.363057455686e+02 -7.509360355917e+01 -2.258432787437e+02 + 4.363057620005e+02 -7.509359788321e+01 -2.258432990602e+02 + 4.363057774938e+02 -7.509359253415e+01 -2.258433182146e+02 + 4.363057921015e+02 -7.509358749340e+01 -2.258433362726e+02 + 4.363058058734e+02 -7.509358274338e+01 -2.258433532961e+02 + 4.363058188569e+02 -7.509357826752e+01 -2.258433693436e+02 + 4.363058310964e+02 -7.509357405017e+01 -2.258433844703e+02 + 4.363058426341e+02 -7.509357007657e+01 -2.258433987286e+02 + 4.363058535096e+02 -7.509356633279e+01 -2.258434121675e+02 + 4.363058637606e+02 -7.509356280567e+01 -2.258434248335e+02 + 4.363058734224e+02 -7.509355948283e+01 -2.258434367707e+02 + 4.363058825285e+02 -7.509355635255e+01 -2.258434480205e+02 + 4.363058911105e+02 -7.509355340380e+01 -2.258434586219e+02 + 4.363058991981e+02 -7.509355062615e+01 -2.258434686119e+02 + 4.363059068195e+02 -7.509354800979e+01 -2.258434780253e+02 + 4.363059140013e+02 -7.509354554545e+01 -2.258434868951e+02 + 4.363059207686e+02 -7.509354322439e+01 -2.258434952522e+02 + 4.363059271449e+02 -7.509354103835e+01 -2.258435031260e+02 + 4.363059331526e+02 -7.509353897957e+01 -2.258435105441e+02 + 4.363059388129e+02 -7.509353704071e+01 -2.258435175327e+02 + 4.363059441454e+02 -7.509353521485e+01 -2.258435241162e+02 + 4.363059491691e+02 -7.509353349548e+01 -2.258435303179e+02 + 4.363059539016e+02 -7.509353187644e+01 -2.258435361597e+02 + 4.363059583596e+02 -7.509353035194e+01 -2.258435416624e+02 + 4.363059625588e+02 -7.509352891650e+01 -2.258435468452e+02 + 4.363059665142e+02 -7.509352756498e+01 -2.258435517268e+02 + 4.363059702397e+02 -7.509352629251e+01 -2.258435563243e+02 + 4.363059737485e+02 -7.509352509452e+01 -2.258435606542e+02 + 4.363059770532e+02 -7.509352396668e+01 -2.258435647318e+02 + 4.363059801654e+02 -7.509352290492e+01 -2.258435685718e+02 + 4.363059830963e+02 -7.509352190542e+01 -2.258435721878e+02 + 4.363059858563e+02 -7.509352096454e+01 -2.258435755928e+02 + 4.363059884553e+02 -7.509352007889e+01 -2.258435787989e+02 + 4.363059909026e+02 -7.509351924525e+01 -2.258435818177e+02 + 4.363059932070e+02 -7.509351846058e+01 -2.258435846599e+02 + 4.363059953767e+02 -7.509351772205e+01 -2.258435873359e+02 + 4.363059974195e+02 -7.509351702696e+01 -2.258435898553e+02 + 4.363059993427e+02 -7.509351637278e+01 -2.258435922271e+02 + 4.363060011534e+02 -7.509351575712e+01 -2.258435944599e+02 + 4.363060028580e+02 -7.509351517773e+01 -2.258435965618e+02 + 4.363060044627e+02 -7.509351463249e+01 -2.258435985403e+02 + 4.363060059733e+02 -7.509351411941e+01 -2.258436004027e+02 + 4.363060073952e+02 -7.509351363660e+01 -2.258436021558e+02 + 4.363060087336e+02 -7.509351318230e+01 -2.258436038058e+02 + 4.363060099935e+02 -7.509351275483e+01 -2.258436053587e+02 + 4.363060111792e+02 -7.509351235263e+01 -2.258436068203e+02 + 4.363060122952e+02 -7.509351197420e+01 -2.258436081959e+02 + 4.363060133456e+02 -7.509351161816e+01 -2.258436094904e+02 + 4.363060143341e+02 -7.509351128319e+01 -2.258436107087e+02 + 4.363060152644e+02 -7.509351096806e+01 -2.258436118551e+02 + 4.363060161398e+02 -7.509351067159e+01 -2.258436129339e+02 + 4.363060169636e+02 -7.509351039270e+01 -2.258436139491e+02 + 4.363060177389e+02 -7.509351013035e+01 -2.258436149043e+02 + 4.363060184683e+02 -7.509350988356e+01 -2.258436158030e+02 + 4.363060191547e+02 -7.509350965142e+01 -2.258436166486e+02 + 4.363060198005e+02 -7.509350943306e+01 -2.258436174442e+02 + 4.363060204081e+02 -7.509350922768e+01 -2.258436181928e+02 + 4.363060209798e+02 -7.509350903450e+01 -2.258436188970e+02 + 4.363060215176e+02 -7.509350885281e+01 -2.258436195595e+02 + 4.363060220236e+02 -7.509350868193e+01 -2.258436201828e+02 + 4.363060224997e+02 -7.509350852122e+01 -2.258436207690e+02 + 4.363060229475e+02 -7.509350837008e+01 -2.258436213206e+02 + 4.363060233687e+02 -7.509350822795e+01 -2.258436218394e+02 + 4.363060237650e+02 -7.509350809428e+01 -2.258436223273e+02 + 4.363060241377e+02 -7.509350796859e+01 -2.258436227863e+02 + 4.363060244883e+02 -7.509350785039e+01 -2.258436232181e+02 + 4.363060248181e+02 -7.509350773925e+01 -2.258436236241e+02 + 4.363060251283e+02 -7.509350763474e+01 -2.258436240060e+02 + 4.363060254200e+02 -7.509350753647e+01 -2.258436243652e+02 + 4.363060256944e+02 -7.509350744408e+01 -2.258436247030e+02 + 4.363060259524e+02 -7.509350735721e+01 -2.258436250206e+02 + 4.363060261951e+02 -7.509350727553e+01 -2.258436253194e+02 + 4.363060264233e+02 -7.509350719874e+01 -2.258436256003e+02 + 4.363060266379e+02 -7.509350712655e+01 -2.258436258644e+02 + 4.363060268398e+02 -7.509350705868e+01 -2.258436261128e+02 + 4.363060270295e+02 -7.509350699487e+01 -2.258436263464e+02 + 4.363060272080e+02 -7.509350693489e+01 -2.258436265660e+02 + 4.363060273758e+02 -7.509350687851e+01 -2.258436267725e+02 + 4.363060275336e+02 -7.509350682550e+01 -2.258436269667e+02 + 4.363060276819e+02 -7.509350677568e+01 -2.258436271492e+02 + 4.363060278214e+02 -7.509350672884e+01 -2.258436273209e+02 + 4.363060279525e+02 -7.509350668482e+01 -2.258436274822e+02 + 4.363060280758e+02 -7.509350664345e+01 -2.258436276339e+02 + 4.363060281917e+02 -7.509350660456e+01 -2.258436277765e+02 + 4.363060283007e+02 -7.509350656800e+01 -2.258436279106e+02 + 4.363060284031e+02 -7.509350653365e+01 -2.258436280366e+02 + 4.363060284994e+02 -7.509350650136e+01 -2.258436281551e+02 + 4.363060285899e+02 -7.509350647102e+01 -2.258436282664e+02 + 4.363060286750e+02 -7.509350644250e+01 -2.258436283711e+02 + 4.363060287550e+02 -7.509350641570e+01 -2.258436284695e+02 + 4.363060288302e+02 -7.509350639051e+01 -2.258436285620e+02 + 4.363060289009e+02 -7.509350636685e+01 -2.258436286489e+02 + 4.363060289673e+02 -7.509350634461e+01 -2.258436287306e+02 + 4.363060290297e+02 -7.509350632371e+01 -2.258436288074e+02 + 4.363060290884e+02 -7.509350630407e+01 -2.258436288795e+02 + 4.363060291435e+02 -7.509350628562e+01 -2.258436289474e+02 + 4.363060291954e+02 -7.509350626828e+01 -2.258436290111e+02 + 4.363060292441e+02 -7.509350625199e+01 -2.258436290710e+02 + 4.363060292899e+02 -7.509350623668e+01 -2.258436291273e+02 + 4.363060293329e+02 -7.509350622230e+01 -2.258436291802e+02 + 4.363060293733e+02 -7.509350620879e+01 -2.258436292299e+02 + 4.363060294113e+02 -7.509350619609e+01 -2.258436292766e+02 + 4.363060294470e+02 -7.509350618417e+01 -2.258436293205e+02 + 4.363060294805e+02 -7.509350617296e+01 -2.258436293617e+02 + 4.363060295121e+02 -7.509350616244e+01 -2.258436294005e+02 + 4.363060295417e+02 -7.509350615255e+01 -2.258436294369e+02 + 4.363060295695e+02 -7.509350614326e+01 -2.258436294711e+02 + 4.363060295956e+02 -7.509350613453e+01 -2.258436295032e+02 + 4.363060296202e+02 -7.509350612633e+01 -2.258436295334e+02 + 4.363060296433e+02 -7.509350611863e+01 -2.258436295618e+02 + 4.363060296650e+02 -7.509350611140e+01 -2.258436295884e+02 + 4.363060296854e+02 -7.509350610461e+01 -2.258436296135e+02 + 4.363060297045e+02 -7.509350609822e+01 -2.258436296370e+02 + 4.363060297225e+02 -7.509350609223e+01 -2.258436296591e+02 + 4.363060297394e+02 -7.509350608660e+01 -2.258436296799e+02 + 4.363060297552e+02 -7.509350608131e+01 -2.258436296994e+02 + 4.363060297701e+02 -7.509350607635e+01 -2.258436297177e+02 + 4.363060297841e+02 -7.509350607168e+01 -2.258436297349e+02 + 4.363060297973e+02 -7.509350606730e+01 -2.258436297511e+02 + 4.363060298097e+02 -7.509350606319e+01 -2.258436297662e+02 + 4.363060298213e+02 -7.509350605932e+01 -2.258436297805e+02 + 4.363060298322e+02 -7.509350605569e+01 -2.258436297939e+02 + 4.363060298424e+02 -7.509350605229e+01 -2.258436298065e+02 + 4.363060298520e+02 -7.509350604909e+01 -2.258436298183e+02 + 4.363060298611e+02 -7.509350604608e+01 -2.258436298294e+02 + 4.363060298695e+02 -7.509350604326e+01 -2.258436298398e+02 + 4.363060298775e+02 -7.509350604061e+01 -2.258436298496e+02 + 4.363060298850e+02 -7.509350603812e+01 -2.258436298588e+02 + 4.363060298920e+02 -7.509350603579e+01 -2.258436298674e+02 + 4.363060298986e+02 -7.509350603359e+01 -2.258436298755e+02 + 4.363060299048e+02 -7.509350603153e+01 -2.258436298831e+02 + 4.363060299106e+02 -7.509350602960e+01 -2.258436298903e+02 + 4.363060299161e+02 -7.509350602778e+01 -2.258436298970e+02 + 4.363060299212e+02 -7.509350602608e+01 -2.258436299033e+02 + 4.363060299261e+02 -7.509350602448e+01 -2.258436299092e+02 + 4.363060299306e+02 -7.509350602297e+01 -2.258436299148e+02 + 4.363060299348e+02 -7.509350602156e+01 -2.258436299200e+02 + 4.363060299388e+02 -7.509350602024e+01 -2.258436299249e+02 + 4.363060299426e+02 -7.509350601899e+01 -2.258436299295e+02 + 4.363060299461e+02 -7.509350601783e+01 -2.258436299338e+02 + 4.363060299494e+02 -7.509350601673e+01 -2.258436299379e+02 + 4.363060299525e+02 -7.509350601570e+01 -2.258436299417e+02 + 4.363060299554e+02 -7.509350601473e+01 -2.258436299453e+02 + 4.363060299581e+02 -7.509350601383e+01 -2.258436299486e+02 + 4.363060299607e+02 -7.509350601298e+01 -2.258436299518e+02 + 4.363060299631e+02 -7.509350601218e+01 -2.258436299548e+02 + 4.363060299654e+02 -7.509350601143e+01 -2.258436299575e+02 + 4.363060299675e+02 -7.509350601072e+01 -2.258436299601e+02 + 4.363060299695e+02 -7.509350601006e+01 -2.258436299626e+02 + 4.363060299714e+02 -7.509350600944e+01 -2.258436299649e+02 + 4.363060299731e+02 -7.509350600886e+01 -2.258436299670e+02 + 4.363060299748e+02 -7.509350600831e+01 -2.258436299691e+02 + 4.363060299763e+02 -7.509350600780e+01 -2.258436299710e+02 + 4.363060299778e+02 -7.509350600732e+01 -2.258436299728e+02 + 4.363060299792e+02 -7.509350600687e+01 -2.258436299744e+02 + 4.363060299804e+02 -7.509350600644e+01 -2.258436299760e+02 + 4.363060299816e+02 -7.509350600604e+01 -2.258436299775e+02 + 4.363060299828e+02 -7.509350600567e+01 -2.258436299789e+02 + 4.363060299838e+02 -7.509350600532e+01 -2.258436299802e+02 + 4.363060299848e+02 -7.509350600499e+01 -2.258436299814e+02 + 4.363060299858e+02 -7.509350600468e+01 -2.258436299825e+02 + 4.363060299866e+02 -7.509350600439e+01 -2.258436299836e+02 + 4.363060299875e+02 -7.509350600412e+01 -2.258436299846e+02 + 4.363060299882e+02 -7.509350600387e+01 -2.258436299856e+02 + 4.363060299890e+02 -7.509350600363e+01 -2.258436299865e+02 + 4.363060299896e+02 -7.509350600340e+01 -2.258436299873e+02 + 4.363060299903e+02 -7.509350600319e+01 -2.258436299881e+02 + 4.363060299909e+02 -7.509350600299e+01 -2.258436299888e+02 + 4.363060299914e+02 -7.509350600281e+01 -2.258436299895e+02 + 4.363060299920e+02 -7.509350600263e+01 -2.258436299901e+02 + 4.363060299925e+02 -7.509350600247e+01 -2.258436299908e+02 + 4.363060299929e+02 -7.509350600232e+01 -2.258436299913e+02 + 4.363060299934e+02 -7.509350600217e+01 -2.258436299919e+02 + 4.363060299938e+02 -7.509350600204e+01 -2.258436299924e+02 + 4.363060299941e+02 -7.509350600191e+01 -2.258436299928e+02 + 4.363060299945e+02 -7.509350600179e+01 -2.258436299933e+02 + 4.363060299948e+02 -7.509350600168e+01 -2.258436299937e+02 + 4.363060299952e+02 -7.509350600158e+01 -2.258436299941e+02 + 4.363060299955e+02 -7.509350600148e+01 -2.258436299944e+02 + 4.363060299957e+02 -7.509350600139e+01 -2.258436299948e+02 + 4.363060299960e+02 -7.509350600130e+01 -2.258436299951e+02 + 4.363060299962e+02 -7.509350600122e+01 -2.258436299954e+02 + 4.363060299965e+02 -7.509350600114e+01 -2.258436299957e+02 + 4.363060299967e+02 -7.509350600107e+01 -2.258436299960e+02 + 4.363060299969e+02 -7.509350600100e+01 -2.258436299962e+02 + 4.363060299971e+02 -7.509350600094e+01 -2.258436299964e+02