Update tests of nthroot function.
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / nthroot.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2012 - DIGITEO - Adeline CARNIS
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- ENGLISH IMPOSED -->
8 // <-- CLI SHELL MODE -->
9 // unit tests for nthroot() function 
10 // =============================================================================
11 // Run with test_run('elementary_functions', 'nthroot', ['no_check_error_output'])
12 // 1. Interface
13 // ============
14 assert_checkfalse(execstr("nthroot()",          "errcatch") == 0);
15 refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "nthroot", 2);
16 assert_checkerror("nthroot()", refMsg);
17 assert_checkfalse(execstr("nthroot(1)",         "errcatch") == 0);
18 refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "nthroot", 2);
19 assert_checkerror("nthroot(1)", refMsg);
20 assert_checkfalse(execstr("nthroot(%i, 1)",    "errcatch") == 0);
21 refMsg = msprintf(_("%s: Wrong type for input argument #%d: Real scalar or matrix expected.\n"), "nthroot", 1);
22 assert_checkerror("nthroot(%i, 1)", refMsg);
23 assert_checkfalse(execstr("nthroot(%t, 1)",    "errcatch") == 0);
24 refMsg = msprintf(_("%s: Wrong type for input argument #%d: Real scalar or matrix expected.\n"), "nthroot", 1);
25 assert_checkerror("nthroot(%t, 1)", refMsg);
26 assert_checkfalse(execstr("nthroot(-2, %nan)", "errcatch") == 0);
27 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
28 assert_checkerror("nthroot(-2, %nan)", refMsg);
29 assert_checkfalse(execstr("nthroot(-2, %eps)", "errcatch") == 0);
30 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
31 assert_checkerror("nthroot(-2, %eps)", refMsg);
32 assert_checkfalse(execstr("nthroot(-3, 6)",     "errcatch") == 0);
33 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
34 assert_checkerror("nthroot(-3, 6)", refMsg);
35 assert_checkfalse(execstr("nthroot(-3, 0)",     "errcatch") == 0);
36 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
37 assert_checkerror("nthroot(-3, 0)", refMsg);
38 assert_checkfalse(execstr("nthroot(-%inf, -2)", "errcatch") == 0);
39 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
40 assert_checkerror("nthroot(-%inf, -2)", refMsg);
41 assert_checkfalse(execstr("nthroot(-2, -2)",     "errcatch") == 0);
42 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
43 assert_checkerror("nthroot(-2, -2)", refMsg);
44 assert_checkfalse(execstr("nthroot(-2, 2)",      "errcatch") == 0);
45 refMsg = msprintf(_("%s: If x is negative, then n must contain odd integers only.\n"), "nthroot");
46 assert_checkerror("nthroot(-2, 2)", refMsg);
47 assert_checktrue(nthroot(3, []) == 3);
48 // 2. Singular Values
49 // ==================
50 assert_checkalmostequal(nthroot(2   ,-2), 0.7071068, 1.e-5);
51 assert_checkalmostequal(nthroot(2   , 2), 1.4142136, 1.e-5);
52 assert_checkalmostequal(nthroot(%eps, 3), 0.0000061, 1.e-2);
53 assert_checkalmostequal(nthroot([1 2], 2)    , [1 1.4142136], 1.e-5);
54 assert_checkalmostequal(nthroot([1 2], [2 2]), [1 1.4142136], 1.e-5);
55 assert_checkequal(nthroot(-2,  %inf), -1);
56 assert_checkequal(nthroot( 3 , %inf), 1);
57 assert_checkequal(nthroot( 3 ,-%inf), 1);
58 assert_checkequal(nthroot(-3,  %inf), -1);
59 assert_checkequal(nthroot( 3 , %nan), %nan);
60 assert_checkequal(nthroot( 3 ,-%nan), %nan);
61 assert_checkequal(nthroot( 3 , %eps), %inf);
62 assert_checkequal(nthroot( 3 ,-%eps), 0);
63 assert_checkequal(nthroot( 3 , 0), %inf);
64 assert_checkequal(nthroot( 1 , 0), %nan);
65 assert_checkequal(nthroot([1 2], %inf), [1 1]);
66 assert_checkequal(nthroot([1 2], %nan), [%nan %nan]);
67 assert_checkequal(nthroot([1 2], %eps), [1 %inf]);
68 assert_checkequal(nthroot([1 2], 0),    [%nan %inf]);
69 assert_checkequal(nthroot([1 2], [%inf %inf]), [1 1]);
70 assert_checkequal(nthroot([1 2], [%nan %nan]), [%nan %nan]);
71 assert_checkequal(nthroot([1 2], [%eps %eps]), [1 %inf]);
72 assert_checkequal(nthroot([1 2], [0 0]),       [%nan %inf]);
73 assert_checkequal(nthroot(0, 0),    0);
74 assert_checkequal(nthroot(0, 7),    0);
75 assert_checkequal(nthroot(0,-7),    %inf);
76 assert_checkequal(nthroot(0, %inf), 1);
77 assert_checkequal(nthroot(0,-%inf), 1);
78 assert_checkequal(nthroot(0, %nan), %nan);
79 assert_checkequal(nthroot(0, %eps), 0);
80 assert_checkequal(nthroot(0,-%eps), %inf);
81 assert_checkequal(nthroot([0;-1], %inf), [1; -1]);
82 assert_checkequal(nthroot([0; 1], 0),    [0; %nan]);
83 assert_checkequal(nthroot([0;-1], [%inf; %inf]), [1; -1]);
84 assert_checkequal(nthroot([0; 1], [0; 0]),       [0; %nan]);
85 // 3. Empty Matrix
86 //==================
87 assert_checkequal(nthroot([],-2),    []);
88 assert_checkequal(nthroot([], 3),    []);
89 assert_checkequal(nthroot([], %nan), []);
90 assert_checkequal(nthroot([], %inf), []);
91 assert_checkequal(nthroot([],-%inf), []);
92 assert_checkequal(nthroot([], %eps), []);
93 assert_checkequal(nthroot([],-%eps), []);
94 assert_checkequal(nthroot([], 0),    []);
95 // 4. Limit Values
96 // ================
97 assert_checkequal(nthroot(-%inf,-7),    0);
98 assert_checkequal(nthroot(-%inf, 7),   -%inf);
99 assert_checkequal(nthroot( %inf,-7),    0);
100 assert_checkequal(nthroot( %inf, 7),    %inf);
101 assert_checkequal(nthroot( %inf, %inf), 1);
102 assert_checkequal(nthroot( %inf,-%inf), 1);
103 assert_checkequal(nthroot(-%inf, %inf), -1);
104 assert_checkequal(nthroot(-%inf,-%inf), -1);
105 assert_checkequal(nthroot( %inf, %inf), 1);
106 assert_checkequal(nthroot( %inf, %nan), %nan);
107 assert_checkequal(nthroot( %inf, %eps), %inf);
108 assert_checkequal(nthroot( %inf,-%eps), 0);
109 assert_checkequal(nthroot( %inf, 0),    %inf);
110 assert_checkequal(nthroot([%inf; %nan], 3),    [%inf; %nan]);
111 assert_checkequal(nthroot([%inf; %nan], %nan), [%nan; %nan]);
112 assert_checkequal(nthroot([%inf; %nan], 0),    [%inf; %nan]);
113 assert_checkequal(nthroot([%inf; %nan], [3; 3]),       [%inf; %nan]);
114 assert_checkequal(nthroot([%inf; %nan], [%nan; %nan]), [%nan; %nan]);
115 assert_checkequal(nthroot([%inf; %nan], [0; 0]),       [%inf; %nan]);
116 assert_checkequal(nthroot([%inf; %eps], %eps), [%inf; 0]);
117 assert_checkequal(nthroot([%inf; %eps], %nan), [%nan; %nan]);
118 assert_checkequal(nthroot([%inf; 1],    0),    [%inf; %nan]);
119 assert_checkequal(nthroot([%inf; %eps], [%eps; %eps]), [%inf; 0]);
120 assert_checkequal(nthroot([%inf; %eps], [%nan; %nan]), [%nan; %nan]);
121 assert_checkequal(nthroot([%inf; 1],    [0; 0]),       [%inf; %nan]);
122 // 5. Not A Number
123 // =================
124 assert_checkequal(nthroot(%nan,-2),   %nan);
125 assert_checkequal(nthroot(%nan, %inf), %nan);
126 assert_checkequal(nthroot(%nan,-%inf), %nan);
127 assert_checkequal(nthroot(%nan,-%eps), %nan);
128 assert_checkequal(nthroot(%nan, 0),    %nan);
129 // 6. X = %eps
130 // ===========
131 assert_checkequal(nthroot( %eps, %inf), 1);
132 assert_checkequal(nthroot( %eps,-%inf), 1);
133 assert_checkequal(nthroot(-%eps, %inf),-1);
134 assert_checkequal(nthroot(-%eps,-%inf),-1);
135 assert_checkequal(nthroot( %eps, %inf), 1);
136 assert_checkequal(nthroot( %eps, %nan), %nan);
137 assert_checkequal(nthroot( %eps, %eps), 0);
138 assert_checkequal(nthroot( %eps,-%eps), %inf);
139 assert_checkequal(nthroot( %eps, 0),    0);