ExitCodes main_(int, const char **) { String in = getStringOption_("in"), out = getStringOption_("out"); TransformationDescription trafo_in; TransformationXMLFile().load(in, trafo_in); TransformationDescription::DataPoints data; DoubleReal min = getDoubleOption_("min"), max = getDoubleOption_("max"), step = getDoubleOption_("step"); if (max <= min) { data = trafo_in.getDataPoints(); sort(data.begin(), data.end()); max = data.back().first; DoubleReal magnitude = floor(log10(max)); max = Math::ceilDecimal(max, magnitude - 1); if (max <= min) { throw Exception::InvalidParameter(__FILE__, __LINE__, __PRETTY_FUNCTION__, "'min' must be lower than 'max'"); } } data.clear(); for (DoubleReal value = min; value <= max; value += step) { DoubleReal transformed = trafo_in.apply(value); if (out.empty()) { cout << value << '\t' << transformed << endl; } else data.push_back(make_pair(value, transformed)); } if (!out.empty()) { TransformationDescription trafo_out(trafo_in); trafo_out.setDataPoints(data); TransformationXMLFile().store(out, trafo_out); } return EXECUTION_OK; }