From a3242c8c740ea0cc572a2a85d867ec376efc0303 Mon Sep 17 00:00:00 2001 From: wangmengc Date: Thu, 23 May 2024 13:51:18 +0800 Subject: [PATCH] add exppower function --- utshell-0.5/r_expr/src/lib.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/utshell-0.5/r_expr/src/lib.rs b/utshell-0.5/r_expr/src/lib.rs index 88a0fb5e..8369bbd4 100644 --- a/utshell-0.5/r_expr/src/lib.rs +++ b/utshell-0.5/r_expr/src/lib.rs @@ -507,4 +507,31 @@ unsafe extern "C" fn exp0() -> intmax_t { )); } return val; -} \ No newline at end of file +} + +#[no_mangle] +unsafe extern "C" fn exppower() -> intmax_t { + let mut val1: intmax_t = 0; + let mut val2: intmax_t = 0; + let mut c: intmax_t = 0; + val1 = exp1(); + while curtok == POWER as libc::c_int { + readtok(); + val2 = exppower(); + lasttok = NUM as libc::c_int; + if val2 == 0 as libc::c_int as libc::c_long { + return 1 as libc::c_int as intmax_t; + } + if val2 < 0 as libc::c_int as libc::c_long { + evalerror(dcgettext( + 0 as *const libc::c_char, + b"exponent less than 0\0" as *const u8 as *const libc::c_char, + 5 as libc::c_int, + )); + } + val1 = ipow(val1, val2); + } + return val1; +} + + -- Gitee