|Re: [for Gene Wright] HP 35S speed|
Message #6 Posted by Les Wright on 27 July 2007, 11:25 a.m.,
in response to message #5 by Antonio Maschio (Italy)
I have noted that the 35s is perceptibly slower for some of my favourite 33s applications, and must share that at first this was a bit disappointing. The 33s has so many headaches and limitations, but at least it was the fastest HP RPN calculator hands down, and that won it a place in my heart. I had hoped that this speed would be inherited unchanged by the 35s.
But I must put this in perspective. Yes a one second calculation on the 33s seems to take about two on the 35s. But the similar program may take up to 30 seconds on the 41CV, and the better part of a minute on the 11C or 15C.
Besides the flexibility introduced by indirect register access and line number addressing (so that alpha labels can be conserved) is fair compensation for the slowing.
I like the complex number capacity, which I find mostly easy to use. I have one routine that computes the sine and cosine integrals for larger arguments by complex continued fraction, and it seems to run faster than the 42S version. I miss the ability to simply decompose a complex number in rectangular form into its real and complex parts, but the proposed workaround (Re(z) = abs(z)*cos(arg(z)) and Im(z) =abs(z)*sin(arg(z))) is not hard to program.
The ability to recall certain stack levels directly by accessing REGX, REGY, REGZ, etc., by way of EQN Rv is reminiscent of RCL ST X, etc., of the 41 series and 42S and can be very useful at times, though I must I would have appreciated fully appointed stack register arithmetic like in those older machines. STO+ ST X is a great way to double the contents of the X register without molesting the stack, and I wish the 35S had that capacity.
I can get to like the vector capacity, but I think it is not straightforward to compose a vector from stack input. It can be done in an equation, and it may be prudent to write a subroutine to do this automatically. It is, however, easy to isolate a component--on simply dot multiplies the vector by the relevant unit vector--e.g., [3,4,5]*[0,1,0] = 4. Being able to isolate individual vector components like this is useful when one wants to increase storage capacity by put, effectively, three real numbers in each register.
So far, a real winner. I look forward to seeing how the special features influence programming style.