GNU Octave 7.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
ellipj.cc
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////
2//
3// Copyright (C) 2013-2022 The Octave Project Developers
4//
5// See the file COPYRIGHT.md in the top-level directory of this
6// distribution or <https://octave.org/copyright/>.
7//
8// This file is part of Octave.
9//
10// Octave is free software: you can redistribute it and/or modify it
11// under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// Octave is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with Octave; see the file COPYING. If not, see
22// <https://www.gnu.org/licenses/>.
23//
24////////////////////////////////////////////////////////////////////////
25
26#if defined (HAVE_CONFIG_H)
27# include "config.h"
28#endif
29
30#include "defun.h"
31#include "error.h"
32#include "lo-specfun.h"
33
34OCTAVE_NAMESPACE_BEGIN
35
36DEFUN (ellipj, args, ,
37 doc: /* -*- texinfo -*-
38@deftypefn {} {[@var{sn}, @var{cn}, @var{dn}, @var{err}] =} ellipj (@var{u}, @var{m})
39@deftypefnx {} {[@var{sn}, @var{cn}, @var{dn}, @var{err}] =} ellipj (@var{u}, @var{m}, @var{tol})
40Compute the Jacobi elliptic functions @var{sn}, @var{cn}, and @var{dn}
41of complex argument @var{u} and real parameter @var{m}.
42
43If @var{m} is a scalar, the results are the same size as @var{u}.
44If @var{u} is a scalar, the results are the same size as @var{m}.
45If @var{u} is a column vector and @var{m} is a row vector, the
46results are matrices with @code{length (@var{u})} rows and
47@code{length (@var{m})} columns. Otherwise, @var{u} and
48@var{m} must conform in size and the results will be the same size as the
49inputs.
50
51The value of @var{u} may be complex.
52The value of @var{m} must be 0 @leq{} @var{m} @leq{} 1.
53
54The optional input @var{tol} is currently ignored (@sc{matlab} uses this to
55allow faster, less accurate approximation).
56
57If requested, @var{err} contains the following status information
58and is the same size as the result.
59
60@enumerate 0
61@item
62Normal return.
63
64@item
65Error---no computation, algorithm termination condition not met,
66return @code{NaN}.
67@end enumerate
68
69Reference: Milton @nospell{Abramowitz} and Irene A @nospell{Stegun},
70@cite{Handbook of Mathematical Functions}, Chapter 16 (Sections 16.4, 16.13,
71and 16.15), Dover, 1965.
72
73@seealso{ellipke}
74@end deftypefn */)
75{
76 int nargin = args.length ();
77
78 if (nargin < 2 || nargin > 3)
79 print_usage ();
80
81 octave_value u_arg = args(0);
82 octave_value m_arg = args(1);
83
84 if (m_arg.is_scalar_type ())
85 {
86 double m = args(1).xdouble_value ("ellipj: M must be a scalar or matrix");
87
88 if (u_arg.is_scalar_type ())
89 {
90 if (u_arg.isreal ())
91 {
92 // u real, m scalar
93 double u = args(0).xdouble_value ("ellipj: U must be a scalar or matrix");
94
95 double sn, cn, dn;
96 double err = 0;
97
98 math::ellipj (u, m, sn, cn, dn, err);
99
100 return ovl (sn, cn, dn, err);
101 }
102 else
103 {
104 // u complex, m scalar
105 Complex u = u_arg.xcomplex_value ("ellipj: U must be a scalar or matrix");
106
107 Complex sn, cn, dn;
108 double err = 0;
109
110 math::ellipj (u, m, sn, cn, dn, err);
111
112 return ovl (sn, cn, dn, err);
113 }
114 }
115 else
116 {
117 // u is matrix, m is scalar
118 ComplexNDArray u = u_arg.xcomplex_array_value ("ellipj: U must be a scalar or matrix");
119
120 dim_vector sz_u = u.dims ();
121
122 ComplexNDArray sn (sz_u), cn (sz_u), dn (sz_u);
123 NDArray err (sz_u);
124
125 const Complex *pu = u.data ();
126 Complex *psn = sn.fortran_vec ();
127 Complex *pcn = cn.fortran_vec ();
128 Complex *pdn = dn.fortran_vec ();
129 double *perr = err.fortran_vec ();
130 octave_idx_type nel = u.numel ();
131
132 for (octave_idx_type i = 0; i < nel; i++)
133 math::ellipj (pu[i], m, psn[i], pcn[i], pdn[i], perr[i]);
134
135 return ovl (sn, cn, dn, err);
136 }
137 }
138 else
139 {
140 NDArray m = args(1).xarray_value ("ellipj: M must be a scalar or matrix");
141
142 dim_vector sz_m = m.dims ();
143
144 if (u_arg.is_scalar_type ())
145 {
146 // u is scalar, m is array
147 if (u_arg.isreal ())
148 {
149 // u is real scalar, m is array
150 double u = u_arg.xdouble_value ("ellipj: U must be a scalar or matrix");
151
152 NDArray sn (sz_m), cn (sz_m), dn (sz_m);
153 NDArray err (sz_m);
154
155 const double *pm = m.data ();
156 double *psn = sn.fortran_vec ();
157 double *pcn = cn.fortran_vec ();
158 double *pdn = dn.fortran_vec ();
159 double *perr = err.fortran_vec ();
160 octave_idx_type nel = m.numel ();
161
162 for (octave_idx_type i = 0; i < nel; i++)
163 math::ellipj (u, pm[i], psn[i], pcn[i], pdn[i], perr[i]);
164
165 return ovl (sn, cn, dn, err);
166 }
167 else
168 {
169 // u is complex scalar, m is array
170 Complex u = u_arg.xcomplex_value ("ellipj: U must be a scalar or matrix");
171
172 ComplexNDArray sn (sz_m), cn (sz_m), dn (sz_m);
173 NDArray err (sz_m);
174
175 const double *pm = m.data ();
176 Complex *psn = sn.fortran_vec ();
177 Complex *pcn = cn.fortran_vec ();
178 Complex *pdn = dn.fortran_vec ();
179 double *perr = err.fortran_vec ();
180 octave_idx_type nel = m.numel ();
181
182 for (octave_idx_type i = 0; i < nel; i++)
183 math::ellipj (u, pm[i], psn[i], pcn[i], pdn[i], perr[i]);
184
185 return ovl (sn, cn, dn, err);
186 }
187 }
188 else
189 {
190 // u is array, m is array
191 if (u_arg.isreal ())
192 {
193 // u is real array, m is array
194 NDArray u = u_arg.xarray_value ("ellipj: U must be a scalar or matrix");
195
196 dim_vector sz_u = u.dims ();
197
198 if (sz_u.ndims () == 2 && sz_m.ndims () == 2
199 && sz_u(1) == 1 && sz_m(0) == 1)
200 {
201 // u is real column vector, m is row vector
202 octave_idx_type ur = sz_u(0);
203 octave_idx_type mc = sz_m(1);
204 dim_vector sz_out (ur, mc);
205
206 NDArray sn (sz_out), cn (sz_out), dn (sz_out);
207 NDArray err (sz_out);
208
209 const double *pu = u.data ();
210 const double *pm = m.data ();
211
212 for (octave_idx_type j = 0; j < mc; j++)
213 for (octave_idx_type i = 0; i < ur; i++)
214 math::ellipj (pu[i], pm[j], sn(i,j), cn(i,j), dn(i,j), err(i,j));
215
216 return ovl (sn, cn, dn, err);
217 }
218 else if (sz_m == sz_u)
219 {
220 NDArray sn (sz_m), cn (sz_m), dn (sz_m);
221 NDArray err (sz_m);
222
223 const double *pu = u.data ();
224 const double *pm = m.data ();
225 double *psn = sn.fortran_vec ();
226 double *pcn = cn.fortran_vec ();
227 double *pdn = dn.fortran_vec ();
228 double *perr = err.fortran_vec ();
229 octave_idx_type nel = m.numel ();
230
231 for (octave_idx_type i = 0; i < nel; i++)
232 math::ellipj (pu[i], pm[i], psn[i], pcn[i], pdn[i], perr[i]);
233
234 return ovl (sn, cn, dn, err);
235 }
236 else
237 error ("ellipj: Invalid size combination for U and M");
238 }
239 else
240 {
241 // u is complex array, m is array
242 ComplexNDArray u = u_arg.xcomplex_array_value ("ellipj: U must be a scalar or matrix");
243
244 dim_vector sz_u = u.dims ();
245
246 if (sz_u.ndims () == 2 && sz_m.ndims () == 2
247 && sz_u(1) == 1 && sz_m(0) == 1)
248 {
249 // u is complex column vector, m is row vector
250 octave_idx_type ur = sz_u(0);
251 octave_idx_type mc = sz_m(1);
252 dim_vector sz_out (ur, mc);
253
254 ComplexNDArray sn (sz_out), cn (sz_out), dn (sz_out);
255 NDArray err (sz_out);
256
257 const Complex *pu = u.data ();
258 const double *pm = m.data ();
259
260 for (octave_idx_type j = 0; j < mc; j++)
261 for (octave_idx_type i = 0; i < ur; i++)
262 math::ellipj (pu[i], pm[j], sn(i,j), cn(i,j), dn(i,j), err(i,j));
263
264 return ovl (sn, cn, dn, err);
265 }
266 else if (sz_m == sz_u)
267 {
268 ComplexNDArray sn (sz_m), cn (sz_m), dn (sz_m);
269 NDArray err (sz_m);
270
271 const Complex *pu = u.data ();
272 const double *pm = m.data ();
273 Complex *psn = sn.fortran_vec ();
274 Complex *pcn = cn.fortran_vec ();
275 Complex *pdn = dn.fortran_vec ();
276 double *perr = err.fortran_vec ();
277 octave_idx_type nel = m.numel ();
278
279 for (octave_idx_type i = 0; i < nel; i++)
280 math::ellipj (pu[i], pm[i], psn[i], pcn[i], pdn[i], perr[i]);
281
282 return ovl (sn, cn, dn, err);
283 }
284 else
285 error ("ellipj: Invalid size combination for U and M");
286 }
287 }
288 } // m matrix
289
290 return ovl ();
291}
292
293/*
294## demos taken from inst/ellipj.m
295
296%!demo
297%! N = 150;
298%! # m = [1-logspace(0,log(eps),N-1), 1]; # m near 1
299%! # m = [0, logspace(log(eps),0,N-1)]; # m near 0
300%! m = linspace (0,1,N); # m equally spaced
301%! u = linspace (-20, 20, N);
302%! M = ones (length (u), 1) * m;
303%! U = u' * ones (1, length (m));
304%! [sn, cn, dn] = ellipj (U,M);
305%!
306%! ## Plotting
307%! data = {sn,cn,dn};
308%! dname = {"sn","cn","dn"};
309%! for i=1:3
310%! subplot (1,3,i);
311%! data{i}(data{i} > 1) = 1;
312%! data{i}(data{i} < -1) = -1;
313%! image (m,u,32*data{i}+32);
314%! title (dname{i});
315%! endfor
316%! colormap (hot (64));
317
318%!demo
319%! N = 200;
320%! # m = [1-logspace(0,log(eps),N-1), 1]; # m near 1
321%! # m = [0, logspace(log(eps),0,N-1)]; # m near 0
322%! m = linspace (0,1,N); # m equally spaced
323%! u = linspace (0,20,5);
324%! M = ones (length (u), 1) * m;
325%! U = u' * ones (1, length (m));
326%! [sn, cn, dn] = ellipj (U,M);
327%!
328%! ## Plotting
329%! data = {sn,cn,dn};
330%! dname = {"sn","cn","dn"};
331%! for i=1:3
332%! subplot (1,3,i);
333%! plot (m, data{i});
334%! title (dname{i});
335%! grid on;
336%! endfor
337*/
338
339/*
340## tests taken from inst/test_sncndn.m
341
342%!test
343%! k = (tan (pi/8))^2; m = k*k;
344%! SN = [
345%! -1. + I * 0. , -0.8392965923 + 0. * I
346%! -1. + I * 0.2 , -0.8559363407 + 0.108250955 * I
347%! -1. + I * 0.4 , -0.906529758 + 0.2204040232 * I
348%! -1. + I * 0.6 , -0.9931306727 + 0.3403783409 * I
349%! -1. + I * 0.8 , -1.119268095 + 0.4720784944 * I
350%! -1. + I * 1. , -1.29010951 + 0.6192468708 * I
351%! -1. + I * 1.2 , -1.512691987 + 0.7850890595 * I
352%! -1. + I * 1.4 , -1.796200374 + 0.9714821804 * I
353%! -1. + I * 1.6 , -2.152201882 + 1.177446413 * I
354%! -1. + I * 1.8 , -2.594547417 + 1.396378892 * I
355%! -1. + I * 2. , -3.138145339 + 1.611394819 * I
356%! -0.8 + I * 0. , -0.7158157937 + 0. * I
357%! -0.8 + I * 0.2 , -0.7301746722 + 0.1394690862 * I
358%! -0.8 + I * 0.4 , -0.7738940898 + 0.2841710966 * I
359%! -0.8 + I * 0.6 , -0.8489542135 + 0.4394411376 * I
360%! -0.8 + I * 0.8 , -0.9588386397 + 0.6107824358 * I
361%! -0.8 + I * 1. , -1.108848724 + 0.8038415767 * I
362%! -0.8 + I * 1.2 , -1.306629972 + 1.024193359 * I
363%! -0.8 + I * 1.4 , -1.563010199 + 1.276740951 * I
364%! -0.8 + I * 1.6 , -1.893274688 + 1.564345558 * I
365%! -0.8 + I * 1.8 , -2.318944084 + 1.88491973 * I
366%! -0.8 + I * 2. , -2.869716809 + 2.225506523 * I
367%! -0.6 + I * 0. , -0.5638287208 + 0. * I
368%! -0.6 + I * 0.2 , -0.5752723012 + 0.1654722474 * I
369%! -0.6 + I * 0.4 , -0.610164314 + 0.3374004736 * I
370%! -0.6 + I * 0.6 , -0.6702507087 + 0.5224614298 * I
371%! -0.6 + I * 0.8 , -0.7586657365 + 0.7277663879 * I
372%! -0.6 + I * 1. , -0.8803349115 + 0.9610513652 * I
373%! -0.6 + I * 1.2 , -1.042696526 + 1.230800819 * I
374%! -0.6 + I * 1.4 , -1.256964505 + 1.546195843 * I
375%! -0.6 + I * 1.6 , -1.540333527 + 1.916612621 * I
376%! -0.6 + I * 1.8 , -1.919816065 + 2.349972151 * I
377%! -0.6 + I * 2. , -2.438761841 + 2.848129496 * I
378%! -0.4 + I * 0. , -0.3891382858 + 0. * I
379%! -0.4 + I * 0.2 , -0.3971152026 + 0.1850563793 * I
380%! -0.4 + I * 0.4 , -0.4214662882 + 0.3775700801 * I
381%! -0.4 + I * 0.6 , -0.4635087491 + 0.5853434119 * I
382%! -0.4 + I * 0.8 , -0.5256432877 + 0.8168992398 * I
383%! -0.4 + I * 1. , -0.611733177 + 1.081923504 * I
384%! -0.4 + I * 1.2 , -0.7278102331 + 1.391822501 * I
385%! -0.4 + I * 1.4 , -0.8833807998 + 1.760456461 * I
386%! -0.4 + I * 1.6 , -1.093891878 + 2.205107766 * I
387%! -0.4 + I * 1.8 , -1.385545188 + 2.747638761 * I
388%! -0.4 + I * 2. , -1.805081271 + 3.41525351 * I
389%! -0.2 + I * 0. , -0.1986311721 + 0. * I
390%! -0.2 + I * 0.2 , -0.2027299916 + 0.1972398665 * I
391%! -0.2 + I * 0.4 , -0.2152524522 + 0.402598347 * I
392%! -0.2 + I * 0.6 , -0.2369100139 + 0.6246336356 * I
393%! -0.2 + I * 0.8 , -0.2690115146 + 0.8728455227 * I
394%! -0.2 + I * 1. , -0.3136938773 + 1.158323088 * I
395%! -0.2 + I * 1.2 , -0.3743615191 + 1.494672508 * I
396%! -0.2 + I * 1.4 , -0.4565255082 + 1.899466033 * I
397%! -0.2 + I * 1.6 , -0.5694611346 + 2.39667232 * I
398%! -0.2 + I * 1.8 , -0.7296612675 + 3.020990664 * I
399%! -0.2 + I * 2. , -0.9685726188 + 3.826022536 * I
400%! 0. + I * 0. , 0. + 0. * I
401%! 0. + I * 0.2 , 0. + 0.201376364 * I
402%! 0. + I * 0.4 , 0. + 0.4111029248 * I
403%! 0. + I * 0.6 , 0. + 0.6380048435 * I
404%! 0. + I * 0.8 , 0. + 0.8919321473 * I
405%! 0. + I * 1. , 0. + 1.184486615 * I
406%! 0. + I * 1.2 , 0. + 1.530096023 * I
407%! 0. + I * 1.4 , 0. + 1.947754612 * I
408%! 0. + I * 1.6 , 0. + 2.464074356 * I
409%! 0. + I * 1.8 , 0. + 3.119049475 * I
410%! 0. + I * 2. , 0. + 3.97786237 * I
411%! 0.2 + I * 0. , 0.1986311721 + 0. * I
412%! 0.2 + I * 0.2 , 0.2027299916 + 0.1972398665 * I
413%! 0.2 + I * 0.4 , 0.2152524522 + 0.402598347 * I
414%! 0.2 + I * 0.6 , 0.2369100139 + 0.6246336356 * I
415%! 0.2 + I * 0.8 , 0.2690115146 + 0.8728455227 * I
416%! 0.2 + I * 1. , 0.3136938773 + 1.158323088 * I
417%! 0.2 + I * 1.2 , 0.3743615191 + 1.494672508 * I
418%! 0.2 + I * 1.4 , 0.4565255082 + 1.899466033 * I
419%! 0.2 + I * 1.6 , 0.5694611346 + 2.39667232 * I
420%! 0.2 + I * 1.8 , 0.7296612675 + 3.020990664 * I
421%! 0.2 + I * 2. , 0.9685726188 + 3.826022536 * I
422%! 0.4 + I * 0. , 0.3891382858 + 0. * I
423%! 0.4 + I * 0.2 , 0.3971152026 + 0.1850563793 * I
424%! 0.4 + I * 0.4 , 0.4214662882 + 0.3775700801 * I
425%! 0.4 + I * 0.6 , 0.4635087491 + 0.5853434119 * I
426%! 0.4 + I * 0.8 , 0.5256432877 + 0.8168992398 * I
427%! 0.4 + I * 1. , 0.611733177 + 1.081923504 * I
428%! 0.4 + I * 1.2 , 0.7278102331 + 1.391822501 * I
429%! 0.4 + I * 1.4 , 0.8833807998 + 1.760456461 * I
430%! 0.4 + I * 1.6 , 1.093891878 + 2.205107766 * I
431%! 0.4 + I * 1.8 , 1.385545188 + 2.747638761 * I
432%! 0.4 + I * 2. , 1.805081271 + 3.41525351 * I
433%! 0.6 + I * 0. , 0.5638287208 + 0. * I
434%! 0.6 + I * 0.2 , 0.5752723012 + 0.1654722474 * I
435%! 0.6 + I * 0.4 , 0.610164314 + 0.3374004736 * I
436%! 0.6 + I * 0.6 , 0.6702507087 + 0.5224614298 * I
437%! 0.6 + I * 0.8 , 0.7586657365 + 0.7277663879 * I
438%! 0.6 + I * 1. , 0.8803349115 + 0.9610513652 * I
439%! 0.6 + I * 1.2 , 1.042696526 + 1.230800819 * I
440%! 0.6 + I * 1.4 , 1.256964505 + 1.546195843 * I
441%! 0.6 + I * 1.6 , 1.540333527 + 1.916612621 * I
442%! 0.6 + I * 1.8 , 1.919816065 + 2.349972151 * I
443%! 0.6 + I * 2. , 2.438761841 + 2.848129496 * I
444%! 0.8 + I * 0. , 0.7158157937 + 0. * I
445%! 0.8 + I * 0.2 , 0.7301746722 + 0.1394690862 * I
446%! 0.8 + I * 0.4 , 0.7738940898 + 0.2841710966 * I
447%! 0.8 + I * 0.6 , 0.8489542135 + 0.4394411376 * I
448%! 0.8 + I * 0.8 , 0.9588386397 + 0.6107824358 * I
449%! 0.8 + I * 1. , 1.108848724 + 0.8038415767 * I
450%! 0.8 + I * 1.2 , 1.306629972 + 1.024193359 * I
451%! 0.8 + I * 1.4 , 1.563010199 + 1.276740951 * I
452%! 0.8 + I * 1.6 , 1.893274688 + 1.564345558 * I
453%! 0.8 + I * 1.8 , 2.318944084 + 1.88491973 * I
454%! 0.8 + I * 2. , 2.869716809 + 2.225506523 * I
455%! 1. + I * 0. , 0.8392965923 + 0. * I
456%! 1. + I * 0.2 , 0.8559363407 + 0.108250955 * I
457%! 1. + I * 0.4 , 0.906529758 + 0.2204040232 * I
458%! 1. + I * 0.6 , 0.9931306727 + 0.3403783409 * I
459%! 1. + I * 0.8 , 1.119268095 + 0.4720784944 * I
460%! 1. + I * 1. , 1.29010951 + 0.6192468708 * I
461%! 1. + I * 1.2 , 1.512691987 + 0.7850890595 * I
462%! 1. + I * 1.4 , 1.796200374 + 0.9714821804 * I
463%! 1. + I * 1.6 , 2.152201882 + 1.177446413 * I
464%! 1. + I * 1.8 , 2.594547417 + 1.396378892 * I
465%! 1. + I * 2. , 3.138145339 + 1.611394819 * I
466%! ];
467%! CN = [
468%! -1. + I * 0. , 0.5436738271 + 0. * I
469%! -1. + I * 0.2 , 0.5541219664 + 0.1672121517 * I
470%! -1. + I * 0.4 , 0.5857703552 + 0.3410940893 * I
471%! -1. + I * 0.6 , 0.6395034233 + 0.5285979063 * I
472%! -1. + I * 0.8 , 0.716688504 + 0.7372552987 * I
473%! -1. + I * 1. , 0.8189576795 + 0.9755037374 * I
474%! -1. + I * 1.2 , 0.9477661951 + 1.253049471 * I
475%! -1. + I * 1.4 , 1.103540657 + 1.581252712 * I
476%! -1. + I * 1.6 , 1.284098214 + 1.973449038 * I
477%! -1. + I * 1.8 , 1.481835651 + 2.4449211 * I
478%! -1. + I * 2. , 1.679032464 + 3.011729224 * I
479%! -0.8 + I * 0. , 0.6982891589 + 0. * I
480%! -0.8 + I * 0.2 , 0.71187169 + 0.1430549855 * I
481%! -0.8 + I * 0.4 , 0.7530744458 + 0.2920273465 * I
482%! -0.8 + I * 0.6 , 0.8232501212 + 0.4531616768 * I
483%! -0.8 + I * 0.8 , 0.9245978896 + 0.6334016187 * I
484%! -0.8 + I * 1. , 1.060030206 + 0.8408616109 * I
485%! -0.8 + I * 1.2 , 1.232861756 + 1.085475913 * I
486%! -0.8 + I * 1.4 , 1.446126965 + 1.379933558 * I
487%! -0.8 + I * 1.6 , 1.701139468 + 1.741030588 * I
488%! -0.8 + I * 1.8 , 1.994526268 + 2.191509596 * I
489%! -0.8 + I * 2. , 2.312257188 + 2.762051518 * I
490%! -0.6 + I * 0. , 0.8258917445 + 0. * I
491%! -0.6 + I * 0.2 , 0.842151698 + 0.1130337928 * I
492%! -0.6 + I * 0.4 , 0.8915487431 + 0.2309124769 * I
493%! -0.6 + I * 0.6 , 0.975948103 + 0.3588102098 * I
494%! -0.6 + I * 0.8 , 1.098499209 + 0.5026234141 * I
495%! -0.6 + I * 1. , 1.263676101 + 0.6695125973 * I
496%! -0.6 + I * 1.2 , 1.477275851 + 0.8687285705 * I
497%! -0.6 + I * 1.4 , 1.746262523 + 1.112955966 * I
498%! -0.6 + I * 1.6 , 2.078179075 + 1.420581466 * I
499%! -0.6 + I * 1.8 , 2.479425208 + 1.819580713 * I
500%! -0.6 + I * 2. , 2.950586798 + 2.354077344 * I
501%! -0.4 + I * 0. , 0.9211793498 + 0. * I
502%! -0.4 + I * 0.2 , 0.9395019377 + 0.07822091534 * I
503%! -0.4 + I * 0.4 , 0.9952345231 + 0.1598950363 * I
504%! -0.4 + I * 0.6 , 1.090715991 + 0.2487465067 * I
505%! -0.4 + I * 0.8 , 1.229998843 + 0.34910407 * I
506%! -0.4 + I * 1. , 1.419103868 + 0.4663848201 * I
507%! -0.4 + I * 1.2 , 1.666426377 + 0.607877235 * I
508%! -0.4 + I * 1.4 , 1.983347336 + 0.7841054404 * I
509%! -0.4 + I * 1.6 , 2.385101684 + 1.01134031 * I
510%! -0.4 + I * 1.8 , 2.89185416 + 1.316448705 * I
511%! -0.4 + I * 2. , 3.529393374 + 1.74670531 * I
512%! -0.2 + I * 0. , 0.9800743122 + 0. * I
513%! -0.2 + I * 0.2 , 0.9997019476 + 0.03999835809 * I
514%! -0.2 + I * 0.4 , 1.059453907 + 0.08179712295 * I
515%! -0.2 + I * 0.6 , 1.16200643 + 0.1273503824 * I
516%! -0.2 + I * 0.8 , 1.312066413 + 0.1789585449 * I
517%! -0.2 + I * 1. , 1.516804331 + 0.2395555269 * I
518%! -0.2 + I * 1.2 , 1.786613221 + 0.313189147 * I
519%! -0.2 + I * 1.4 , 2.136422971 + 0.405890925 * I
520%! -0.2 + I * 1.6 , 2.588021972 + 0.527357091 * I
521%! -0.2 + I * 1.8 , 3.174302819 + 0.6944201617 * I
522%! -0.2 + I * 2. , 3.947361147 + 0.9387994989 * I
523%! 0. + I * 0. , 1. + 0. * I
524%! 0. + I * 0.2 , 1.020074723 + 0. * I
525%! 0. + I * 0.4 , 1.08120563 + 0. * I
526%! 0. + I * 0.6 , 1.18619146 + 0. * I
527%! 0. + I * 0.8 , 1.339978715 + 0. * I
528%! 0. + I * 1. , 1.550164037 + 0. * I
529%! 0. + I * 1.2 , 1.827893279 + 0. * I
530%! 0. + I * 1.4 , 2.189462954 + 0. * I
531%! 0. + I * 1.6 , 2.659259752 + 0. * I
532%! 0. + I * 1.8 , 3.275434266 + 0. * I
533%! 0. + I * 2. , 4.101632484 + 0. * I
534%! 0.2 + I * 0. , 0.9800743122 + 0. * I
535%! 0.2 + I * 0.2 , 0.9997019476 - 0.03999835809 * I
536%! 0.2 + I * 0.4 , 1.059453907 - 0.08179712295 * I
537%! 0.2 + I * 0.6 , 1.16200643 - 0.1273503824 * I
538%! 0.2 + I * 0.8 , 1.312066413 - 0.1789585449 * I
539%! 0.2 + I * 1. , 1.516804331 - 0.2395555269 * I
540%! 0.2 + I * 1.2 , 1.786613221 - 0.313189147 * I
541%! 0.2 + I * 1.4 , 2.136422971 - 0.405890925 * I
542%! 0.2 + I * 1.6 , 2.588021972 - 0.527357091 * I
543%! 0.2 + I * 1.8 , 3.174302819 - 0.6944201617 * I
544%! 0.2 + I * 2. , 3.947361147 - 0.9387994989 * I
545%! 0.4 + I * 0. , 0.9211793498 + 0. * I
546%! 0.4 + I * 0.2 , 0.9395019377 - 0.07822091534 * I
547%! 0.4 + I * 0.4 , 0.9952345231 - 0.1598950363 * I
548%! 0.4 + I * 0.6 , 1.090715991 - 0.2487465067 * I
549%! 0.4 + I * 0.8 , 1.229998843 - 0.34910407 * I
550%! 0.4 + I * 1. , 1.419103868 - 0.4663848201 * I
551%! 0.4 + I * 1.2 , 1.666426377 - 0.607877235 * I
552%! 0.4 + I * 1.4 , 1.983347336 - 0.7841054404 * I
553%! 0.4 + I * 1.6 , 2.385101684 - 1.01134031 * I
554%! 0.4 + I * 1.8 , 2.89185416 - 1.316448705 * I
555%! 0.4 + I * 2. , 3.529393374 - 1.74670531 * I
556%! 0.6 + I * 0. , 0.8258917445 + 0. * I
557%! 0.6 + I * 0.2 , 0.842151698 - 0.1130337928 * I
558%! 0.6 + I * 0.4 , 0.8915487431 - 0.2309124769 * I
559%! 0.6 + I * 0.6 , 0.975948103 - 0.3588102098 * I
560%! 0.6 + I * 0.8 , 1.098499209 - 0.5026234141 * I
561%! 0.6 + I * 1. , 1.263676101 - 0.6695125973 * I
562%! 0.6 + I * 1.2 , 1.477275851 - 0.8687285705 * I
563%! 0.6 + I * 1.4 , 1.746262523 - 1.112955966 * I
564%! 0.6 + I * 1.6 , 2.078179075 - 1.420581466 * I
565%! 0.6 + I * 1.8 , 2.479425208 - 1.819580713 * I
566%! 0.6 + I * 2. , 2.950586798 - 2.354077344 * I
567%! 0.8 + I * 0. , 0.6982891589 + 0. * I
568%! 0.8 + I * 0.2 , 0.71187169 - 0.1430549855 * I
569%! 0.8 + I * 0.4 , 0.7530744458 - 0.2920273465 * I
570%! 0.8 + I * 0.6 , 0.8232501212 - 0.4531616768 * I
571%! 0.8 + I * 0.8 , 0.9245978896 - 0.6334016187 * I
572%! 0.8 + I * 1. , 1.060030206 - 0.8408616109 * I
573%! 0.8 + I * 1.2 , 1.232861756 - 1.085475913 * I
574%! 0.8 + I * 1.4 , 1.446126965 - 1.379933558 * I
575%! 0.8 + I * 1.6 , 1.701139468 - 1.741030588 * I
576%! 0.8 + I * 1.8 , 1.994526268 - 2.191509596 * I
577%! 0.8 + I * 2. , 2.312257188 - 2.762051518 * I
578%! 1. + I * 0. , 0.5436738271 + 0. * I
579%! 1. + I * 0.2 , 0.5541219664 - 0.1672121517 * I
580%! 1. + I * 0.4 , 0.5857703552 - 0.3410940893 * I
581%! 1. + I * 0.6 , 0.6395034233 - 0.5285979063 * I
582%! 1. + I * 0.8 , 0.716688504 - 0.7372552987 * I
583%! 1. + I * 1. , 0.8189576795 - 0.9755037374 * I
584%! 1. + I * 1.2 , 0.9477661951 - 1.253049471 * I
585%! 1. + I * 1.4 , 1.103540657 - 1.581252712 * I
586%! 1. + I * 1.6 , 1.284098214 - 1.973449038 * I
587%! 1. + I * 1.8 , 1.481835651 - 2.4449211 * I
588%! 1. + I * 2. , 1.679032464 - 3.011729224 * I
589%! ];
590%! DN = [
591%! -1. + I * 0. , 0.9895776106 + 0. * I
592%! -1. + I * 0.2 , 0.9893361555 + 0.002756935338 * I
593%! -1. + I * 0.4 , 0.9885716856 + 0.005949639805 * I
594%! -1. + I * 0.6 , 0.9871564855 + 0.01008044183 * I
595%! -1. + I * 0.8 , 0.9848512162 + 0.01579337596 * I
596%! -1. + I * 1. , 0.9812582484 + 0.02396648455 * I
597%! -1. + I * 1.2 , 0.9757399152 + 0.0358288294 * I
598%! -1. + I * 1.4 , 0.9672786056 + 0.0531049859 * I
599%! -1. + I * 1.6 , 0.954237868 + 0.0781744383 * I
600%! -1. + I * 1.8 , 0.933957524 + 0.1141918269 * I
601%! -1. + I * 2. , 0.9020917489 + 0.1650142936 * I
602%! -0.8 + I * 0. , 0.992429635 + 0. * I
603%! -0.8 + I * 0.2 , 0.9924147861 + 0.003020708044 * I
604%! -0.8 + I * 0.4 , 0.99236555 + 0.00652359532 * I
605%! -0.8 + I * 0.6 , 0.9922655715 + 0.0110676219 * I
606%! -0.8 + I * 0.8 , 0.9920785856 + 0.01737733806 * I
607%! -0.8 + I * 1. , 0.9917291795 + 0.02645738598 * I
608%! -0.8 + I * 1.2 , 0.9910606387 + 0.03974949378 * I
609%! -0.8 + I * 1.4 , 0.9897435004 + 0.05935252515 * I
610%! -0.8 + I * 1.6 , 0.987077644 + 0.08832675281 * I
611%! -0.8 + I * 1.8 , 0.9815667458 + 0.1310872821 * I
612%! -0.8 + I * 2. , 0.970020127 + 0.1938136793 * I
613%! -0.6 + I * 0. , 0.9953099088 + 0. * I
614%! -0.6 + I * 0.2 , 0.995526009 + 0.002814772354 * I
615%! -0.6 + I * 0.4 , 0.9962071136 + 0.006083312292 * I
616%! -0.6 + I * 0.6 , 0.9974557125 + 0.01033463525 * I
617%! -0.6 + I * 0.8 , 0.9994560563 + 0.01626207722 * I
618%! -0.6 + I * 1. , 1.00249312 + 0.02484336286 * I
619%! -0.6 + I * 1.2 , 1.006973922 + 0.0375167093 * I
620%! -0.6 + I * 1.4 , 1.013436509 + 0.05645315628 * I
621%! -0.6 + I * 1.6 , 1.022504295 + 0.08499262247 * I
622%! -0.6 + I * 1.8 , 1.034670023 + 0.1283564595 * I
623%! -0.6 + I * 2. , 1.049599899 + 0.194806122 * I
624%! -0.4 + I * 0. , 0.9977686897 + 0. * I
625%! -0.4 + I * 0.2 , 0.9981836165 + 0.002167241934 * I
626%! -0.4 + I * 0.4 , 0.9994946045 + 0.004686808612 * I
627%! -0.4 + I * 0.6 , 1.001910789 + 0.00797144174 * I
628%! -0.4 + I * 0.8 , 1.005817375 + 0.01256717724 * I
629%! -0.4 + I * 1. , 1.011836374 + 0.01925509038 * I
630%! -0.4 + I * 1.2 , 1.020923572 + 0.02920828367 * I
631%! -0.4 + I * 1.4 , 1.034513743 + 0.04425213602 * I
632%! -0.4 + I * 1.6 , 1.054725746 + 0.06732276244 * I
633%! -0.4 + I * 1.8 , 1.08462027 + 0.1033236812 * I
634%! -0.4 + I * 2. , 1.128407402 + 0.1608240664 * I
635%! -0.2 + I * 0. , 0.9994191176 + 0. * I
636%! -0.2 + I * 0.2 , 0.9999683719 + 0.001177128019 * I
637%! -0.2 + I * 0.4 , 1.001705496 + 0.00254669712 * I
638%! -0.2 + I * 0.6 , 1.004913944 + 0.004334880912 * I
639%! -0.2 + I * 0.8 , 1.010120575 + 0.006842775622 * I
640%! -0.2 + I * 1. , 1.018189543 + 0.01050520136 * I
641%! -0.2 + I * 1.2 , 1.030482479 + 0.01598431001 * I
642%! -0.2 + I * 1.4 , 1.049126108 + 0.02433134655 * I
643%! -0.2 + I * 1.6 , 1.077466003 + 0.0372877718 * I
644%! -0.2 + I * 1.8 , 1.120863308 + 0.05789156398 * I
645%! -0.2 + I * 2. , 1.188162088 + 0.09181238708 * I
646%! 0. + I * 0. , 1. + 0. * I
647%! 0. + I * 0.2 , 1.000596698 + 0. * I
648%! 0. + I * 0.4 , 1.002484444 + 0. * I
649%! 0. + I * 0.6 , 1.005973379 + 0. * I
650%! 0. + I * 0.8 , 1.011641536 + 0. * I
651%! 0. + I * 1. , 1.020441432 + 0. * I
652%! 0. + I * 1.2 , 1.033885057 + 0. * I
653%! 0. + I * 1.4 , 1.054361188 + 0. * I
654%! 0. + I * 1.6 , 1.085694733 + 0. * I
655%! 0. + I * 1.8 , 1.134186672 + 0. * I
656%! 0. + I * 2. , 1.210701071 + 0. * I
657%! 0.2 + I * 0. , 0.9994191176 + 0. * I
658%! 0.2 + I * 0.2 , 0.9999683719 - 0.001177128019 * I
659%! 0.2 + I * 0.4 , 1.001705496 - 0.00254669712 * I
660%! 0.2 + I * 0.6 , 1.004913944 - 0.004334880912 * I
661%! 0.2 + I * 0.8 , 1.010120575 - 0.006842775622 * I
662%! 0.2 + I * 1. , 1.018189543 - 0.01050520136 * I
663%! 0.2 + I * 1.2 , 1.030482479 - 0.01598431001 * I
664%! 0.2 + I * 1.4 , 1.049126108 - 0.02433134655 * I
665%! 0.2 + I * 1.6 , 1.077466003 - 0.0372877718 * I
666%! 0.2 + I * 1.8 , 1.120863308 - 0.05789156398 * I
667%! 0.2 + I * 2. , 1.188162088 - 0.09181238708 * I
668%! 0.4 + I * 0. , 0.9977686897 + 0. * I
669%! 0.4 + I * 0.2 , 0.9981836165 - 0.002167241934 * I
670%! 0.4 + I * 0.4 , 0.9994946045 - 0.004686808612 * I
671%! 0.4 + I * 0.6 , 1.001910789 - 0.00797144174 * I
672%! 0.4 + I * 0.8 , 1.005817375 - 0.01256717724 * I
673%! 0.4 + I * 1. , 1.011836374 - 0.01925509038 * I
674%! 0.4 + I * 1.2 , 1.020923572 - 0.02920828367 * I
675%! 0.4 + I * 1.4 , 1.034513743 - 0.04425213602 * I
676%! 0.4 + I * 1.6 , 1.054725746 - 0.06732276244 * I
677%! 0.4 + I * 1.8 , 1.08462027 - 0.1033236812 * I
678%! 0.4 + I * 2. , 1.128407402 - 0.1608240664 * I
679%! 0.6 + I * 0. , 0.9953099088 + 0. * I
680%! 0.6 + I * 0.2 , 0.995526009 - 0.002814772354 * I
681%! 0.6 + I * 0.4 , 0.9962071136 - 0.006083312292 * I
682%! 0.6 + I * 0.6 , 0.9974557125 - 0.01033463525 * I
683%! 0.6 + I * 0.8 , 0.9994560563 - 0.01626207722 * I
684%! 0.6 + I * 1. , 1.00249312 - 0.02484336286 * I
685%! 0.6 + I * 1.2 , 1.006973922 - 0.0375167093 * I
686%! 0.6 + I * 1.4 , 1.013436509 - 0.05645315628 * I
687%! 0.6 + I * 1.6 , 1.022504295 - 0.08499262247 * I
688%! 0.6 + I * 1.8 , 1.034670023 - 0.1283564595 * I
689%! 0.6 + I * 2. , 1.049599899 - 0.194806122 * I
690%! 0.8 + I * 0. , 0.992429635 + 0. * I
691%! 0.8 + I * 0.2 , 0.9924147861 - 0.003020708044 * I
692%! 0.8 + I * 0.4 , 0.99236555 - 0.00652359532 * I
693%! 0.8 + I * 0.6 , 0.9922655715 - 0.0110676219 * I
694%! 0.8 + I * 0.8 , 0.9920785856 - 0.01737733806 * I
695%! 0.8 + I * 1. , 0.9917291795 - 0.02645738598 * I
696%! 0.8 + I * 1.2 , 0.9910606387 - 0.03974949378 * I
697%! 0.8 + I * 1.4 , 0.9897435004 - 0.05935252515 * I
698%! 0.8 + I * 1.6 , 0.987077644 - 0.08832675281 * I
699%! 0.8 + I * 1.8 , 0.9815667458 - 0.1310872821 * I
700%! 0.8 + I * 2. , 0.970020127 - 0.1938136793 * I
701%! 1. + I * 0. , 0.9895776106 + 0. * I
702%! 1. + I * 0.2 , 0.9893361555 - 0.002756935338 * I
703%! 1. + I * 0.4 , 0.9885716856 - 0.005949639805 * I
704%! 1. + I * 0.6 , 0.9871564855 - 0.01008044183 * I
705%! 1. + I * 0.8 , 0.9848512162 - 0.01579337596 * I
706%! 1. + I * 1. , 0.9812582484 - 0.02396648455 * I
707%! 1. + I * 1.2 , 0.9757399152 - 0.0358288294 * I
708%! 1. + I * 1.4 , 0.9672786056 - 0.0531049859 * I
709%! 1. + I * 1.6 , 0.954237868 - 0.0781744383 * I
710%! 1. + I * 1.8 , 0.933957524 - 0.1141918269 * I
711%! 1. + I * 2. , 0.9020917489 - 0.1650142936 * I
712%! ];
713%! tol = 1e-9;
714%! for x = 0:10
715%! for y = 0:10
716%! ur = -1 + x * 0.2;
717%! ui = y * 0.2;
718%! ii = 1 + y + x*11;
719%! [sn, cn, dn] = ellipj (ur + I * ui, m);
720%! assert (sn, SN(ii, 2), tol);
721%! assert (cn, CN(ii, 2), tol);
722%! assert (dn, DN(ii, 2), tol);
723%! endfor
724%! endfor
725
726## tests taken from test_ellipj.m
727%!test
728%! u1 = pi/3; m1 = 0;
729%! res1 = [sin(pi/3), cos(pi/3), 1];
730%! [sn,cn,dn] = ellipj (u1,m1);
731%! assert ([sn,cn,dn], res1, 10*eps);
732
733%!test
734%! u2 = log (2); m2 = 1;
735%! res2 = [ 3/5, 4/5, 4/5 ];
736%! [sn,cn,dn] = ellipj (u2,m2);
737%! assert ([sn,cn,dn], res2, 10*eps);
738
739%!test
740%! u3 = log (2)*1i; m3 = 0;
741%! res3 = [3i/4,5/4,1];
742%! [sn,cn,dn] = ellipj (u3,m3);
743%! assert ([sn,cn,dn], res3, 10*eps);
744
745%!test
746%! u4 = -1; m4 = tan (pi/8)^4;
747%! res4 = [-0.8392965923,0.5436738271,0.9895776106];
748%! [sn,cn,dn] = ellipj (u4, m4);
749%! assert ([sn,cn,dn], res4, 1e-10);
750
751%!test
752%! u5 = -0.2 + 0.4i; m5 = tan (pi/8)^4;
753%! res5 = [ -0.2152524522 + 0.402598347i, ...
754%! 1.059453907 + 0.08179712295i, ...
755%! 1.001705496 + 0.00254669712i ];
756%! [sn,cn,dn] = ellipj (u5,m5);
757%! assert ([sn,cn,dn], res5, 1e-9);
758
759%!test
760%! u6 = 0.2 + 0.6i; m6 = tan (pi/8)^4;
761%! res6 = [ 0.2369100139 + 0.624633635i, ...
762%! 1.16200643 - 0.1273503824i, ...
763%! 1.004913944 - 0.004334880912i ];
764%! [sn,cn,dn] = ellipj (u6,m6);
765%! assert ([sn,cn,dn], res6, 1e-8);
766
767%!test
768%! u7 = 0.8 + 0.8i; m7 = tan (pi/8)^4;
769%! res7 = [0.9588386397 + 0.6107824358i, ...
770%! 0.9245978896 - 0.6334016187i, ...
771%! 0.9920785856 - 0.01737733806i ];
772%! [sn,cn,dn] = ellipj (u7,m7);
773%! assert ([sn,cn,dn], res7, 1e-10);
774
775%!test
776%! u = [0,pi/6,pi/4,pi/2]; m=0;
777%! res = [0,1/2,1/sqrt(2),1;1,cos(pi/6),1/sqrt(2),0;1,1,1,1];
778%! [sn,cn,dn] = ellipj (u,m);
779%! assert ([sn;cn;dn], res, 100*eps);
780%! [sn,cn,dn] = ellipj (u',0);
781%! assert ([sn,cn,dn], res', 100*eps);
782
783## FIXME: need to check [real,complex]x[scalar,rowvec,colvec,matrix]x[u,m]
784
785## One test for u column vector x m row vector
786%!test
787%! u = [0,pi/6,pi/4,pi/2]'; m = [0 0 0 0];
788%! res = [0,1/2,1/sqrt(2),1;1,cos(pi/6),1/sqrt(2),0;1,1,1,1]';
789%! [sn,cn,dn] = ellipj (u,m);
790%! assert (sn, repmat (res(:,1), [1,4]), 100*eps);
791%! assert (cn, repmat (res(:,2), [1,4]), 100*eps);
792%! assert (dn, repmat (res(:,3), [1,4]), 100*eps);
793
794%!test
795%! ## Test Jacobi elliptic functions
796%! ## against "exact" solution from Mathematica 3.0
797%! ## David Billinghurst <David.Billinghurst@riotinto.com>
798%! ## 1 February 2001
799%! u = [ 0.25; 0.25; 0.20; 0.20; 0.672; 0.5];
800%! m = [ 0.0; 1.0; 0.19; 0.81; 0.36; 0.9999999999];
801%! S = [ sin(0.25);
802%! tanh(0.25);
803%! 0.19842311013970879516;
804%! 0.19762082367187648571;
805%! 0.6095196917919021945;
806%! 0.4621171572617320908 ];
807%! C = [ cos(0.25);
808%! sech(0.25);
809%! 0.9801164570409401062;
810%! 0.9802785369736752032;
811%! 0.7927709286533560550;
812%! 0.8868188839691764094 ];
813%! D = [ 1.0;
814%! sech(0.25);
815%! 0.9962526643271134302;
816%! 0.9840560289645665155;
817%! 0.9307281387786906491;
818%! 0.8868188839812167635 ];
819%! [sn,cn,dn] = ellipj (u,m);
820%! assert (sn, S, 8*eps);
821%! assert (cn, C, 8*eps);
822%! assert (dn, D, 8*eps);
823
824%!test <*43344>
825%! ## Test continuity of dn when cn is near zero
826%! m = 0.5;
827%! u = ellipke (0.5);
828%! x = [-1e-3, -1e-12, 0, 1e-12, 1e-3];
829%! [~, ~, dn] = ellipj (u + x, m);
830%! D = 1/sqrt (2) * ones (size (x));
831%! assert (dn, D, 1e-6);
832
833%!error ellipj ()
834%!error ellipj (1)
835%!error ellipj (1,2,3,4)
836%!warning <required value 0 <= M <= 1> ellipj (1,2);
837## FIXME: errors commented out until lasterr() truly returns the last error.
838%!#error <M must be a scalar or matrix> ellipj (1, "1")
839%!#error <U must be a scalar or matrix> ellipj ("1", 1)
840%!#error <U must be a scalar or matrix> ellipj ({1}, 1)
841%!#error <U must be a scalar or matrix> ellipj ({1, 2}, 1)
842%!#error <M must be a scalar or matrix> ellipj (1, {1, 2})
843%!#error <U must be a scalar or matrix> ellipj ("1", [1, 2])
844%!#error <U must be a scalar or matrix> ellipj ({1}, [1, 2])
845%!#error <U must be a scalar or matrix> ellipj ({1}, [1, 2])
846%!#error <U must be a scalar or matrix> ellipj ("1,2", [1, 2])
847%!#error <U must be a scalar or matrix> ellipj ({1, 2}, [1, 2])
848%!error <Invalid size combination for U and M> ellipj ([1:4], [1:3])
849%!error <Invalid size combination for U and M> ellipj (complex (1:4,1:4), [1:3])
850
851*/
852
853OCTAVE_NAMESPACE_END
octave_idx_type numel(void) const
Number of elements in the array.
Definition: Array.h:411
const dim_vector & dims(void) const
Return a const-reference so that dims ()(i) works efficiently.
Definition: Array.h:487
const T * data(void) const
Size of the specified dimension.
Definition: Array.h:616
OCTARRAY_API T * fortran_vec(void)
Size of the specified dimension.
Definition: Array.cc:1744
Vector representing the dimensions (size) of an Array.
Definition: dim-vector.h:94
octave_idx_type ndims(void) const
Number of dimensions.
Definition: dim-vector.h:257
OCTINTERP_API NDArray xarray_value(const char *fmt,...) const
bool isreal(void) const
Definition: ov.h:783
bool is_scalar_type(void) const
Definition: ov.h:789
OCTINTERP_API ComplexNDArray xcomplex_array_value(const char *fmt,...) const
OCTINTERP_API Complex xcomplex_value(const char *fmt,...) const
OCTINTERP_API double xdouble_value(const char *fmt,...) const
OCTINTERP_API void print_usage(void)
Definition: defun-int.h:72
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
Definition: defun.h:56
void error(const char *fmt,...)
Definition: error.cc:980
void ellipj(double u, double m, double &sn, double &cn, double &dn, double &err)
Definition: lo-specfun.cc:1536
std::complex< double > Complex
Definition: oct-cmplx.h:33
octave_value_list ovl(const OV_Args &... args)
Construct an octave_value_list with less typing.
Definition: ovl.h:211