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