2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / Test / Mono.Math / GcdBigTest.cs
1 //
2 // MonoTests.Mono.Math.GcdBigTest.cs
3 //
4 // Authors:
5 //      Ben Maurer
6 //
7 // Copyright (c) 2003 Ben Maurer. All rights reserved
8 //
9
10 using System;
11 using Mono.Math;
12 using NUnit.Framework;
13
14 namespace MonoTests.Mono.Math {
15
16         public abstract class GcdBig_Base : BigIntegerTestSet {
17
18                 BigInteger A, B, aGcdB;
19
20                 public GcdBig_Base() 
21                 {
22                         A = new BigInteger(a);
23                         B = new BigInteger(b);
24                         aGcdB = new BigInteger(ExpectedAgcdB);
25                 }
26                 
27                 public abstract uint[] a {
28                         get;
29                 }
30                 public abstract uint[] b {
31                         get;
32                 }
33
34                 public abstract uint[] ExpectedAgcdB {
35                         get;
36                 }
37
38                 [Test]
39                 public void GcdPP()
40                 {
41                         Expect( A.gcd(B), aGcdB );
42                 }
43
44         }
45
46         public class GcdBig_Rand2048a512b : GcdBig_Base {
47         
48                 public override uint[] a {
49                         get {
50                                 return new uint[] {
51                                         0xaae18fa1, 0x58e1e9fc, 0x836350a0, 0x23d2a12d, 0x1aec1bdc, 0xad4a3b30,
52                                         0x40dc1d27, 0x625277fb, 0xddfbee25, 0xc1820dac, 0x4418603a, 0x5aec122c,
53                                         0x58b70181, 0x129d6b33, 0x6c4ed37e, 0x70808dd0, 0xed55b079, 0x706f15f3,
54                                         0x1a84b3ac, 0x088f1679, 0xcbf2be66, 0xb97a885e, 0xa2c95b95, 0xd44ebb83,
55                                         0x69351a38, 0x21d3cdb2, 0x30844c5c, 0x5abf8d7a, 0xb663c3de, 0x3ce2fcc5,
56                                         0x80b42a05, 0xa0a8aca3, 0x31d42948, 0x469d8ad5, 0xe0f66f7e, 0x3250dac1,
57                                         0xb4450067, 0xb247ad34, 0xbfd74c70, 0xfd1e29fa, 0x4050dc77, 0x827763b9,
58                                         0xba41410d, 0x42494b62, 0x99ef13a1, 0x55c957ec, 0x1e7dd0fc, 0x6c4cccdf,
59                                         0x981128e0, 0xc7c01688, 0x4ae5116c, 0x9b24d3c8, 0x623af290, 0x31ac1c1e,
60                                         0x0891f2f1, 0x678ab7ee, 0x6169af02, 0x2479511c, 0x7cea2114, 0xf13d541c,
61                                         0x0f54f253, 0xf5dd2553, 0xc0ea9613, 0x84a0c7b2
62                                 };
63                         }
64                 }
65
66                 public override uint[] b {
67                         get {
68                                 return new uint[] {
69                                         0x83ab64ef, 0x1350b335, 0xbf5f150d, 0x399a2487, 0xc1b76d63, 0xdf3e59ad,
70                                         0x2ed3b4fa, 0x9a6ad972, 0xb6e791c5, 0xdd7a8664, 0x802f8364, 0xf1a8617f,
71                                         0xb036a74a, 0x452ac130, 0x727e194f, 0x3dd8cfe8
72                                 };
73                         }
74                 }
75
76                 public override uint[] ExpectedAgcdB {
77                         get {
78                                 return new uint[] {
79                                         0x00000006
80                                 };
81                         }
82                 }
83         }
84
85         public class GcdBig_Rand512a512b : GcdBig_Base {
86
87                 public override uint[] a {
88                         get {
89                                 return new uint[] {
90                                         0x7bc1fb0e, 0x0335547e, 0x0e85b746, 0x1e7554d2, 0x77515958, 0xadf072c8,
91                                         0xdb03eb22, 0xdcedf7e2, 0x8f923f6a, 0xf124052d, 0x55d623f4, 0x29083f62,
92                                         0x66eaa78e, 0xfe819e63, 0xf8229bde, 0xe155c05b
93                                 };
94                         }
95                 }
96
97                 public override uint[] b {
98                         get {
99                                 return new uint[] {
100                                         0xe5320f2e, 0x379803d7, 0x24363d84, 0xfd61c43c, 0xa4e6ca6f, 0x16628f59,
101                                         0xddeb6557, 0xd904639c, 0x55f59c2f, 0x6ba21e54, 0x81107aa9, 0x47a4653c,
102                                         0xcc0a5889, 0xb6abcaec, 0xf6b58d60, 0xf8cc7eeb
103                                 };
104                         }
105                 }
106
107                 public override uint[] ExpectedAgcdB {
108                         get {
109                                 return new uint[] {
110                                         0x00000001
111                                 };
112                         }
113                 }
114         }
115 }