diff --git a/src/include/types.h b/src/include/types.h
new file mode 100644
index 0000000000000000000000000000000000000000..148cf2e2640458f1cf388061f7bb50a6cbbe6ff6
--- /dev/null
+++ b/src/include/types.h
@@ -0,0 +1,28 @@
+/* Distributed under the terms of GPLv3 or later. See COPYING for details. */
+
+/*! \file types.h
+ *
+ * \brief Definition of fundamental types in use.
+ */
+
+#ifndef INCLUDE_TYPES_H_
+#define INCLUDE_TYPES_H_
+
+#include <complex.h>
+
+typedef __complex__ double dcomplex;
+
+/*! \brief Get the real part of a complex number.
+ *
+ * \param z: `complex double` The argument of the function.
+ * \return rz: `double` The real part of the argument.
+ */
+double real(dcomplex z) { return __real__ z; }
+
+/*! \brief Get the imaginary part of a complex number.
+ *
+ * \param z: `complex double` The argument of the function.
+ * \return iz: `double` The imaginary part of the argument.
+ */
+double imag(dcomplex z) { return __imag__ z; }
+#endif