diff options
-rw-r--r-- | arith.c | 49 | ||||
-rw-r--r-- | eval.c | 48 |
2 files changed, 50 insertions, 47 deletions
@@ -54,6 +54,8 @@ #define CNUM_BIT ((int) sizeof (cnum) * CHAR_BIT) #define ABS(A) ((A) < 0 ? -(A) : (A)) +val plus_s; + val make_bignum(void) { val n = make_obj(); @@ -3447,6 +3449,53 @@ void arith_init(void) reg_varl(intern(lit("*e*"), user_package), flo(M_E)); } + reg_fun(plus_s = intern(lit("+"), user_package), func_n0v(plusv)); + reg_fun(intern(lit("-"), user_package), func_n1v(minusv)); + reg_fun(intern(lit("*"), user_package), func_n0v(mulv)); + reg_fun(intern(lit("sum"), user_package), func_n2o(sum, 1)); + reg_fun(intern(lit("prod"), user_package), func_n2o(prod, 1)); + reg_fun(intern(lit("abs"), user_package), func_n1(abso)); + reg_fun(intern(lit("trunc"), user_package), func_n2o(trunc, 1)); + reg_fun(intern(lit("mod"), user_package), func_n2(mod)); + reg_fun(intern(lit("wrap"), user_package), func_n3(wrap)); + reg_fun(intern(lit("wrap*"), user_package), func_n3(wrap_star)); + reg_fun(intern(lit("/"), user_package), func_n1v(divv)); + reg_fun(intern(lit("expt"), user_package), func_n0v(exptv)); + reg_fun(intern(lit("exptmod"), user_package), func_n3(exptmod)); + reg_fun(intern(lit("isqrt"), user_package), func_n1(isqrt)); + reg_fun(intern(lit("square"), user_package), func_n1(square)); + reg_fun(intern(lit("gcd"), user_package), func_n0v(gcdv)); + reg_fun(intern(lit("lcm"), user_package), func_n0v(lcmv)); + reg_fun(intern(lit("floor"), user_package), func_n2o(floordiv, 1)); + reg_fun(intern(lit("ceil"), user_package), func_n2o(ceildiv, 1)); + reg_fun(intern(lit("round"), user_package), func_n2o(roundiv, 1)); + reg_fun(intern(lit("trunc-rem"), user_package), func_n2o(trunc_rem, 1)); + reg_fun(intern(lit("floor-rem"), user_package), func_n2o(floor_rem, 1)); + reg_fun(intern(lit("ceil-rem"), user_package), func_n2o(ceil_rem, 1)); + reg_fun(intern(lit("round-rem"), user_package), func_n2o(round_rem, 1)); + reg_fun(intern(lit("sin"), user_package), func_n1(sine)); + reg_fun(intern(lit("cos"), user_package), func_n1(cosi)); + reg_fun(intern(lit("tan"), user_package), func_n1(tang)); + reg_fun(intern(lit("asin"), user_package), func_n1(asine)); + reg_fun(intern(lit("acos"), user_package), func_n1(acosi)); + reg_fun(intern(lit("atan"), user_package), func_n1(atang)); + reg_fun(intern(lit("atan2"), user_package), func_n2(atang2)); + reg_fun(intern(lit("log"), user_package), func_n1(loga)); + reg_fun(intern(lit("log10"), user_package), func_n1(logten)); + reg_fun(intern(lit("log2"), user_package), func_n1(logtwo)); + reg_fun(intern(lit("exp"), user_package), func_n1(expo)); + reg_fun(intern(lit("sqrt"), user_package), func_n1(sqroot)); + reg_fun(intern(lit("cum-norm-dist"), user_package), func_n1(cum_norm_dist)); + reg_fun(intern(lit("inv-cum-norm"), user_package), func_n1(inv_cum_norm)); + reg_fun(intern(lit("n-choose-k"), user_package), func_n2(n_choose_k)); + reg_fun(intern(lit("n-perm-k"), user_package), func_n2(n_perm_k)); + reg_fun(intern(lit("fixnump"), user_package), func_n1(fixnump)); + reg_fun(intern(lit("bignump"), user_package), func_n1(bignump)); + reg_fun(intern(lit("floatp"), user_package), func_n1(floatp)); + reg_fun(intern(lit("integerp"), user_package), func_n1(integerp)); + reg_fun(intern(lit("numberp"), user_package), func_n1(numberp)); + + reg_fun(intern(lit("signum"), user_package), func_n1(signum)); reg_fun(intern(lit("bignum-len"), user_package), func_n1(bignum_len)); @@ -91,7 +91,7 @@ val append_each_s, append_each_star_s, while_s, while_star_s, until_star_s; val dohash_s; val uw_protect_s, return_s, return_from_s, sys_abscond_from_s, block_star_s; val list_s, list_star_s, append_s, apply_s, sys_apply_s, iapply_s; -val gen_s, gun_s, generate_s, rest_s, plus_s; +val gen_s, gun_s, generate_s, rest_s; val promise_s, promise_forced_s, promise_inprogress_s, force_s; val op_s, identity_s; val hash_lit_s, hash_construct_s, struct_lit_s, qref_s, uref_s; @@ -6491,52 +6491,6 @@ void eval_init(void) reg_fun(intern(lit("neql"), user_package), func_n2(neql)); reg_fun(intern(lit("nequal"), user_package), func_n2(nequal)); - reg_fun(plus_s = intern(lit("+"), user_package), func_n0v(plusv)); - reg_fun(intern(lit("-"), user_package), func_n1v(minusv)); - reg_fun(intern(lit("*"), user_package), func_n0v(mulv)); - reg_fun(intern(lit("sum"), user_package), func_n2o(sum, 1)); - reg_fun(intern(lit("prod"), user_package), func_n2o(prod, 1)); - reg_fun(intern(lit("abs"), user_package), func_n1(abso)); - reg_fun(intern(lit("trunc"), user_package), func_n2o(trunc, 1)); - reg_fun(intern(lit("mod"), user_package), func_n2(mod)); - reg_fun(intern(lit("wrap"), user_package), func_n3(wrap)); - reg_fun(intern(lit("wrap*"), user_package), func_n3(wrap_star)); - reg_fun(intern(lit("/"), user_package), func_n1v(divv)); - reg_fun(intern(lit("expt"), user_package), func_n0v(exptv)); - reg_fun(intern(lit("exptmod"), user_package), func_n3(exptmod)); - reg_fun(intern(lit("isqrt"), user_package), func_n1(isqrt)); - reg_fun(intern(lit("square"), user_package), func_n1(square)); - reg_fun(intern(lit("gcd"), user_package), func_n0v(gcdv)); - reg_fun(intern(lit("lcm"), user_package), func_n0v(lcmv)); - reg_fun(intern(lit("floor"), user_package), func_n2o(floordiv, 1)); - reg_fun(intern(lit("ceil"), user_package), func_n2o(ceildiv, 1)); - reg_fun(intern(lit("round"), user_package), func_n2o(roundiv, 1)); - reg_fun(intern(lit("trunc-rem"), user_package), func_n2o(trunc_rem, 1)); - reg_fun(intern(lit("floor-rem"), user_package), func_n2o(floor_rem, 1)); - reg_fun(intern(lit("ceil-rem"), user_package), func_n2o(ceil_rem, 1)); - reg_fun(intern(lit("round-rem"), user_package), func_n2o(round_rem, 1)); - reg_fun(intern(lit("sin"), user_package), func_n1(sine)); - reg_fun(intern(lit("cos"), user_package), func_n1(cosi)); - reg_fun(intern(lit("tan"), user_package), func_n1(tang)); - reg_fun(intern(lit("asin"), user_package), func_n1(asine)); - reg_fun(intern(lit("acos"), user_package), func_n1(acosi)); - reg_fun(intern(lit("atan"), user_package), func_n1(atang)); - reg_fun(intern(lit("atan2"), user_package), func_n2(atang2)); - reg_fun(intern(lit("log"), user_package), func_n1(loga)); - reg_fun(intern(lit("log10"), user_package), func_n1(logten)); - reg_fun(intern(lit("log2"), user_package), func_n1(logtwo)); - reg_fun(intern(lit("exp"), user_package), func_n1(expo)); - reg_fun(intern(lit("sqrt"), user_package), func_n1(sqroot)); - reg_fun(intern(lit("cum-norm-dist"), user_package), func_n1(cum_norm_dist)); - reg_fun(intern(lit("inv-cum-norm"), user_package), func_n1(inv_cum_norm)); - reg_fun(intern(lit("n-choose-k"), user_package), func_n2(n_choose_k)); - reg_fun(intern(lit("n-perm-k"), user_package), func_n2(n_perm_k)); - reg_fun(intern(lit("fixnump"), user_package), func_n1(fixnump)); - reg_fun(intern(lit("bignump"), user_package), func_n1(bignump)); - reg_fun(intern(lit("floatp"), user_package), func_n1(floatp)); - reg_fun(intern(lit("integerp"), user_package), func_n1(integerp)); - reg_fun(intern(lit("numberp"), user_package), func_n1(numberp)); - reg_fun(intern(lit("zerop"), user_package), func_n1(zerop)); reg_fun(intern(lit("nzerop"), user_package), func_n1(nzerop)); reg_fun(intern(lit("plusp"), user_package), func_n1(plusp)); |