From c33f52e81bdecb6832853c49e6fa9eee6609de6b Mon Sep 17 00:00:00 2001 From: Giovanni La Mura <giovanni.lamura@inaf.it> Date: Tue, 12 Dec 2023 20:05:48 +0100 Subject: [PATCH] Use regular expressions to parse input --- src/libnptm/Configuration.cpp | 337 +++++++++++++++++++++++----------- 1 file changed, 234 insertions(+), 103 deletions(-) diff --git a/src/libnptm/Configuration.cpp b/src/libnptm/Configuration.cpp index 66954724..517e7ea9 100644 --- a/src/libnptm/Configuration.cpp +++ b/src/libnptm/Configuration.cpp @@ -4,6 +4,7 @@ #include <cmath> #include <cstdio> #include <fstream> +#include <regex> #include <string> #include "../include/List.h" #include "../include/Parsers.h" @@ -59,6 +60,8 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(string file_name) { int num_lines = 0; int last_read_line = 0; string *file_lines; + string str_target, str_num; + smatch m; try { file_lines = load_file(file_name, &num_lines); } catch (exception &ex) { @@ -66,19 +69,44 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(string file_name) { } int _nsph = 0, _lm = 0, _in_pol = 0, _npnt = 0, _npntts = 0, _isam = 0; int _li = 0, _le = 0, _mxndm = 0, _iavm = 0; - sscanf(file_lines[last_read_line].c_str(), " %d", &_nsph); + regex re = regex("-?[0-9]+"); + str_target = file_lines[last_read_line++]; + regex_search(str_target, m, re); + //sscanf(file_lines[last_read_line].c_str(), " %d", &_nsph); + _nsph = stoi(m.str()); if (_nsph == 1) { - sscanf( - file_lines[last_read_line++].c_str(), - " %*d %d %d %d %d %d", - &_lm, &_in_pol, &_npnt, &_npntts, &_isam - ); + //sscanf( + // file_lines[last_read_line++].c_str(), + // " %*d %d %d %d %d %d", + // &_lm, &_in_pol, &_npnt, &_npntts, &_isam + //); + for (int ri = 0; ri < 5; ri++) { + str_target = m.suffix().str(); + regex_search(str_target, m, re); + if (ri == 0) _lm = stoi(m.str()); + if (ri == 1) _in_pol = stoi(m.str()); + if (ri == 2) _npnt = stoi(m.str()); + if (ri == 3) _npntts = stoi(m.str()); + if (ri == 4) _isam = stoi(m.str()); + } } else { - sscanf( - file_lines[last_read_line++].c_str(), - " %*d %d %d %d %d %d %d %d %d", - &_li, &_le, &_mxndm, &_in_pol, &_npnt, &_npntts, &_iavm, &_isam - ); + //sscanf( + // file_lines[last_read_line++].c_str(), + // " %*d %d %d %d %d %d %d %d %d", + // &_li, &_le, &_mxndm, &_in_pol, &_npnt, &_npntts, &_iavm, &_isam + //); + for (int ri = 0; ri < 8; ri++) { + str_target = m.suffix().str(); + regex_search(str_target, m, re); + if (ri == 0) _li = stoi(m.str()); + if (ri == 1) _le = stoi(m.str()); + if (ri == 2) _mxndm = stoi(m.str()); + if (ri == 3) _in_pol = stoi(m.str()); + if (ri == 4) _npnt = stoi(m.str()); + if (ri == 5) _npntts = stoi(m.str()); + if (ri == 6) _iavm = stoi(m.str()); + if (ri == 7) _isam = stoi(m.str()); + } } double *x, *y, *z; x = new double[_nsph]; @@ -90,56 +118,56 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(string file_name) { z[0] = 0.0; } else { for (int i = 0; i < _nsph; i++) { - double sph_x, sph_y, sph_z; - int sph_x_exp, sph_y_exp, sph_z_exp; - sscanf( - file_lines[last_read_line++].c_str(), - " %lf D%d %lf D%d %lf D%d", - &sph_x, &sph_x_exp, &sph_y, &sph_y_exp, &sph_z, &sph_z_exp - ); - x[i] = sph_x * pow(10.0, 1.0 * sph_x_exp); - y[i] = sph_y * pow(10.0, 1.0 * sph_y_exp); - z[i] = sph_z * pow(10.0, 1.0 * sph_z_exp); + str_target = file_lines[last_read_line++]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + for (int ri = 0; ri < 3; ri++) { + regex_search(str_target, m, re); + str_num = regex_replace(m.str(), regex("D"), "e"); + str_num = regex_replace(str_num, regex("d"), "e"); + if (ri == 0) x[i] = stod(str_num); + if (ri == 1) y[i] = stod(str_num); + if (ri == 2) z[i] = stod(str_num); + str_target = m.suffix().str(); + } } } double in_th_start, in_th_end, in_th_step, sc_th_start, sc_th_end, sc_th_step; - int in_th_start_exp, in_th_end_exp, in_th_step_exp, sc_th_start_exp, sc_th_end_exp, sc_th_step_exp; - sscanf( - file_lines[last_read_line++].c_str(), - " %lf D%d %lf D%d %lf D%d %lf D%d %lf D%d %lf D%d", - &in_th_start, &in_th_start_exp, - &in_th_step, &in_th_step_exp, - &in_th_end, &in_th_end_exp, - &sc_th_start, &sc_th_start_exp, - &sc_th_step, &sc_th_step_exp, - &sc_th_end, &sc_th_end_exp - ); - in_th_start *= pow(10.0, 1.0 * in_th_start_exp); - in_th_step *= pow(10.0, 1.0 * in_th_step_exp); - in_th_end *= pow(10.0, 1.0 * in_th_end_exp); - sc_th_start *= pow(10.0, 1.0 * sc_th_start_exp); - sc_th_step *= pow(10.0, 1.0 * sc_th_step_exp); - sc_th_end *= pow(10.0, 1.0 * sc_th_end_exp); + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + str_target = file_lines[last_read_line++]; + for (int ri = 0; ri < 6; ri++) { + regex_search(str_target, m, re); + str_num = regex_replace(m.str(), regex("D"), "e"); + str_num = regex_replace(str_num, regex("d"), "e"); + if (ri == 0) in_th_start = stod(str_num); + if (ri == 1) in_th_step = stod(str_num); + if (ri == 2) in_th_end = stod(str_num); + if (ri == 3) sc_th_start = stod(str_num); + if (ri == 4) sc_th_step = stod(str_num); + if (ri == 5) sc_th_end = stod(str_num); + str_target = m.suffix().str(); + } + double in_ph_start, in_ph_end, in_ph_step, sc_ph_start, sc_ph_end, sc_ph_step; - int in_ph_start_exp, in_ph_end_exp, in_ph_step_exp, sc_ph_start_exp, sc_ph_end_exp, sc_ph_step_exp; - sscanf( - file_lines[last_read_line++].c_str(), - " %lf D%d %lf D%d %lf D%d %lf D%d %lf D%d %lf D%d", - &in_ph_start, &in_ph_start_exp, - &in_ph_step, &in_ph_step_exp, - &in_ph_end, &in_ph_end_exp, - &sc_ph_start, &sc_ph_start_exp, - &sc_ph_step, &sc_ph_step_exp, - &sc_ph_end, &sc_ph_end_exp - ); - in_ph_start *= pow(10.0, 1.0 * in_ph_start_exp); - in_ph_step *= pow(10.0, 1.0 * in_ph_step_exp); - in_ph_end *= pow(10.0, 1.0 * in_ph_end_exp); - sc_ph_start *= pow(10.0, 1.0 * sc_ph_start_exp); - sc_ph_step *= pow(10.0, 1.0 * sc_ph_step_exp); - sc_ph_end *= pow(10.0, 1.0 * sc_ph_end_exp); + str_target = file_lines[last_read_line++]; + for (int ri = 0; ri < 6; ri++) { + regex_search(str_target, m, re); + str_num = regex_replace(m.str(), regex("D"), "e"); + str_num = regex_replace(str_num, regex("d"), "e"); + if (ri == 0) in_ph_start = stod(str_num); + if (ri == 1) in_ph_step = stod(str_num); + if (ri == 2) in_ph_end = stod(str_num); + if (ri == 3) sc_ph_start = stod(str_num); + if (ri == 4) sc_ph_step = stod(str_num); + if (ri == 5) sc_ph_end = stod(str_num); + str_target = m.suffix().str(); + } + int _jwtm; - sscanf(file_lines[last_read_line++].c_str(), " %d", &_jwtm); + re = regex("[0-9]+"); + str_target = file_lines[last_read_line++]; + regex_search(str_target, m, re); + //sscanf(file_lines[last_read_line].c_str(), " %d", &_nsph); + _jwtm = stoi(m.str()); GeometryConfiguration *conf = new GeometryConfiguration( _nsph, _lm, _in_pol, _npnt, _npntts, _isam, _li, _le, _mxndm, _iavm, @@ -170,7 +198,6 @@ ScattererConfiguration::ScattererConfiguration( double x ) { number_of_spheres = nsph; - scale_vec = scale_vector; number_of_scales = nxi; reference_variable_name = variable_name; iog_vec = iog_vector; @@ -183,6 +210,20 @@ ScattererConfiguration::ScattererConfiguration( exdc = ex; wp = w; xip = x; + if (variable_name == "XIV") scale_vec = scale_vector; + else { + scale_vec = new double[number_of_scales](); + const double pi2 = 2.0 * acos(-1.0); + const double evc = 6.5821188e-16; + for (int si = 0; si < number_of_scales; si++) { + double value = scale_vector[si]; + if (variable_name.compare("WNS") == 0) value *= (3.0e8 / wp); + else if (variable_name.compare("WLS") == 0) value = pi2 / value * 3.0e8 / wp; + else if (variable_name.compare("PUS") == 0) value /= wp; + else if (variable_name.compare("EVS") == 0) value /= (evc * wp); + scale_vec[si] = value; + } + } } ScattererConfiguration::~ScattererConfiguration() { @@ -244,7 +285,10 @@ ScattererConfiguration* ScattererConfiguration::from_binary(string file_name, st ros_vector = new double[nsph](); rcf_vector = new double*[nsph]; for (int i115 = 1; i115 <= nsph; i115++) { - if (iog[i115 - 1] < i115) continue; + if (iog[i115 - 1] < i115) { + rcf_vector[i115 - 1] = new double[1](); + continue; + } input.read(reinterpret_cast<char *>(&(nshl_vector[i115 - 1])), sizeof(int)); input.read(reinterpret_cast<char *>(&(ros_vector[i115 - 1])), sizeof(double)); int nsh = nshl_vector[i115 - 1]; @@ -310,6 +354,8 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam int num_lines = 0; int last_read_line = 0; string *file_lines; + regex re; + smatch m; try { file_lines = load_file(dedfb_file_name, &num_lines); } catch (exception &ex) { @@ -317,22 +363,38 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam } int nsph, ies; int max_ici = 0; - sscanf(file_lines[last_read_line].c_str(), " %d %d", &nsph, &ies); + re = regex("[0-9]+"); + string str_target = file_lines[last_read_line]; + for (int ri = 0; ri < 2; ri++) { + regex_search(str_target, m, re); + if (ri == 0) nsph = stoi(m.str()); + if (ri == 1) ies = stoi(m.str()); + str_target = m.suffix().str(); + } if (ies != 0) ies = 1; double _exdc, _wp, _xip; - int exdc_exp, wp_exp, xip_exp; + str_target = file_lines[++last_read_line]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + for (int ri = 0; ri < 3; ri++) { + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + if (ri == 0) _exdc = stod(str_number); + if (ri == 1) _wp = stod(str_number); + if (ri == 2) _xip = stod(str_number); + str_target = m.suffix().str(); + } int _idfc, nxi, instpc, insn; - sscanf( - file_lines[++last_read_line].c_str(), - " %lf D%d %lf D%d %lf D%d %d %d %d %d", - &_exdc, &exdc_exp, - &_wp, &wp_exp, - &_xip, &xip_exp, - &_idfc, &nxi, &instpc, &insn - ); - _exdc *= pow(10.0, 1.0 * 1.0 * exdc_exp); - _wp *= pow(10.0, 1.0 * wp_exp); - _xip *= pow(10.0, 1.0 * xip_exp); + re = regex("-?[0-9]+"); + for (int ri = 0; ri < 4; ri++) { + regex_search(str_target, m, re); + if (ri == 0) _idfc = stoi(m.str()); + if (ri == 1) nxi = stoi(m.str()); + if (ri == 2) instpc = stoi(m.str()); + if (ri == 3) insn = stoi(m.str()); + str_target = m.suffix().str(); + } double *variable_vector; string variable_name; @@ -341,23 +403,41 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam variable_name = "XIV"; if (instpc < 1) { // The variable vector is explicitly defined. double xi; - int xi_exp; + //int xi_exp; List<double> xi_vector; - sscanf(file_lines[++last_read_line].c_str(), " %9lE D%d", &xi, &xi_exp); - xi *= pow(10.0, 1.0 * xi_exp); + //sscanf(file_lines[++last_read_line].c_str(), " %9lE D%d", &xi, &xi_exp); + str_target = file_lines[++last_read_line]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + xi = stod(str_number); xi_vector.set(0, xi); for (int jxi310 = 1; jxi310 < nxi; jxi310++) { - sscanf(file_lines[++last_read_line].c_str(), " %9lE D%d", &xi, &xi_exp); - xi *= pow(10.0, 1.0 * xi_exp); + str_target = file_lines[++last_read_line]; + regex_search(str_target, m, re); + str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + xi = stod(str_number); xi_vector.append(xi); } variable_vector = xi_vector.to_array(); } else { // instpc >= 1: the variable vector is defined in steps double xi, xi_step; - int xi_exp, xi_step_exp; - sscanf(file_lines[++last_read_line].c_str(), " %9lE D%d %9lE D%d", &xi, &xi_exp, &xi_step, &xi_step_exp); - xi *= pow(10.0, 1.0 * xi_exp); - xi_step *= pow(10.0, 1.0 * xi_step_exp); + str_target = file_lines[++last_read_line]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + regex_search(str_target, m, re); + for (int ri = 0; ri < 2; ri++) { + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + if (ri == 0) xi = stod(str_number); + if (ri == 1) xi_step = stod(str_number); + str_target = m.suffix().str(); + } variable_vector = new double[nxi](); for (int jxi320 = 0; jxi320 < nxi; jxi320++) { variable_vector[jxi320] = xi; @@ -368,10 +448,16 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam variable_vector = new double[nxi](); if (instpc == 0) { // The variable vector is explicitly defined double vs; - int vs_exp; + //int vs_exp; for (int jxi_r = 0; jxi_r < nxi; jxi_r++) { - sscanf(file_lines[++last_read_line].c_str(), " %lf D%d", &vs, &vs_exp); - vs *= pow(10.0, 1.0 * vs_exp); + //sscanf(file_lines[++last_read_line].c_str(), " %lf D%d", &vs, &vs_exp); + str_target = file_lines[++last_read_line]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + vs = stod(str_number); variable_vector[jxi_r] = vs; } switch (insn) { @@ -393,10 +479,20 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam } } else { // The variable vector needs to be computed in steps double vs, vs_step; - int vs_exp, vs_step_exp; - sscanf(file_lines[++last_read_line].c_str(), " %lf D%d %lf D%d", &vs, &vs_exp, &vs_step, &vs_step_exp); - vs *= pow(10.0, 1.0 * vs_exp); - vs_step *= pow(10.0, 1.0 * vs_step_exp); + //int vs_exp, vs_step_exp; + //sscanf(file_lines[++last_read_line].c_str(), " %lf D%d %lf D%d", &vs, &vs_exp, &vs_step, &vs_step_exp); + str_target = file_lines[++last_read_line]; + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + regex_search(str_target, m, re); + for (int ri = 0; ri < 2; ri++) { + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + if (ri == 0) vs = stod(str_number); + if (ri == 1) vs_step = stod(str_number); + str_target = m.suffix().str(); + } for (int jxi110w = 0; jxi110w < nxi; jxi110w++) { variable_vector[jxi110w] = vs; vs += vs_step; @@ -441,20 +537,40 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam for (int i113 = 1; i113 <= nsph; i113++) { int i_val, nsh; double ros_val; - int ros_val_exp; - if (iog_vector[i113 - 1] < i113) continue; - sscanf(file_lines[++last_read_line].c_str(), " %d %lf D%d", &i_val, &ros_val, &ros_val_exp); + //int ros_val_exp; + if (iog_vector[i113 - 1] < i113) { + rcf_vector[i113 - 1] = new double[1](); + continue; + } + //sscanf(file_lines[++last_read_line].c_str(), " %d %lf D%d", &i_val, &ros_val, &ros_val_exp); + re = regex("[0-9]+"); + str_target = file_lines[++last_read_line]; + regex_search(str_target, m, re); + i_val = stoi(m.str()); + str_target = m.suffix(); + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + ros_val = stod(str_number); nshl_vector[i113 - 1] = i_val; if (max_ici < (i_val + 1) / 2) max_ici = (i_val + 1) / 2; - ros_vector[i113 - 1] = ros_val * pow(10.0, 1.0 * ros_val_exp); + ros_vector[i113 - 1] = ros_val; nsh = nshl_vector[i113 - 1]; if (i113 == 1) nsh += ies; rcf_vector[i113 - 1] = new double[nsh](); for (int ns = 0; ns < nsh; ns++) { double ns_rcf; - int ns_rcf_exp; - sscanf(file_lines[++last_read_line].c_str(), " %lf D%d", &ns_rcf, &ns_rcf_exp); - rcf_vector[i113 -1][ns] = ns_rcf * pow(10.0, 1.0 * ns_rcf_exp); + //int ns_rcf_exp; + //sscanf(file_lines[++last_read_line].c_str(), " %lf D%d", &ns_rcf, &ns_rcf_exp); + str_target = file_lines[++last_read_line]; + regex_search(str_target, m, re); + str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + ns_rcf = stod(str_number); + rcf_vector[i113 - 1][ns] = ns_rcf; } } complex<double> ***dc0m = new complex<double>**[max_ici]; @@ -464,6 +580,7 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam dc0m[dim1][dim2] = new complex<double>[nxi](); } } + re = regex("-?[0-9]+\\.[0-9]+([eEdD][-+]?)?[0-9]+"); for (int jxi468 = 1; jxi468 <= nxi; jxi468++) { if (_idfc != 0 && jxi468 > 1) continue; for (int i162 = 1; i162 <= nsph; i162++) { @@ -473,11 +590,21 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam if (i162 == 1) ici = ici + ies; for (int i157 = 0; i157 < ici; i157++) { double dc0_real, dc0_img; - int dc0_real_exp, dc0_img_exp; - sscanf(file_lines[++last_read_line].c_str(), " (%lf D%d, %lf D%d)", &dc0_real, &dc0_real_exp, &dc0_img, &dc0_img_exp); - dc0_real *= pow(10.0, 1.0 * dc0_real_exp); - dc0_img *= pow(10.0, 1.0 * dc0_img_exp); - dc0m[i157][i162 - 1][jxi468 - 1] = dc0_real + 1i * dc0_img; + //int dc0_real_exp, dc0_img_exp; + //sscanf(file_lines[++last_read_line].c_str(), " (%lf D%d, %lf D%d)", &dc0_real, &dc0_real_exp, &dc0_img, &dc0_img_exp); + str_target = file_lines[++last_read_line]; + regex_search(str_target, m, re); + string str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + dc0_real = stod(str_number); + str_target = m.suffix().str(); + regex_search(str_target, m, re); + str_number = m.str(); + str_number = regex_replace(str_number, regex("D"), "e"); + str_number = regex_replace(str_number, regex("d"), "e"); + dc0_img = stod(str_number); + dc0m[i157][i162 - 1][jxi468 - 1] = std::complex<double>(dc0_real, dc0_img); } } } @@ -498,6 +625,7 @@ ScattererConfiguration* ScattererConfiguration::from_dedfb(string dedfb_file_nam _wp, _xip ); + delete[] file_lines; return config; } @@ -552,12 +680,14 @@ void ScattererConfiguration::write_binary(string file_name, string mode) { const double two_pi = acos(0.0) * 4.0; const double evc = 6.5821188e-16; int max_ici = 0; + bool is_new_vector = false; if (mode.compare("LEGACY") == 0) { // Legacy mode was chosen. fstream output; int ies = (use_external_sphere)? 1 : 0; double *xi_vec; if (reference_variable_name.compare("XIV") == 0) xi_vec = scale_vec; else { + is_new_vector = true; xi_vec = new double[number_of_scales]; if (reference_variable_name.compare("WNS") == 0) { for (int i = 0; i < number_of_scales; i++) @@ -622,6 +752,7 @@ void ScattererConfiguration::write_binary(string file_name, string mode) { } } } + if (is_new_vector) delete[] xi_vec; output.close(); } } @@ -775,7 +906,7 @@ void ScattererConfiguration::write_formatted(string file_name) { if (iog_vec[i473 - 1] != i473) continue; ici = (nshl_vec[i473 - 1] + 1) / 2; if (i473 == 1) ici += ies; - fprintf(output, " SPHERE N. %4d\n", i473); + fprintf(output, " SPHERE N.%4d\n", i473); for (int ic472 = 0; ic472 < ici; ic472++) { double dc0_real = dc0_matrix[ic472][i473 - 1][0].real(), dc0_img = dc0_matrix[ic472][i473 - 1][0].imag(); fprintf(output, "%5d %12.4lE%12.4lE\n", (ic472 + 1), dc0_real, dc0_img); @@ -787,13 +918,13 @@ void ScattererConfiguration::write_formatted(string file_name) { if (iog_vec[i478 - 1] != i478) continue; ici = (nshl_vec[i478 - 1] + 1) / 2; if (i478 == 1) ici += ies; - fprintf(output, " SPHERE N. %4d\n", i478); + fprintf(output, " SPHERE N.%4d\n", i478); for (int ic477 = 1; ic477 <= ici; ic477++) { - fprintf(output, " NONTRANSITION LAYER N. %2d , SCALE = %3s\n", ic477, reference_variable_name.c_str()); + fprintf(output, " NONTRANSITION LAYER N.%2d, SCALE = %3s\n", ic477, reference_variable_name.c_str()); for (int jxi476 = 0; jxi476 < number_of_scales; jxi476++) { double dc0_real = dc0_matrix[ic477 - 1][i478 - 1][jxi476].real(); double dc0_img = dc0_matrix[ic477 - 1][i478 - 1][jxi476].imag(); - fprintf(output, "%5d (%12.4lE,%12.4lE)\n", (jxi476 + 1), dc0_real, dc0_img); + fprintf(output, "%5d%12.4lE%12.4lE\n", (jxi476 + 1), dc0_real, dc0_img); } } } -- GitLab