Mercurial > jwe > octave
view test/inline-fcn.tst @ 31110:670a0d878af1
eliminate WHO arguments from interpreter-private functions
* interpreter-private.h, inpterpreter-private.cc (__get_interpreter__,
__get_dynamic_loader__, __get_error_system__, __get_gh_manager__,
__get_help_system__, __get_input_system__, __get_load_path__,
__get_load_save_system__, __get_event_manager__,
__get_output_system__, __get_type_info__, __get_symbol_table__,
__get_current_scope__, __require_current_scope__, __get_evaluator__,
__get_bp_table__, __get_child_list__, __get_cdef_manager__,
__get_display_info__, __get_gtk_manager__): Eliminate WHO argument.
Previously, it was never displayed by __get_interpreter__. And, as
pointed out by Petter Tomner in patch #10216, passing a std::string
object could have performance issues.
(__get_interpreter__): Eliminate useless call to error. Display
message to std::cerr then abort.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 22 Jun 2022 12:48:59 -0400 |
parents | cf60f8f636f6 |
children |
line wrap: on
line source
## INLINE contstructor %!shared fn %! fn = inline ("x.^2 + 1"); %!assert (feval (fn, 6), 37) %!assert (fn (6), 37) %!assert (feval (inline ("sum (x(:))"), [1 2; 3 4]), 10) %!assert (feval (inline ("sqrt (x^2 + y^2)", "x", "y"), 3, 4), 5) %!assert (feval (inline ("exp (P1*x) + P2", 3), 3, 4, 5), exp (3*4) + 5) ## Test input validation %!error inline () %!error <EXPR must be a string> inline (1) %!error <N must be an integer> inline ("2", ones (2,2)) %!error <N must be a positive integer> inline ("2", -1) %!error <additional arguments must be strings> inline ("2", "x", -1, "y") ## FORMULA %!assert (formula (fn), "x.^2 + 1") %!assert (formula (fn), char (fn)) ## ARGNAMES %!assert (argnames (fn), {"x"}) %!assert (argnames (inline ("1e-3*y + 2e4*z")), {"y"; "z"}) %!assert (argnames (inline ("2", 2)), {"x"; "P1"; "P2"}) ## VECTORIZE %!assert (formula (vectorize (fn)), "x.^2 + 1") %!assert (formula (vectorize (inline ("1e-3*y + 2e4*z"))), "1e-3.*y + 2e4.*z") %!assert (formula (vectorize (inline ("2^x^5"))), "2.^x.^5")