Additional test cases for package pslq.
[maxima.git] / share / pslq / rtest_pslq.mac
blobc55ad505ca3aaf10c7670f98e52e270feb7e76ae
1 (kill (all),
2  reset (),
3  0);
4 0;
6 (root: float (sin (%pi/12)),
7  L: makelist (root^i, i, 0, 4),
8  m: pslq_integer_relation(%%));
9 [- 1, 0, 16, 0, - 16];
11 /* verify that this is the small number we expect it to be */
12 float (10^(2 - fpprec));
13 1.0E-14;
15 is (abs (m . L) < 10^(2 - fpprec));
16 true;
18 guess_exact_value (0.0);
21 guess_exact_value (1.0);
24 guess_exact_value (float (%pi));
25 %pi;
27 guess_exact_value (float (sin (%pi/12)));
28 sqrt(2 - sqrt(3))/2;
30 guess_exact_value (float (1/(1 + f(%e))));
31 1/(1 + f(%e));
33 guess_exact_value (float ([1/sqrt(7), 11/sqrt(7), 19/sqrt(17)]));
34 [1/sqrt(7), 11/sqrt(7), 19/sqrt(17)];
36 guess_exact_value ([1.5, 2.75, 8.875, -1.5, -2.75, -8.875]);
37 [3/2, 11/4, 71/8, -3/2, -11/4, -71/8];
39 guess_exact_value ([123, foo/bar, sin(%e)/2]);
40 [123, foo/bar, sin(%e)/2];
42 map (guess_exact_value, makelist (float (k/10), k, 1, 9));
43 [1/10, 1/5, 3/10, 2/5, 1/2, 3/5, 7/10, 4/5, 9/10];
45 /* example from: https://arminstraub.com/downloads/math/pslq.pdf */
46 guess_exact_value (3.6502815398728847452);
47 sqrt(2*sqrt(10) + 7);
49 /* bug reported to mailing list: guess_exact_value(0.1) triggers division by zero */
50 guess_exact_value(0.1);
51 1/10;
53 /* additional cases related to guess_exact_value(0.1) */
55 pslq_integer_relation ([1.0, 0.1, 0.010000000000000002, 0.0010000000000000002, 1.0000000000000002E-4]);
56 [1, - 10, 0, 0, 0];
58 pslq_integer_relation (float (makelist (1/10^k, k, 0, 4)));
59 [1, - 10, 0, 0, 0];
61 pslq_integer_relation (makelist (0.1^k, k, 0, 4));
62 [1, - 10, 0, 0, 0];
64 map (guess_exact_value, [0.125, 0.2, 0.25, float(1/15), float(1/17)]);
65 [1/8, 1/5, 1/4, 1/15, 1/17];
67 foolist: apply ('append, makelist (makelist (p/q, p, 1, 20 - q), q, 1, 19));
68 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,1/2,1,3/2,2,5/2,3,7/2,4,9/2,
69  5,11/2,6,13/2,7,15/2,8,17/2,9,1/3,2/3,1,4/3,5/3,2,7/3,8/3,3,10/3,11/3,4,13/3,
70  14/3,5,16/3,17/3,1/4,1/2,3/4,1,5/4,3/2,7/4,2,9/4,5/2,11/4,3,13/4,7/2,15/4,4,
71  1/5,2/5,3/5,4/5,1,6/5,7/5,8/5,9/5,2,11/5,12/5,13/5,14/5,3,1/6,1/3,1/2,2/3,
72  5/6,1,7/6,4/3,3/2,5/3,11/6,2,13/6,7/3,1/7,2/7,3/7,4/7,5/7,6/7,1,8/7,9/7,10/7,
73  11/7,12/7,13/7,1/8,1/4,3/8,1/2,5/8,3/4,7/8,1,9/8,5/4,11/8,3/2,1/9,2/9,1/3,
74  4/9,5/9,2/3,7/9,8/9,1,10/9,11/9,1/10,1/5,3/10,2/5,1/2,3/5,7/10,4/5,9/10,1,
75  1/11,2/11,3/11,4/11,5/11,6/11,7/11,8/11,9/11,1/12,1/6,1/4,1/3,5/12,1/2,7/12,
76  2/3,1/13,2/13,3/13,4/13,5/13,6/13,7/13,1/14,1/7,3/14,2/7,5/14,3/7,1/15,2/15,
77  1/5,4/15,1/3,1/16,1/8,3/16,1/4,1/17,2/17,3/17,1/18,1/9,1/19]$
79 map (guess_exact_value, float (foolist));
80 ''foolist;
82 /* still more examples */
84 guess_exact_value (float (%phi));
85 (sqrt(5) + 1)/2;
87 guess_exact_value (float (1/%phi));
88 (sqrt(5) - 1)/2;
90 guess_exact_value (float (zeta (2)));
91 (%pi^2)/6;
93 guess_exact_value (float (zeta (4)));
94 (%pi^4)/90;