diff options
-rw-r--r-- | miscutils/bc.c | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index 5ede8598d..e7f48fcea 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -5943,6 +5943,7 @@ static BcStatus bc_program_logical(char inst) | |||
5943 | 5943 | ||
5944 | s = zbc_program_binOpPrep(&opd1, &n1, &opd2, &n2, false); | 5944 | s = zbc_program_binOpPrep(&opd1, &n1, &opd2, &n2, false); |
5945 | if (s) return s; | 5945 | if (s) return s; |
5946 | |||
5946 | bc_num_init_DEF_SIZE(&res.d.n); | 5947 | bc_num_init_DEF_SIZE(&res.d.n); |
5947 | 5948 | ||
5948 | if (inst == BC_INST_BOOL_AND) | 5949 | if (inst == BC_INST_BOOL_AND) |
@@ -5950,50 +5951,31 @@ static BcStatus bc_program_logical(char inst) | |||
5950 | else if (inst == BC_INST_BOOL_OR) | 5951 | else if (inst == BC_INST_BOOL_OR) |
5951 | cond = bc_num_cmp(n1, &G.prog.zero) || bc_num_cmp(n2, &G.prog.zero); | 5952 | cond = bc_num_cmp(n1, &G.prog.zero) || bc_num_cmp(n2, &G.prog.zero); |
5952 | else { | 5953 | else { |
5953 | |||
5954 | cmp = bc_num_cmp(n1, n2); | 5954 | cmp = bc_num_cmp(n1, n2); |
5955 | |||
5956 | switch (inst) { | 5955 | switch (inst) { |
5957 | 5956 | case BC_INST_REL_EQ: | |
5958 | case BC_INST_REL_EQ: | 5957 | cond = cmp == 0; |
5959 | { | 5958 | break; |
5960 | cond = cmp == 0; | 5959 | case BC_INST_REL_LE: |
5961 | break; | 5960 | cond = cmp <= 0; |
5962 | } | 5961 | break; |
5963 | 5962 | case BC_INST_REL_GE: | |
5964 | case BC_INST_REL_LE: | 5963 | cond = cmp >= 0; |
5965 | { | 5964 | break; |
5966 | cond = cmp <= 0; | 5965 | case BC_INST_REL_NE: |
5967 | break; | 5966 | cond = cmp != 0; |
5968 | } | 5967 | break; |
5969 | 5968 | case BC_INST_REL_LT: | |
5970 | case BC_INST_REL_GE: | 5969 | cond = cmp < 0; |
5971 | { | 5970 | break; |
5972 | cond = cmp >= 0; | 5971 | case BC_INST_REL_GT: |
5973 | break; | 5972 | cond = cmp > 0; |
5974 | } | 5973 | break; |
5975 | |||
5976 | case BC_INST_REL_NE: | ||
5977 | { | ||
5978 | cond = cmp != 0; | ||
5979 | break; | ||
5980 | } | ||
5981 | |||
5982 | case BC_INST_REL_LT: | ||
5983 | { | ||
5984 | cond = cmp < 0; | ||
5985 | break; | ||
5986 | } | ||
5987 | |||
5988 | case BC_INST_REL_GT: | ||
5989 | { | ||
5990 | cond = cmp > 0; | ||
5991 | break; | ||
5992 | } | ||
5993 | } | 5974 | } |
5994 | } | 5975 | } |
5995 | 5976 | ||
5996 | (cond ? bc_num_one : bc_num_zero)(&res.d.n); | 5977 | if (cond) bc_num_one(&res.d.n); |
5978 | //else bc_num_zero(&res.d.n); - already is | ||
5997 | 5979 | ||
5998 | bc_program_binOpRetire(&res); | 5980 | bc_program_binOpRetire(&res); |
5999 | 5981 | ||