Dear Richard and Alexei, You are very preoccupied with slowdown of GiNac with new patch. I am including (under the signature) two outputs from "make check" with standard GiNaC and a patched one: *no obvious difference* in timing.
"RK" == Richard B Kreckel <kreckel@ginac.de> writes:
RK> My point is that with objects as specialized as theta functions RK> or, equivalently, step functions, many specialized rules RK> suddenly hold and it does not appear to make much sense adding RK> virtual functions to the basic class in order to support just a RK> few of them. It looks like you missed the point: no new rules are hard-coded into core GiNaC at all. The two virtual functions allow a user to include seamless automatic evaluation for *his own specialised* object in user-defined classes. It is up to the end user to decide which rule if any he wish to be applied to which object. The price for this freedom in term of speed is virtually nil. Best wishes, Vladimir -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk -- www: http://maths.leeds.ac.uk/~kisilv/ GiNaC will now run through some basic timings: timing commutative expansion and substitution.... passed size: 100 200 400 800 time/s: 0.18 0.72 3.3 15. timing Laurent series expansion of Gamma function.... passed order: 20 25 30 35 time/s: 1.6 1.9 6.7 21. timing determinant of univariate symbolic Vandermonde matrices.... passed dim: 8x8 10x10 12x12 14x14 time/s: 0.16 0.40 3.5 30. timing determinant of polyvariate symbolic Toeplitz matrices.... passed dim: 7x7 8x8 9x9 10x10 time/s: 0.17 0.69 3.0 12. timing hash map operations.... passed size: 10000 50000 100000 500000 insert/s: 0.016 0.10 0.23 1.1 find/s: 0.012 0.052 0.11 0.62 erase/s: 0.0080 0.044 0.10 0.52 timing Lewis-Wester test A (divide factorials). passed 0.58s timing Lewis-Wester test B (sum of rational numbers). passed 0.0034s timing Lewis-Wester test C (gcd of big integers). passed 0.044s timing Lewis-Wester test D (normalized sum of rational fcns). passed 0.13s timing Lewis-Wester test E (normalized sum of rational fcns). passed 0.068s timing Lewis-Wester test F (gcd of 2-var polys). passed 0.017s timing Lewis-Wester test G (gcd of 3-var polys). passed 0.51s timing Lewis-Wester test H (det of 80x80 Hilbert). passed 1.5s timing Lewis-Wester test I (invert rank 40 Hilbert). passed 0.43s timing Lewis-Wester test J (check rank 40 Hilbert). passed 0.26s timing Lewis-Wester test K (invert rank 70 Hilbert). passed 2.9s timing Lewis-Wester test L (check rank 70 Hilbert). passed 1.5s timing Lewis-Wester test M1 (26x26 sparse, det). passed 0.058s timing Lewis-Wester test M2 (101x101 sparse, det) disabled timing Lewis-Wester test N (poly at rational fcns) disabled timing Lewis-Wester test O1 (three 15x15 dets)... passed 11.s (average) timing Lewis-Wester test O2 (Resultant) disabled timing Lewis-Wester test P (det of sparse rank 101). passed 0.38s timing Lewis-Wester test P' (det of less sparse rank 101). passed 0.98s timing Lewis-Wester test Q (charpoly(P)). passed 24.s timing Lewis-Wester test Q' (charpoly(P')). passed 45.s timing computation of antipodes in Yukawa theory...... passed 15.s (total) timing Fateman's polynomial expand benchmark. passed 83.s PASS: run_times ============================================================================ GiNaC will now run through some basic timings: timing commutative expansion and substitution.... passed size: 100 200 400 800 time/s: 0.18 0.73 3.3 15. timing Laurent series expansion of Gamma function.... passed order: 20 25 30 35 time/s: 1.6 1.9 6.8 22. timing determinant of univariate symbolic Vandermonde matrices.... passed dim: 8x8 10x10 12x12 14x14 time/s: 0.16 0.39 3.5 29. timing determinant of polyvariate symbolic Toeplitz matrices.... passed dim: 7x7 8x8 9x9 10x10 time/s: 0.16 0.71 3.0 12. timing hash map operations.... passed size: 10000 50000 100000 500000 insert/s: 0.020 0.10 0.22 1.1 find/s: 0.012 0.052 0.11 0.60 erase/s: 0.0080 0.040 0.10 0.50 timing Lewis-Wester test A (divide factorials). passed 0.58s timing Lewis-Wester test B (sum of rational numbers). passed 0.0036s timing Lewis-Wester test C (gcd of big integers). passed 0.041s timing Lewis-Wester test D (normalized sum of rational fcns). passed 0.14s timing Lewis-Wester test E (normalized sum of rational fcns). passed 0.076s timing Lewis-Wester test F (gcd of 2-var polys). passed 0.016s timing Lewis-Wester test G (gcd of 3-var polys). passed 0.54s timing Lewis-Wester test H (det of 80x80 Hilbert). passed 1.5s timing Lewis-Wester test I (invert rank 40 Hilbert). passed 0.44s timing Lewis-Wester test J (check rank 40 Hilbert). passed 0.25s timing Lewis-Wester test K (invert rank 70 Hilbert). passed 2.9s timing Lewis-Wester test L (check rank 70 Hilbert). passed 1.5s timing Lewis-Wester test M1 (26x26 sparse, det). passed 0.064s timing Lewis-Wester test M2 (101x101 sparse, det) disabled timing Lewis-Wester test N (poly at rational fcns) disabled timing Lewis-Wester test O1 (three 15x15 dets)... passed 11.s (average) timing Lewis-Wester test O2 (Resultant) disabled timing Lewis-Wester test P (det of sparse rank 101). passed 0.38s timing Lewis-Wester test P' (det of less sparse rank 101). passed 1.00s timing Lewis-Wester test Q (charpoly(P)). passed 23.s timing Lewis-Wester test Q' (charpoly(P')). passed 44.s timing computation of antipodes in Yukawa theory...... passed 14.s (total) timing Fateman's polynomial expand benchmark. passed 86.s PASS: run_times