diff --git a/libs/libm/libm/lib_powl.c b/libs/libm/libm/lib_powl.c index f3b97e4fddc..a71de03d02e 100644 --- a/libs/libm/libm/lib_powl.c +++ b/libs/libm/libm/lib_powl.c @@ -41,6 +41,22 @@ #ifdef CONFIG_HAVE_LONG_DOUBLE long double powl(long double b, long double e) { - return expl(e * logl(b)); + if (b > 0.0) + { + return expl(e * logl(b)); + } + else if (b < 0.0 && e == (int)e) + { + if ((int)e % 2 == 0) + { + return expl(e * logl(fabsl(b))); + } + else + { + return -expl(e * logl(fabsl(b))); + } + } + + return 0.0; } #endif