view test/inline-fcn.tst @ 30226:f3ffb4596bd8

move ptr to imag data in mxArray to separate_full and separate_sparse classes * mex.cc (class mxArray_separate_full): Move separate pointer to imaginary array data here from mxArray_base_full along with all functions that operate on the on the separate array. (class mxArray_separate_sparse): Move separate pointer to imaginary array data here from mxArray_base_sparse along with all functions that operate on the on the separate array. (mxArray_base_full::fp_to_ov): New template to simplify the as_octave_value function. (mxArray_base_sparse::to_ov): New template to simplify the as_octave_value function.
author John W. Eaton <jwe@octave.org>
date Wed, 29 Sep 2021 16:43:08 -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")