[optimization] fix tests
[scilab.git] / scilab / modules / string / tests / nonreg_tests / bug_14099.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8 // <-- Non-regression test for bug 14099 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/14099
12 //
13 // <-- Short Description -->
14 // string(polynomial) and string(rational) had badly formatted outputs
15 //  and were not vectorized
16 //
17 // * Coefficients equal to +1|-1 were not masked: 1x^n  =>  x^n
18 // * Coefficients with imaginary parts were output as "%i*##": =>"##i"
19 // * Pure imaginary coefficients had parentheses: (%i*3)z^n  => 3iz^n
20 // * format("e") was as well applied to exponents: 3.4D+04x^2.0D+00 => 3.4D+04x^2
21 format("v", 10);
22 // Single polynomials
23     // Constantes
24 assert_checkequal(string(0*%z), ["";"0"]);
25 assert_checkequal(string(0*%i*%z), ["";"0"]);
26 assert_checkequal(string(3+0*%z), ["";"3"]);
27 assert_checkequal(string(-3+0*%z), ["";"- 3"]);
28 assert_checkequal(string(3*%i+0*%z), ["";"3i"]);
29 assert_checkequal(string(-3*%i+0*%z), ["";"- 3i"]);
30 assert_checkequal(string(1-3*%i+0*%z), ["";"(1-3i)"]);
31 assert_checkequal(string(-1+3*%i+0*%z), ["";"- (1-3i)"]);
32 assert_checkequal(string(-1-3*%i+0*%z), ["";"- (1+3i)"]);
33     //
34 assert_checkequal(string(-3*%i*%z), ["";"- 3iz"]);
35 assert_checkequal(string((1-3*%i)*%z), ["";"(1-3i)z"]);
36 assert_checkequal(string((-1+3*%i)*%z), ["";"- (1-3i)z"]);
37 assert_checkequal(string((-1-3*%i)*%z), ["";"- (1+3i)z"]);
38 assert_checkequal(string(-3*%i*%z^13), ["     13";"- 3iz"]);
39 assert_checkequal(string((1-3*%i)*%z^13), ["       13";"(1-3i)z"]);
40 assert_checkequal(string((-1+3*%i)*%z^13), ["         13";"- (1-3i)z"]);
41 assert_checkequal(string((-1-3*%i)*%z^13), ["         13";"- (1+3i)z"]);
42 p = (1-%i) - %i*%z -3*%i*%z^8 + 4*%z^15 - %i*%z^18;
43 assert_checktrue(and(string(p)==["                8    15   18"; "(1-i) - iz - 3iz + 4z - iz"]));
44 p = - %i*%z -3*%i*%z^8 + 4*%z^15 - %i*%z^18;
45 assert_checktrue(and(string(p)==["          8    15   18"; "- iz - 3iz + 4z - iz"]));
46 // Matrix of polynomials
47 ps = "[0*z, 3+0*%i*z; -z, -%i*z;  -z^17, -%i*z^17;  "+..
48      "1-z+5*z^3+41*z^20, (1+(1-%i)*z)^3-1;  "+..
49      "-z+z^3+3*z^4, (%i-2)-3*z-3*%i*z^13+(1+7*%i)*z^20; ]";
50 z = poly(0,"x");
51 p = evstr(ps);
52 refS = [" "                   " "
53         "0"                   "3"
54         "   "                 "    "
55         "- x"                 "- ix"
56         "   17"               "    17"
57         "- x"                 "- ix"
58         "          3     20"  "             2         3"
59         "1 - x + 5x + 41x"    "(3-3i)x - 6ix - (2+2i)x"
60         "       3    4"       "                  13        20"
61         "- x + x + 3x"        "- (2-i) - 3x - 3ix + (1+7i)x"
62         ];
63 assert_checktrue(and(string(p)==refS));
64 x = poly(0,"x");
65 p = "[64.692+38.966*x-36.580*x^2+90.044*x^3-93.111*x^4;64.381-74.963*x+52.75*x^2-1.8822*x^3+32.721*x^4]";
66 p = evstr(p);
67 format(6);
68 refS = ["                       2        3        4"
69         "64.69 + 38.97x - 36.58x + 90.04x - 93.11x"
70         "                       2        3        4"
71         "64.38 - 74.96x + 52.75x - 1.882x + 32.72x"
72        ];
73 assert_checktrue(and(string(p)==refS));
74 p = p/3+p*%i/4;
75 format(5);
76 refS = ["                                            2               3               4"
77         "(21.6+16.2i) + (13.0+9.74i)x - (12.2+9.14i)x + (30.0+22.5i)x - (31.0+23.3i)x"
78         "                                            2               3               4"
79         "(21.5+16.1i) - (25.0+18.7i)x + (17.6+13.2i)x - (0.63+0.47i)x + (10.9+8.18i)x"
80         ];
81 assert_checktrue(and(string(p)==refS));
82 // with %nan and %inf
83 p = poly([%nan 2 3 -%nan 8],"x","coeff");
84 p = p+%i*p/2;
85 //""""+string(p)+""""
86 refS = ["                               2             3         4"
87         "(Nan+Nani) + (2+i)x + (3+1.5i)x + (Nan+Nani)x + (8+4i)x"
88         ];
89 assert_checktrue(and(string(p)==refS));
90 // with format("e")
91 format("e",8);
92 ps = "[0*z, 3+0*%i*z; -z, -%i*z;"+..
93      "1+5*z^3-%pi*z^17,  -z^17; "+..
94      "(1+(1-%i)*z)^3-1+%e*%i*z^11, -%i*z^17]";
95 z = poly(0,"x");
96 p = evstr(ps);
97 if getos()=="Windows" then // The exponential notation may depend on the OS
98     refS = [" "                                                                        "       "
99             "0"                                                                        "3.0D+00"
100             "   "                                                                      "    "
101             "- x"                                                                      "- ix"
102             "                  3          17"                                          "   17"
103             "1.0D+00 + 5.0D+00x - 3.1D+00x"                                            "- x"
104             "                                 2                       3           11"  "    17"
105             "(3.0D+00 - 3.0D+00i)x - 6.0D+00ix - (2.0D+00 + 2.0D+00i)x + 2.7D+00ix"    "- ix"
106             ];
107     assert_checktrue(and(string(p)==refS));
108 end
109 // With a name of variable longer than 1 character:
110 x = poly(0,"ABC");
111 p = (2-%i+x).^[2 4 ; 1 3];
112 format("v",10);
113 //""""+string(p)+""""
114 refS = ["                        2"  "                                    2           3     4"
115         "(3-4i) + (4-2i)ABC + ABC"   "- (7+24i) + (8-44i)ABC + (18-24i)ABC + (8-4i)ABC + ABC"
116         "           "                "                                2     3"
117         "(2-i) + ABC"                "(2-11i) + (9-12i)ABC + (6-3i)ABC + ABC"
118        ];
119 assert_checktrue(and(string(p)==refS));