Mercurial > vim
comparison src/evalfunc.c @ 16213:2c33b119ba92 v8.1.1111
patch 8.1.1111: it is not easy to check for infinity
commit https://github.com/vim/vim/commit/fda1bff39f89775b20a2d88ef3903656d52f66ad
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 4 13:44:37 2019 +0200
patch 8.1.1111: it is not easy to check for infinity
Problem: It is not easy to check for infinity.
Solution: Add isinf(). (Ozaki Kiichi, closes https://github.com/vim/vim/issues/3787)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 04 Apr 2019 13:45:04 +0200 |
parents | cd5c83115ec6 |
children | abb67309c1ca |
comparison
equal
deleted
inserted
replaced
16212:862f5ea5dcb0 | 16213:2c33b119ba92 |
---|---|
235 static void f_insert(typval_T *argvars, typval_T *rettv); | 235 static void f_insert(typval_T *argvars, typval_T *rettv); |
236 static void f_invert(typval_T *argvars, typval_T *rettv); | 236 static void f_invert(typval_T *argvars, typval_T *rettv); |
237 static void f_isdirectory(typval_T *argvars, typval_T *rettv); | 237 static void f_isdirectory(typval_T *argvars, typval_T *rettv); |
238 static void f_islocked(typval_T *argvars, typval_T *rettv); | 238 static void f_islocked(typval_T *argvars, typval_T *rettv); |
239 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 239 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) |
240 static void f_isinf(typval_T *argvars, typval_T *rettv); | |
240 static void f_isnan(typval_T *argvars, typval_T *rettv); | 241 static void f_isnan(typval_T *argvars, typval_T *rettv); |
241 #endif | 242 #endif |
242 static void f_items(typval_T *argvars, typval_T *rettv); | 243 static void f_items(typval_T *argvars, typval_T *rettv); |
243 #ifdef FEAT_JOB_CHANNEL | 244 #ifdef FEAT_JOB_CHANNEL |
244 static void f_job_getchannel(typval_T *argvars, typval_T *rettv); | 245 static void f_job_getchannel(typval_T *argvars, typval_T *rettv); |
719 {"inputsave", 0, 0, f_inputsave}, | 720 {"inputsave", 0, 0, f_inputsave}, |
720 {"inputsecret", 1, 2, f_inputsecret}, | 721 {"inputsecret", 1, 2, f_inputsecret}, |
721 {"insert", 2, 3, f_insert}, | 722 {"insert", 2, 3, f_insert}, |
722 {"invert", 1, 1, f_invert}, | 723 {"invert", 1, 1, f_invert}, |
723 {"isdirectory", 1, 1, f_isdirectory}, | 724 {"isdirectory", 1, 1, f_isdirectory}, |
725 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | |
726 {"isinf", 1, 1, f_isinf}, | |
727 #endif | |
724 {"islocked", 1, 1, f_islocked}, | 728 {"islocked", 1, 1, f_islocked}, |
725 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 729 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) |
726 {"isnan", 1, 1, f_isnan}, | 730 {"isnan", 1, 1, f_isnan}, |
727 #endif | 731 #endif |
728 {"items", 1, 1, f_items}, | 732 {"items", 1, 1, f_items}, |
6580 "system", | 6584 "system", |
6581 #endif | 6585 #endif |
6582 #ifdef FEAT_TAG_BINS | 6586 #ifdef FEAT_TAG_BINS |
6583 "tag_binary", | 6587 "tag_binary", |
6584 #endif | 6588 #endif |
6585 #ifdef FEAT_TAG_OLDSTATIC | |
6586 "tag_old_static", | |
6587 #endif | |
6588 #ifdef FEAT_TCL | 6589 #ifdef FEAT_TCL |
6589 # ifndef DYNAMIC_TCL | 6590 # ifndef DYNAMIC_TCL |
6590 "tcl", | 6591 "tcl", |
6591 # endif | 6592 # endif |
6592 #endif | 6593 #endif |
7440 | 7441 |
7441 clear_lval(&lv); | 7442 clear_lval(&lv); |
7442 } | 7443 } |
7443 | 7444 |
7444 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 7445 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) |
7446 /* | |
7447 * "isinf()" function | |
7448 */ | |
7449 static void | |
7450 f_isinf(typval_T *argvars, typval_T *rettv) | |
7451 { | |
7452 if (argvars[0].v_type == VAR_FLOAT && isinf(argvars[0].vval.v_float)) | |
7453 rettv->vval.v_number = argvars[0].vval.v_float > 0.0 ? 1 : -1; | |
7454 } | |
7455 | |
7445 /* | 7456 /* |
7446 * "isnan()" function | 7457 * "isnan()" function |
7447 */ | 7458 */ |
7448 static void | 7459 static void |
7449 f_isnan(typval_T *argvars, typval_T *rettv) | 7460 f_isnan(typval_T *argvars, typval_T *rettv) |