Polynomials: fix for lcm and gcd
[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 = int32([2^2*3^5, 2^3*3^2, 2^2*3^4*5]);
30 [thegcd, U] = gcd(V);
31 assert_checkequal(V*U, int32([0 0 36]));
32 assert_checkequal(gcd(uint8([15 20])), uint8(5));
33 assert_checkequal(gcd([iconvert(15, 4) iconvert(20, 4)]), int32(5));
34 assert_checkequal(gcd(iconvert([15 20], 4)), int32(5));
35 // Trying to use doubles should yield an error
36 refMsg2 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "gcd", 1);
37 assert_checkerror("gcd([15 20]);", refMsg2);
38
39
40 ////////////////// lcm
41 // Normal behavior, with polynomials
42 s = poly(0, 's');
43 p = [s, s*(s+1)^2, s^2*(s+2)];
44 [pp, fact] = lcm(p);
45 assert_checkequal(pp, [2*s^2 + 5*s^3 + 4*s^4 + s^5]);
46
47 // Normal behavior, with integers
48 V = int32([2^2*3^5, 2^3*3^2, 2^2*3^4*5]);
49 assert_checkequal(lcm(V), int32(9720));
50 // Trying to use doubles should yield an error
51 refMsg4 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "lcm", 1);
52 assert_checkerror("lcm([15 20]);", refMsg4);