diff --git a/app/backplane/sensor_module/.idea/editor.xml b/app/backplane/sensor_module/.idea/editor.xml
index e42167fe8..ec902243e 100644
--- a/app/backplane/sensor_module/.idea/editor.xml
+++ b/app/backplane/sensor_module/.idea/editor.xml
@@ -243,18 +243,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/backplane/sensor_module/.idea/vcs.xml b/app/backplane/sensor_module/.idea/vcs.xml
index 64838ab39..ef3688998 100644
--- a/app/backplane/sensor_module/.idea/vcs.xml
+++ b/app/backplane/sensor_module/.idea/vcs.xml
@@ -8,5 +8,6 @@
+
\ No newline at end of file
diff --git a/include/f_core/math/n_math_utils.h b/include/f_core/math/n_math_utils.h
new file mode 100644
index 000000000..aa50453ab
--- /dev/null
+++ b/include/f_core/math/n_math_utils.h
@@ -0,0 +1,18 @@
+#ifndef N_MATH_UTILS_H
+#define N_MATH_UTILS_H
+
+#include
+
+namespace NMathUtils {
+ /**
+ * @brief Calculate roll, pitch, and yaw from a quaternion.
+ *
+ * @param[in] inputQuat The input quaternion.
+ * @param[out] roll Output roll angle in radians.
+ * @param[out] pitch Output pitch angle in radians.
+ * @param[out] yaw Output yaw angle in radians.
+ */
+ void CalculateRollPitchYaw(zsl_quat inputQuat, float& roll, float& pitch, float& yaw);
+};
+
+#endif //N_MATH_UTILS_H
diff --git a/lib/f_core/CMakeLists.txt b/lib/f_core/CMakeLists.txt
index 58ce33cb9..3e3fcd587 100644
--- a/lib/f_core/CMakeLists.txt
+++ b/lib/f_core/CMakeLists.txt
@@ -5,9 +5,10 @@ zephyr_library()
add_subdirectory_ifdef(CONFIG_F_CORE_DEVICE device)
add_subdirectory_ifdef(CONFIG_F_CORE_SENSOR device/sensor)
+add_subdirectory_ifdef(CONFIG_F_CORE_MATH math)
add_subdirectory_ifdef(CONFIG_F_CORE_NET net)
-add_subdirectory_ifdef(CONFIG_F_CORE_RADIO radio)
add_subdirectory_ifdef(CONFIG_F_CORE_OS os)
-add_subdirectory_ifdef(CONFIG_F_CORE_UTILS utils)
add_subdirectory_ifdef(CONFIG_F_CORE_PROTOCOLS radio/protocols)
+add_subdirectory_ifdef(CONFIG_F_CORE_RADIO radio)
add_subdirectory_ifdef(CONFIG_F_CORE_STATE_MACHINE state_machine)
+add_subdirectory_ifdef(CONFIG_F_CORE_UTILS utils)
diff --git a/lib/f_core/Kconfig b/lib/f_core/Kconfig
index 817a97786..dcc8f628b 100644
--- a/lib/f_core/Kconfig
+++ b/lib/f_core/Kconfig
@@ -16,6 +16,12 @@ config F_CORE_SENSOR
help
This option enables sensor functionality for F-Core
+config F_CORE_MATH
+ bool "Math"
+ help
+ This option enables math functionality for F-Core
+ select ZSL
+
config F_CORE_NET
bool "Network"
help
diff --git a/lib/f_core/math/CMakeLists.txt b/lib/f_core/math/CMakeLists.txt
new file mode 100644
index 000000000..7ef6af7b3
--- /dev/null
+++ b/lib/f_core/math/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright (c) 2025 RIT Launch Initiative
+# SPDX-License-Identifier: Apache-2.0
+
+zephyr_library()
+FILE(GLOB sources *.cpp)
+zephyr_library_sources(${sources})
+
diff --git a/lib/f_core/math/n_math_utils.cpp b/lib/f_core/math/n_math_utils.cpp
new file mode 100644
index 000000000..979f8c00f
--- /dev/null
+++ b/lib/f_core/math/n_math_utils.cpp
@@ -0,0 +1,14 @@
+#include "f_core/math/n_math_utils.h"
+
+
+void NMathUtils::CalculateRollPitchYaw(zsl_quat inputQuat, float& roll, float& pitch, float& yaw)
+{
+ static constexpr multiplier = 180 / ZSL_PI;
+ zsl_euler euler;
+
+ zsl_quat_to_euler(&inputQuat, &euler);
+
+ roll = euler.x * multiplier;
+ pitch = euler.y * multiplier;
+ yaw = euler.z * multiplier;
+}
\ No newline at end of file
diff --git a/west.yml b/west.yml
index 36782453a..be4810705 100644
--- a/west.yml
+++ b/west.yml
@@ -21,9 +21,10 @@ manifest:
- hal_nxp
- littlefs
- loramac-node
- - hal_st
+ - lz4
- segger
- percepio
- - lz4
clone-depth: 1
-
+ - name: zscilib
+ remote: zephyrproject-rtos
+ revision: master