diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
| commit | 4f2d36194b4f299aa7509d815c07121039ea833b (patch) | |
| tree | f3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /uvim/src/float.c | |
| parent | 5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff) | |
| download | Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip | |
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'uvim/src/float.c')
| -rw-r--r-- | uvim/src/float.c | 589 |
1 files changed, 0 insertions, 589 deletions
diff --git a/uvim/src/float.c b/uvim/src/float.c deleted file mode 100644 index 4f78a190a0..0000000000 --- a/uvim/src/float.c +++ /dev/null @@ -1,589 +0,0 @@ -/* vi:set ts=8 sts=4 sw=4 noet: - * - * MNV - MNV is not Vim by Bram Moolenaar - * - * Do ":help uganda" in MNV to read copying and usage conditions. - * Do ":help credits" in MNV to see a list of people who contributed. - * See README.txt for an overview of the MNV source code. - */ - -/* - * float.c: Floating point functions - */ -#define USING_FLOAT_STUFF - -#include "mnv.h" - -#if defined(FEAT_EVAL) - -#ifdef VMS -# include <float.h> -#endif - -/* - * Convert the string "text" to a floating point number. - * This uses strtod(). setlocale(LC_NUMERIC, "C") has been used to make sure - * this always uses a decimal point. - * Returns the length of the text that was consumed. - */ - int -string2float( - char_u *text, - float_T *value, // result stored here - int skip_quotes) -{ - char *s = (char *)text; - float_T f; - - // MS-Windows does not deal with "inf" and "nan" properly. - if (STRNICMP(text, "inf", 3) == 0) - { - *value = INFINITY; - return 3; - } - if (STRNICMP(text, "-inf", 4) == 0) - { - *value = -INFINITY; - return 4; - } - if (STRNICMP(text, "nan", 3) == 0) - { - *value = NAN; - return 3; - } - if (skip_quotes && mnv_strchr((char_u *)s, '\'') != NULL) - { - char_u buf[100]; - char_u *p; - int quotes = 0; - - mnv_strncpy(buf, (char_u *)s, 99); - for (p = buf; ; p = skipdigits(p)) - { - // remove single quotes between digits, not in the exponent - if (*p == '\'') - { - ++quotes; - mch_memmove(p, p + 1, STRLEN(p)); - } - if (!mnv_isdigit(*p)) - break; - } - s = (char *)buf; - f = strtod(s, &s); - *value = f; - return (int)((char_u *)s - buf) + quotes; - } - - f = strtod(s, &s); - *value = f; - return (int)((char_u *)s - text); -} - -/* - * Get the float value of "argvars[0]" into "f". - * Returns FAIL when the argument is not a Number or Float. - */ - static int -get_float_arg(typval_T *argvars, float_T *f) -{ - if (argvars[0].v_type == VAR_FLOAT) - { - *f = argvars[0].vval.v_float; - return OK; - } - if (argvars[0].v_type == VAR_NUMBER) - { - *f = (float_T)argvars[0].vval.v_number; - return OK; - } - emsg(_(e_number_or_float_required)); - return FAIL; -} - -/* - * "abs(expr)" function - */ - void -f_abs(typval_T *argvars, typval_T *rettv) -{ - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - if (argvars[0].v_type == VAR_FLOAT) - { - rettv->v_type = VAR_FLOAT; - rettv->vval.v_float = fabs(argvars[0].vval.v_float); - } - else - { - varnumber_T n; - int error = FALSE; - - n = tv_get_number_chk(&argvars[0], &error); - if (error) - rettv->vval.v_number = -1; - else if (n > 0) - rettv->vval.v_number = n; - else - rettv->vval.v_number = -n; - } -} - -/* - * "acos()" function - */ - void -f_acos(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = acos(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "asin()" function - */ - void -f_asin(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = asin(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "atan()" function - */ - void -f_atan(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = atan(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "atan2()" function - */ - void -f_atan2(typval_T *argvars, typval_T *rettv) -{ - float_T fx = 0.0, fy = 0.0; - - if (in_mnv9script() - && (check_for_float_or_nr_arg(argvars, 0) == FAIL - || check_for_float_or_nr_arg(argvars, 1) == FAIL)) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &fx) == OK - && get_float_arg(&argvars[1], &fy) == OK) - rettv->vval.v_float = atan2(fx, fy); - else - rettv->vval.v_float = 0.0; -} - -/* - * "ceil({float})" function - */ - void -f_ceil(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = ceil(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "cos()" function - */ - void -f_cos(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = cos(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "cosh()" function - */ - void -f_cosh(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = cosh(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "exp()" function - */ - void -f_exp(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = exp(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "float2nr({float})" function - */ - void -f_float2nr(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - if (get_float_arg(argvars, &f) != OK) - return; - - if (f <= (float_T)-VARNUM_MAX + DBL_EPSILON) - rettv->vval.v_number = -VARNUM_MAX; - else if (f >= (float_T)VARNUM_MAX - DBL_EPSILON) - rettv->vval.v_number = VARNUM_MAX; - else - rettv->vval.v_number = (varnumber_T)f; -} - -/* - * "floor({float})" function - */ - void -f_floor(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = floor(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "fmod()" function - */ - void -f_fmod(typval_T *argvars, typval_T *rettv) -{ - float_T fx = 0.0, fy = 0.0; - - if (in_mnv9script() - && (check_for_float_or_nr_arg(argvars, 0) == FAIL - || check_for_float_or_nr_arg(argvars, 1) == FAIL)) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &fx) == OK - && get_float_arg(&argvars[1], &fy) == OK) - rettv->vval.v_float = fmod(fx, fy); - else - rettv->vval.v_float = 0.0; -} - -#if defined(HAVE_MATH_H) -/* - * "isinf()" function - */ - void -f_isinf(typval_T *argvars, typval_T *rettv) -{ - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - if (argvars[0].v_type == VAR_FLOAT && isinf(argvars[0].vval.v_float)) - rettv->vval.v_number = argvars[0].vval.v_float > 0.0 ? 1 : -1; -} - -/* - * "isnan()" function - */ - void -f_isnan(typval_T *argvars, typval_T *rettv) -{ - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->vval.v_number = argvars[0].v_type == VAR_FLOAT - && isnan(argvars[0].vval.v_float); -} -#endif - -/* - * "log()" function - */ - void -f_log(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = log(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "log10()" function - */ - void -f_log10(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = log10(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "pow()" function - */ - void -f_pow(typval_T *argvars, typval_T *rettv) -{ - float_T fx = 0.0, fy = 0.0; - - if (in_mnv9script() - && (check_for_float_or_nr_arg(argvars, 0) == FAIL - || check_for_float_or_nr_arg(argvars, 1) == FAIL)) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &fx) == OK - && get_float_arg(&argvars[1], &fy) == OK) - rettv->vval.v_float = pow(fx, fy); - else - rettv->vval.v_float = 0.0; -} - - -/* - * round() is not in C90, use ceil() or floor() instead. - */ - float_T -mnv_round(float_T f) -{ - return f > 0 ? floor(f + 0.5) : ceil(f - 0.5); -} - -/* - * "round({float})" function - */ - void -f_round(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = mnv_round(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "sin()" function - */ - void -f_sin(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = sin(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "sinh()" function - */ - void -f_sinh(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = sinh(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "sqrt()" function - */ - void -f_sqrt(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = sqrt(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "str2float()" function - */ - void -f_str2float(typval_T *argvars, typval_T *rettv) -{ - char_u *p; - int isneg; - int skip_quotes; - - if (in_mnv9script() && check_for_string_arg(argvars, 0) == FAIL) - return; - - skip_quotes = argvars[1].v_type != VAR_UNKNOWN && tv_get_bool(&argvars[1]); - - p = skipwhite(tv_get_string_strict(&argvars[0])); - isneg = (*p == '-'); - - if (*p == '+' || *p == '-') - p = skipwhite(p + 1); - (void)string2float(p, &rettv->vval.v_float, skip_quotes); - if (isneg) - rettv->vval.v_float *= -1; - rettv->v_type = VAR_FLOAT; -} - -/* - * "tan()" function - */ - void -f_tan(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = tan(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "tanh()" function - */ - void -f_tanh(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - rettv->vval.v_float = tanh(f); - else - rettv->vval.v_float = 0.0; -} - -/* - * "trunc({float})" function - */ - void -f_trunc(typval_T *argvars, typval_T *rettv) -{ - float_T f = 0.0; - - if (in_mnv9script() && check_for_float_or_nr_arg(argvars, 0) == FAIL) - return; - - rettv->v_type = VAR_FLOAT; - if (get_float_arg(argvars, &f) == OK) - // trunc() is not in C90, use floor() or ceil() instead. - rettv->vval.v_float = f > 0 ? floor(f) : ceil(f); - else - rettv->vval.v_float = 0.0; -} - -#endif |
