From b28a84d4215dce46bc825da40fee02767dac3594 Mon Sep 17 00:00:00 2001 From: BIGFERRY999 Date: Thu, 15 Oct 2026 01:04:34 +0100 Subject: [PATCH] feat(libc): implement ceill and floorl --- core/libs/prx/libc/src/Math.cpp | 2 ++ core/libs/tests/GuestMath.cpp | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/core/libs/prx/libc/src/Math.cpp b/core/libs/prx/libc/src/Math.cpp index 3b3fb1dbdd..8d21db8f88 100644 --- a/core/libs/prx/libc/src/Math.cpp +++ b/core/libs/prx/libc/src/Math.cpp @@ -559,6 +559,8 @@ long double APS5_VABI log10l_nid_postfix(long double x) { return std::log10(x); long double APS5_VABI powl_nid_postfix(long double base, long double exp) { return std::pow(base, exp); } long double APS5_VABI ldexpl_nid_postfix(long double x, int exp) { return std::ldexp(x, exp); } long double APS5_VABI truncl_nid_postfix(long double x) { return std::trunc(x); } +long double APS5_VABI ceill_nid_postfix(long double x) { return std::ceil(x); } +long double APS5_VABI floorl_nid_postfix(long double x) { return std::floor(x); } double APS5_VABI logb_nid_postfix(double x) { return std::logb(x); } int APS5_VABI ilogb_nid_postfix(double x) { if (x == 0.0) { diff --git a/core/libs/tests/GuestMath.cpp b/core/libs/tests/GuestMath.cpp index 776d282deb..176ac81a25 100644 --- a/core/libs/tests/GuestMath.cpp +++ b/core/libs/tests/GuestMath.cpp @@ -79,6 +79,8 @@ float APS5_VABI copysignf_nid_postfix(float, float); double APS5_VABI remquo_nid_postfix(double, double, int*); float APS5_VABI remquof_nid_postfix(float, float, int*); float APS5_VABI fmaf_nid_postfix(float, float, float); +long double APS5_VABI ceill_nid_postfix(long double); +long double APS5_VABI floorl_nid_postfix(long double); float APS5_VABI tanf_nid_postfix(float); int APS5_VABI rand_nid_postfix(); void APS5_VABI srand_nid_postfix(unsigned int); @@ -407,6 +409,10 @@ static void CheckLongDouble() { Require(frexpl_nid_postfix(INFINITY, &exponent) == INFINITY && exponent == 77); Require(frexpl_nid_postfix(-INFINITY, &exponent) == -INFINITY && exponent == 77); Require(std::isnan(frexpl_nid_postfix(NAN, &exponent)) && exponent == 77); + Require(ceill_nid_postfix(2.2L) == 3.0L && ceill_nid_postfix(-2.7L) == -2.0L); + Require(floorl_nid_postfix(2.7L) == 2.0L && floorl_nid_postfix(-2.2L) == -3.0L); + Require(ceill_nid_postfix(2.0L) == 2.0L && floorl_nid_postfix(-2.0L) == -2.0L); + Require(std::isnan(ceill_nid_postfix(NAN)) && std::isnan(floorl_nid_postfix(NAN))); } static void CheckNearbyintl() {