Re: Silver 17BII+  General remarks and a solver example Message #8 Posted by Karl Schneider on 21 Mar 2008, 2:29 a.m., in response to message #7 by cyrille de Brébisson
Hello, Cyrille 
Glad to see your input!
Quote:
... there is a "direct" solver on the 17BII+ just like on the 17BII that allows the solver to return results with no iterations, but the algorithm is slightly different.
Are there substantive differences in the functional description of the solver in the HP17BII+ and those in earlier HP17B models?
My main complaint with the solver on the HP33s and HP35s is the way that the directsolve logic was incorporated. The logic was apparently based upon that of the original HP17B/27S solver.
Each of these calculators will always return the directlydetermined solution whenever one can be obtained. Such a solution may not even reside within the range of values specified by the user's two input "guesses" even when a valid solution is within that range, but that is of no consequence to these calculators.
I object to this aspect of the logic or functional description, because the user's "guess" values might explicitly specify the vicinity of the solution of interest and relevance to the problem.
Here's my recommended approach:
1. Determine if the form of the equation will permit a directlydetermined solution.
 1A. If "YES", proceed to Step 2.
 1B. If "NO", proceed to Step 4.
2. Attempt to find the directlydetermined ("direct") solution.
 2A. If a direct solution was found, proceed to Step 3.
 2B. If no direct solution was found, proceed to Step 4.
3. Does the direct solution reside within the range bounded by the two guesses entered by the user?
 3A. If "YES", return the direct solution and terminate.
 3B. If "NO", store the direct solution and proceed to Step 4.
4. Attempt to find an iterativelydetermined ("iterated") solution.
 4A. If an iterated solution was found, proceed to Step 5.
 4B. If no iterated solution was found, proceed to Step 6.
5. Does the iterated solution reside within the range bounded by the two guesses entered by the user?
 5A. If "YES", return the iterated solution and terminate.
 5B. If "NO", proceed to Step 6.
6. Was a direct solution found?
 6A. If "YES", return whichever solution is closer to one limit of the user's guess range, or the direct solution if only that one was found.
 6B. If "NO", return the iterated solution if it was found, or the appropriate errortermination code if none was found.
Here's a table of what would be returned under this procedure.
No DS DS outside range DS inside range
No IS Error code DS DS*
IS outside range IS "Closer to range" DS*
IS inside range IS IS DS*
(*) = IS will not be attempted
There was a discussion about this a few years back. My functional specification posted back then was incomplete, and I didn't understand that the directsolution logic originated with the HP17B/27S:
http://www.hpmuseum.org/cgisys/cgiwrap/hpmuseum/archv014.cgi?read=62665#62665
Basis of HP33s SOLVE question:
http://www.hpmuseum.org/cgisys/cgiwrap/hpmuseum/archv014.cgi?read=61213
Best regards,
 Karl S.
Edited: 22 Mar 2008, 1:32 a.m.
