|
1 |
| -using DynamicPolynomials |
| 1 | +using BenchmarkTools |
| 2 | + |
| 3 | +function bench1(x, y, z, T=Rational{BigInt}) |
| 4 | + o = one(T) |
| 5 | + p = (o * x + o * y^2) * (o * z^3 + o * y^2 + o * x) |
| 6 | + q = (o * x + o * y + o * z) * (o * x^2 + o * y) |
| 7 | + @benchmark gcd($p, $q) |
| 8 | +end |
| 9 | + |
| 10 | +function bench2(x, y, z, t) |
| 11 | + p = x * y + 3 * (z * t) |
| 12 | + q = (p + 1) * p |
| 13 | + @benchmark gcd($p, $q) |
| 14 | +end |
| 15 | + |
| 16 | +function bench3(x, y, z, t) |
| 17 | + c1 = 10*(x * z + x) |
| 18 | + c2 = 2*(x^2 + z) |
| 19 | + c3 = 2*(2 - z ) |
| 20 | + c4 = 20*(x * z^2) |
| 21 | + e1 = 0 |
| 22 | + e2 = 5 |
| 23 | + e3 = 7 |
| 24 | + e4 = 10 |
| 25 | + p = c1 * y^e1 + c2 * y^e2 + c3 * y^e3 + c4 * y^e4 |
| 26 | + q = prod(i->p + i, 0:3) |
| 27 | + @benchmark for i in 0:3 |
| 28 | + gcd($p + i, $q) |
| 29 | + end |
| 30 | +end |
| 31 | + |
| 32 | +import SIMDPolynomials |
| 33 | +function bench_SP() |
| 34 | + x, y, z, t = [SIMDPolynomials.PackedMonomial{4,7}(i) for i in 0:3] |
| 35 | + b1 = bench1(x, y, z) |
| 36 | + b2 = bench2(x, y, z, t) |
| 37 | + b3 = bench3(x, y, z, t) |
| 38 | + return b1, b2, b3 |
| 39 | +end |
| 40 | + |
| 41 | +import DynamicPolynomials |
| 42 | +function bench_DP() |
| 43 | + DynamicPolynomials.@polyvar x y z t |
| 44 | + b1 = bench1(x, y, z) |
| 45 | + b2 = bench2(x, y, z, t) |
| 46 | + b3 = bench3(x, y, z, t) |
| 47 | + return b1, b2, b3 |
| 48 | +end |
| 49 | + |
| 50 | +import TypedPolynomials |
| 51 | +function bench_TP() |
| 52 | + TypedPolynomials.@polyvar x y z t |
| 53 | + b1 = bench1(x, y, z) |
| 54 | + b2 = bench2(x, y, z, t) |
| 55 | + b3 = bench3(x, y, z, t) |
| 56 | + return b1, b2, b3 |
| 57 | +end |
| 58 | + |
| 59 | +include("table.jl") |
2 | 60 |
|
3 | 61 | function bench()
|
4 |
| - o = one(Rational{BigInt}) |
5 |
| - @polyvar x y z |
6 |
| - a = (o * x + o * y^2) * (o * z^3 + o * y^2 + o * x) |
7 |
| - @show a |
8 |
| - b = (o * x + o * y + o * z) * (o * x^2 + o * y) |
9 |
| - @show b |
10 |
| - @time gcd(a, b) |
| 62 | + bs1, bs2, bs3 = bench_SP() |
| 63 | + bd1, bd2, bd3 = bench_DP() |
| 64 | + bt1, bt2, bt3 = bench_TP() |
| 65 | + prettyprint(bs1, bd1, bt1) |
| 66 | + prettyprint(bs2, bd2, bt2) |
| 67 | + prettyprint(bs3, bd3, bt3) |
11 | 68 | end
|
0 commit comments