[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Coupling vs secondary voltage chart



Original poster: Terry Fritz <teslalist@xxxxxxxxxxxxxxxxxxxxxxx>

Hi Dave,

I "tried" single precision, but the problem is that the program needs to "integrate". It adds really tiny number to the rather large totals. Ie. 1.00000 + 0.000000056887467586.... You just need the bug long numbers in that case.

Right now, the execution speed is fine. The code is not very super optimized like a real speed programmer would do, but the key is that "it works fine" ;-)) The code is also fairly understandable at this point and I would not want a fancy optimization to make it unreadable for anyone that wants to change it. So we are giving up speed for the sake of simplicity and ease of modification.

If the program ever gets super stable where nobody wants to change it, then playing with optimization gets far easier. But right now, I change it about every 15 minutes ;-))

Cheers,

        Terry

At 09:01 PM 6/16/2005, you wrote:
In a message dated 6/16/2005 7:20:06 P.M. Mountain Daylight Time, teslalist@xxxxxxxxxxxxxxxxxxxxxxx [Terry] writes:
>The run parameters were:
>=================
>ScanTesla-Special V-6.10 June 14, 2005 Terry Fritz
C1 2.770000e-008 2.770000e-008 1.000000e-009
R1 5.000000e-001 5.000000e-001 1.000000e-001
L1 5.000000e-005 2.500000e-004 1.000000e-007
L2 7.540000e-002 7.540000e-002 5.000000e-003
K12 1.000000e-002 9.900000e-001 1.000000e-003
R2 3.910000e+002 3.910000e+002 1.000000e+000
C2 4.420000e-011 4.420000e-011 1.000000e-012
C3 3.830000e-012 3.830000e-012 1.000000e-012
R3 2.200000e+005 2.200000e+005 1.000000e+003
T1 0.000000e+000 1.000000e-003 -1.000000e-007
Vrail 3.400000e+002
VCpri_init 0.000000e+000
DwellTime 0.300000e-003
Current_Limit 5.000000e+002
BangEnergy_Limit 1.250000e+001
Goal Type 0
>=================
>


    Just a suggestion or two...


Looking at the output here, I see X.YY with exponent. E.g., two digits of precision in floating point.


I am curious if you could speed up the run time by specifying single precision floating point. If I had the tools here I'd give it a shot. Of course, the floating point hardware may be very pleased with Doubles @ 64-bit, and it might not work.

Another possibility would be using something like GCC's fast integer library which emulates floating point by allocating N bits to the regular data and 64-N bits to exponent. It looks to me like this might have trouble, with the range of data (10^ -12 to 10^+5 looks like a range of 10^17).

A final possibility is to trade off memory for speed by pre-calculating what can be pre-calculated. When I was writing a magnetic / electric field plotter this helped a great deal; I precalculed square root lookups for the SQRT [ (X1-X2)^2 + SQRT (Y1-Y2)^2 ], and this helped a great deal.

I hope these suggestions might help, or perhaps trigger a suggestion that does work?

    Thanks,

    Dave