[GiNaC-devel] Custom power evaluation

Vladimir Kisil kisilv at maths.leeds.ac.uk
Fri Oct 27 23:32:21 CEST 2006


		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 at 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 at 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


More information about the GiNaC-devel mailing list