Polynomials multiplication & addition fixed by copying Scilab 5.X algorithm.
[scilab.git] / scilab / modules / polynomials / tests / nonreg_tests / bug_12679.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug 12679 -->
9 //
10 // <-- CLI SHELL MODE -->
11 //
12 // <-- Bugzilla URL -->
13 // http://bugzilla.scilab.org/show_bug.cgi?id=12679
14 //
15 // <-- Short Description -->
16 // Checks on gcd() and lcm() arguments
17
18 // Run with test_run('polynomials', 'bug_12679', ['no_check_error_output'])
19
20 ////////////////// gcd
21 // Normal behavior, with polynomials
22 s = poly(0, "s");
23 p = [s, s*(s+1)^2, 2*s^2+s^3];
24 [pgcd, u] = gcd(p);
25 assert_checkequal(p*u, [0 0 s]);
26 // Complex polynomials should yield an error
27
28 // Normal behavior, with integers
29 V = [2^2*3^5 2^3*3^2 2^2*3^4*5];
30 V_int = int32(V);
31 [thegcd, U] = gcd(V);
32 [thegcd, U_int] = gcd(V);
33 assert_checkequal(V*U, int32([0 0 36]));
34 assert_checkequal(V_int*U_int, int32([0 0 36]));
35 assert_checkequal(gcd(uint8([15 20])), uint8(5));
36 assert_checkequal(gcd([iconvert(15, 4) iconvert(20, 4)]), int32(5));
37 assert_checkequal(gcd(iconvert([15 20], 4)), int32(5));
38 // Trying to use booleans, strings or decimals should yield an error
39 refMsg2 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "gcd", 1);
40 assert_checkerror("gcd(%t);", refMsg2);
41 assert_checkerror("gcd(1.5);", refMsg2);
42 assert_checkerror("gcd(""string"");", refMsg2);
43
44
45 ////////////////// lcm
46 // Normal behavior, with polynomials
47 s = poly(0, "s");
48 p = [s, s*(s+1)^2, s^2*(s+2)];
49 [pp, fact] = lcm(p);
50 assert_checkequal(pp, [2*s^2 + 5*s^3 + 4*s^4 + s^5]);
51
52 // Normal behavior, with integers
53 V = [2^2*3^5 2^3*3^2 2^2*3^4*5];
54 V_int = int32(V);
55 assert_checkequal(lcm(V), int32(9720));
56 assert_checkequal(lcm(V_int), int32(9720));
57 // Trying to use booleans, strings or decimals should yield an error
58 refMsg4 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "lcm", 1);
59 assert_checkerror("lcm(%t);", refMsg4);
60 assert_checkerror("lcm(1.5);", refMsg4);
61 assert_checkerror("lcm(""string"");", refMsg4);