From 18b5ab2a59b050ff506e5c7f98d4a9591aa63de2 Mon Sep 17 00:00:00 2001
From: Carl Philipp Klemm <philipp@uvos.xyz>
Date: Wed, 15 Jun 2022 20:56:19 +0200
Subject: [PATCH] Normalize: also remove real offset

---
 main.cpp      |  3 +++
 normalize.cpp | 14 +++++++++-----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/main.cpp b/main.cpp
index 31467fd..a4baa9f 100644
--- a/main.cpp
+++ b/main.cpp
@@ -132,6 +132,9 @@ static void runParamSweep(const std::string& modelstr, const eis::Range& omega,
 	if(parameters.empty())
 		return;
 
+	for(const eis::Range& range : parameters)
+		range.print(eis::Log::INFO);
+
 	eis::Log(eis::Log::INFO)<<"Saving sweep to "<<PARA_SWEEP_OUTPUT_DIR;
 	std::filesystem::create_directory(PARA_SWEEP_OUTPUT_DIR);
 
diff --git a/normalize.cpp b/normalize.cpp
index a7cb4df..f32488c 100644
--- a/normalize.cpp
+++ b/normalize.cpp
@@ -30,20 +30,24 @@ void eis::eraseSingularites(std::vector<eis::DataPoint>& data)
 
 void eis::normalize(std::vector<eis::DataPoint>& data)
 {
-	fvalue maxRe = 0;
-	fvalue maxIm = 0;
+	fvalue maxRe = std::numeric_limits<fvalue>::min();
+	fvalue maxIm = std::numeric_limits<fvalue>::min();
+	fvalue minRe = std::numeric_limits<fvalue>::max();
 	for(const DataPoint& dataPoint : data)
 	{
-		maxRe = fabs(dataPoint.im.real()) > maxRe ? fabs(dataPoint.im.real()) :  maxRe;
+		maxRe = fabs(dataPoint.im.real()) > maxRe ? fabs(dataPoint.im.real()) : maxRe;
 		maxIm = fabs(dataPoint.im.imag()) > maxIm ? fabs(dataPoint.im.imag()) : maxIm;
+
+		if(minRe > dataPoint.im.real())
+			minRe = dataPoint.im.real();
 	}
 
-	maxRe = maxRe == 0 ? 1 : maxRe;
+	maxRe = maxRe == minRe ? 1 : maxRe-minRe;
 	maxIm = maxIm == 0 ? 1 : maxIm;
 
 	for(DataPoint& dataPoint : data)
 	{
-		dataPoint.im.real(dataPoint.im.real() / maxRe);
+		dataPoint.im.real((dataPoint.im.real()-minRe) / maxRe);
 		dataPoint.im.imag(dataPoint.im.imag() / maxIm);
 	}
 }
-- 
GitLab