diff --git a/Core/Algorithms/IIntensityFunction.cpp b/Core/Algorithms/IIntensityFunction.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..085db13b7c8159a8caff02f33c82dd400cacddb1
--- /dev/null
+++ b/Core/Algorithms/IIntensityFunction.cpp
@@ -0,0 +1,27 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Algorithms/IIntensityFunction.h
+//! @brief     Implements the classes IntensityFunctionLog, IntensityFunctionSqrt
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2015
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#include <cmath>
+#include "IIntensityFunction.h"
+
+double IntensityFunctionLog::evaluate(double value) const
+{
+    return value > 0 ? std::log(value) : 0;
+}
+
+double IntensityFunctionSqrt::evaluate(double value) const
+{
+    return value > 0 ? std::sqrt(value) : 0;
+}