23 #if defined (HAVE_CONFIG_H) 71 int nargin = args.length ();
81 double m = args(1).xdouble_value (
"ellipj: M must be a scalar or matrix");
88 double u = args(0).xdouble_value (
"ellipj: U must be a scalar or matrix");
95 return ovl (sn, cn, dn,
err);
107 return ovl (sn, cn, dn,
err);
121 Complex *psn = sn.fortran_vec ();
122 Complex *pcn = cn.fortran_vec ();
124 double *perr =
err.fortran_vec ();
130 return ovl (sn, cn, dn,
err);
135 NDArray m = args(1).xarray_value (
"ellipj: M must be a scalar or matrix");
145 double u = u_arg.
xdouble_value (
"ellipj: U must be a scalar or matrix");
147 NDArray sn (sz_m), cn (sz_m), dn (sz_m);
150 const double *pm = m.
data ();
151 double *psn = sn.fortran_vec ();
152 double *pcn = cn.fortran_vec ();
154 double *perr =
err.fortran_vec ();
160 return ovl (sn, cn, dn,
err);
170 const double *pm = m.
data ();
171 Complex *psn = sn.fortran_vec ();
172 Complex *pcn = cn.fortran_vec ();
174 double *perr =
err.fortran_vec ();
180 return ovl (sn, cn, dn,
err);
194 && sz_u(1) == 1 && sz_m(0) == 1)
201 NDArray sn (sz_out), cn (sz_out), dn (sz_out);
204 const double *pu =
u.data ();
205 const double *pm = m.
data ();
211 return ovl (sn, cn, dn,
err);
213 else if (sz_m == sz_u)
215 NDArray sn (sz_m), cn (sz_m), dn (sz_m);
218 const double *pu =
u.data ();
219 const double *pm = m.
data ();
220 double *psn = sn.fortran_vec ();
221 double *pcn = cn.fortran_vec ();
223 double *perr =
err.fortran_vec ();
229 return ovl (sn, cn, dn,
err);
232 error (
"ellipj: Invalid size combination for U and M");
242 && sz_u(1) == 1 && sz_m(0) == 1)
253 const double *pm = m.
data ();
259 return ovl (sn, cn, dn,
err);
261 else if (sz_m == sz_u)
267 const double *pm = m.
data ();
268 Complex *psn = sn.fortran_vec ();
269 Complex *pcn = cn.fortran_vec ();
271 double *perr =
err.fortran_vec ();
277 return ovl (sn, cn, dn,
err);
280 error (
"ellipj: Invalid size combination for U and M");
const T * data(void) const
double xdouble_value(const char *fmt,...) const
OCTINTERP_API void print_usage(void)
const T * fortran_vec(void) const
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
void error(const char *fmt,...)
const dim_vector & dims(void) const
Return a const-reference so that dims ()(i) works efficiently.
Complex xcomplex_value(const char *fmt,...) const
ComplexNDArray xcomplex_array_value(const char *fmt,...) const
OCTAVE_EXPORT octave_value_list isa nd deftypefn *return ovl(args(0).isinteger())
void ellipj(double u, double m, double &sn, double &cn, double &dn, double &err)
OCTAVE_EXPORT octave_value_list error nd deftypefn *const octave_scalar_map err
octave_idx_type ndims(void) const
Number of dimensions.
std::complex< double > Complex
octave_idx_type numel(void) const
Number of elements in the array.
NDArray xarray_value(const char *fmt,...) const
Vector representing the dimensions (size) of an Array.
bool is_scalar_type(void) const