#pragma once template constexpr T sqrt(const T n) noexcept; template <> constexpr float sqrt(const float n) noexcept { return __builtin_sqrtf(n); } template constexpr T cos(const T n) noexcept; template <> constexpr float cos(const float n) noexcept { return __builtin_cosf(n); } template constexpr T sin(const T n) noexcept; template <> constexpr float sin(const float n) noexcept { return __builtin_sinf(n); }