# HP Forums

Full Version: Question for Valentin; Identifying Constants
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

Hi Valentin, I recently typed in your HP71 program featured in your
article "Boldly Going...Identifying Constants. Trying your example:
CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
I don't obtain your result of -1/Sin((11/13/Pi^2)^(1/3)) 100.
BTW I ran this on EMU71. Before trying to unravel this myself
I thought I would ask if there was an update to this article and code,
which I missed!
Your response would be appreciated.
Thanks
John

Running on EMU71 I obtain
-(241277/16168/e)^(1/2) 92

Quote:
Hi Valentin, I recently typed in your HP71 program featured in your
article "Boldly Going...Identifying Constants. Trying your example:
CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
I don't obtain your result of -1/Sin((11/13/Pi^2)^(1/3)) 100.
BTW I ran this on EMU71. Before trying to unravel this myself
I thought I would ask if there was an update to this article and code,
which I missed!
Your response would be appreciated.
Thanks
John

Running on EMU71 I obtain
-(241277/16168/e)^(1/2) 92

Strange. I do get the result I gave in my article, here's a verbatim copy & paste from my working Emu71 created just a minute ago:

```>CAT
IDENTIF3 S BASIC  1562 07/17/04 15:01
>LIST
10 DESTROY ALL @ DIM S\$[80] @ STD @ T\$="identified as " @ INPUT "Value=";X
12 INPUT "#Cn,Pw,Rt,Fn,Err=","3,3,3,4,1E-9";C,P,R,F,K
14 CALL IDENTIFP(X,S\$,C,P,R,F,K,V) @ IF V<95 THEN T\$="might be "
16 DISP X;T\$;S\$;" (";STR\$(V);"%)"
18 SUB IDENTIFY(X,S\$) @ CALL IDENTIFP(X,S\$,3,3,3,4,.000000001,0)
20 SUB IDENTIFP(X,S\$,B,L,A,F,K,V) @ OPTION BASE 1 @ DIM T\$[80],G\$[80]
22 DATA 6,PI,EXP(1),LN(2),.577215664902,(1+SQR(5))/2,PI*LN(2)
24 DATA "Pi","e","Ln(2)","EulerGamma","Phi","(Pi*Ln(2))"
26 DATA 26,(),(),Sin(),Asin(),Cos(),Acos(),Tan(),Atan(),Exp(),Ln(),10^(),Lgt()
28 DATA 2^(),Log2(),Sinh(),Asinh(),Cosh(),Acosh(),Tanh(),Atanh()
30 DATA 1/Sin(),Asin(1/()),1/Cos(),Acos(1/()),1/Tan(),Atan(1/())
32 READ M @ DIM C(M),C\$(M) @ READ C,C\$,Z @ DIM F\$(Z) @ READ F\$ @ W1=INF
34 U=ABS(X) @ Z=MAX(1,MIN(Z,2*F+2)) @ M=MIN(M,B) @ A=MAX(1,A) @ L=MAX(1,L)
36 ON ERROR GOTO 44 @ FOR J=2 TO Z @ G\$=F\$(J) @ P=POS(G\$,"()")
38 Y=VAL(G\$[1,P]&"U"&G\$[P+1]) @ IF J=2 THEN H=40 ELSE H=1
40 FOR R=1 TO A @ P=0 @ S=1 @ W=4*H @ GOSUB 46 @ FOR I=1 TO M @ FOR P=-L TO L
42 P=P+(P=0) @ S=C(I)^P @ W=H @ GOSUB 46 @ NEXT P @ NEXT I @ NEXT R
44 NEXT J @ OFF ERROR @ GOTO 52
46 CALL DEC2FRC(Y^R*S,N,D,K) @ W=(N*N+D*D)/W
48 IF W<W1 THEN V=W/W1 @ W1=W @ N1=N @ D1=D @ I1=I @ P1=P @ R1=R @ J1=J
50 IF ABS(N)+ABS(D)>1100 THEN RETURN
52 S\$="("[2-(R1#1)] @ T\$=STR\$(N1) @ IF D1#1 THEN T\$=T\$&"/"&STR\$(D1)
54 IF P1=0 THEN 58 ELSE T\$=T\$&"*/"[1+(P1>0),1+(P1>0)] @ IF T\$="1*" THEN T\$=""
56 T\$=T\$&C\$(I1) @ IF ABS(P1)#1 THEN T\$=T\$&"^"&STR\$(ABS(P1))
58 S\$=S\$&T\$ @ Q=F\$(J1)<>"()" @ IF R1#1 THEN S\$=S\$&")^(1/"&STR\$(R1)&")"
60 IF Q THEN G\$=F\$(J1+2*MOD(J1,2)-1) @ Q=POS(G\$,"()") @ S\$=G\$[1,Q]&S\$&G\$[Q+1]
62 S\$="-"[SGN(X)+2]&S\$ @ V=100-INT(100*V)
64 SUB DEC2FRC(X,N,D,W) @ V=1 @ N=1 @ D=0 @ Y=INF @ Z=ABS(X) @ F=SGN(X) @ X=Z
66 C=INT(X) @ IF FP(X) THEN X=1/FP(X) @ S=N ELSE N=(N*C+U)*F @ D=D*C+V @ END
68 T=D @ N=N*C+U @ U=S @ D=D*C+V @ V=T @ R=N/D @ IF ABS(R/Z-1)<=W THEN N=N*F @ END
70 IF R=Y OR MAX(N,D)>1.E+12 THEN N=U*F @ D=V ELSE Y=R @ GOTO 66

>CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
-1/Sin((11/13/Pi^2)^(1/3)) 100
```

Compare this to your own listing or better yet, enter this listing directly into Emu71 and see if it works. If it still doesn't please feel free to contact me again and we'll definitely work it out.

Thanks for your interest and regards.
V.

```
```

Edited: 22 May 2012, 6:25 a.m.

Hi Valentin, thanks for your really quick response - Appreciated :)
Running this now I now get:

-10553/12243*E 46
I don't know if I am just doing something wrong, as I
am new to the HP71, so please excuse my ignorance if it is something obvious to an experienced user!
I copied and pasted your listing into EMU71.
Thanks again for your help.
Kind Regards
John

Quote:
Hi Valentin, thanks for your really quick response - Appreciated :)
Running this now I now get:

-10553/12243*E 46
I don't know if I am just doing something wrong, as I
am new to the HP71, so please excuse my ignorance if it is something obvious to an experienced user!
I copied and pasted your listing into EMU71.
Thanks again for your help.
Kind Regards
John

I suspect that copy & paste isn't working for you, for whatever reason. You can ascertain that by listing the program on the Emu71 emulated 80x25 display and comparing it visually with the listing I posted.

- if there are no differences then we'll explore further but

- if there are differences this means paste doesn't work realiably on your Emu71. In that case do the following (taken from J.F.'s documentation):

1) copy your source file [the listing I posted, no blank lines] to "emu_in.dat",

2) in Emu71, write a small program to enter lines from the DOSLINK device and write to a TEXT file:

```  10 DESTROY ALL @ DELAY 0,0 @ DIM A\$[100]
20 CREATE TEXT "file"
30 ASSIGN #1 TO "file"
50 DISP A\$   ! just to follow the process
60 PRINT #1;A\$
70 GOTO 40
```

Run it and when the program stops on ENTER statement (no more lines to ENTER), close the file with

ASSIGN#1 to *

Then TRANSFORM it into BASIC and there you are.

See if that works for you.

Regards from V.

```
```

Hi Valentin, I carefully copied and pasted your program in Emu71 and I get the same result as John, i.e. -10553/12243*e 46.

CAT gives me the same program length (1562 bytes) as yours. I also verified several lines afterwards and they look exactly the same as in your program. I have the Math ROM enabled in my emulation.

Kind regards,

Jeroen

Hi, Jeroen:

Quote:
Hi Valentin, I carefully copied and pasted your program in Emu71 and I get the same result as John, i.e. -10553/12243*e 46.

CAT gives me the same program length (1562 bytes) as yours. I also verified several lines afterwards and they look exactly the same as in your program. I have the Math ROM enabled in my emulation.

Weird.

Please post here the exact verbatim list of the code as directly grabbed from your Emu71 display (i.e. the code you're running which produces the weird result), for me to inspect and try in my copy of Emu71. I'll use a comparison program to avoid human error so this way I'll be able to see if there's some difference, any difference.

Further action will depend on the result of the above. For now I suspect of some problem with the copy-paste procedure but we'll see when you do the above, if you're so kind.

Thanks for your interest and

Regards from V.

```
```

```>degrees
>CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
-10553/12243*e 46
>CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
-1/Sin((11/13/Pi^2)^(1/3)) 100
```

J-F

Quote:
```>degrees
>CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
-10553/12243*e 46
>CALL IDENTIFP(-2.34305547341,S\$,3,3,3,12,1E-9,V) @ S\$;V
-1/Sin((11/13/Pi^2)^(1/3)) 100
```

J-F

```
```

LOL ! ... XD

That's it, of course, but you know what, J.F. ? I was thinking that it might be that old problem of some versions of Emu71 missing characters when pasting text (a program listing or commands) to them.

Matter of fact, paste still doesn't work 100% ok, at least not in my version. It has the following quirks:

- it reverses the capitalization of the pasted text, i.e., you paste "10 PRINT 'Hello'" and it gets pasted as "10 print 'hELLO'"

- some frequent text combinations are interpreted as if they were 'escape' sequences missing characters altogether, i.e.: pasting "10 FOR I=1 TO 10 @ A=2^I+5*B(I) @ NEXT I" results in "10 for i=1 to 10 @ a=2+5*b(i) @ next i" and the power of 2 (2^I) is silently changed to a simple "2", which usually results in the wrong results afterwards.

```
```
That said, any hope of an Android version of Emu71 specifically tailored or at least fine-tuned to the underlying Arm processor ? That failing, any newer version of Emu71, ideally faster that the one I have ?

I'm using Emu71 to successfully solve Project Euler problems, a sizable number of them so far, in dire competition against C++, Java, Haskell, Python, Mathematica, Assembler, etc. running on powerful hardware so every little bit of speed does help ! ... :D

Thank you very much and best regards from V.

```
```

Quote:
2) in Emu71, write a small program to enter lines from the DOSLINK device and write to a TEXT file

In Windows Vista I don't need such program. I just set lowercase in Emu71 (by typing LC) and select EN (English) in the language bar, instead of my default PT (Portuguese). Copy & Paste works nicely then.

By the way, in RADIANS mode I get

`-1/Sin((11/13/Pi^2)^(1/3)) 100`
But in DEGREES mode I get
`-10553/12243*e 46`
Best regards,

Gerson.

Quote:
- it reverses the capitalization of the pasted text, i.e., you paste "10 PRINT 'Hello'" and it gets pasted as "10 print 'hELLO'"

Try the lowercase command (LC) on Emu71, as I did in my post below. I got home minutes ago and only overlooked the posts, otherwise I would not have mentioned the DEGREES/RADIANS issue.

Best regards,

Gerson.

Thanks to Valentin,Gerson and JF. I can't believe I did not try switching to RAD.
I really appreciate the help from forum members. It works perfectly now :) Thanks again.
BTW, when I run the Doslink code to read in a text file, my EMU71 freezes on the last line.I have to close EMU71. Any thoughts?
Thanks once again
Regards
John

Quote:
Thanks to Valentin,Gerson and JF. I can't believe I did not try switching to RAD.
I really appreciate the help from forum members. It works perfectly now :) Thanks again.

You're welcome, and thanks again for your interest.

Quote:
BTW, when I run the Doslink code to read in a text file, my EMU71 freezes on the last line.I have to close EMU71. Any thoughts?

Yes, no problem at all, I think it is the intended, normal behavior.

Just press [End line] and there you are, no need to close Emu71 or anything.

Regards from V.

```
```

The ^A, ^E, ^I, ^O and ^U sequences are not correctly handled by the paste operation, for some unknown reason. I was not able to fix it. Of course, manually keying-in ^I and so on, is no problem.

When pasting a text file created by an external editor, a possible workaround is to insert a space after the ^ character.

Regarding, speed, the lastest version (2.41) provides a modest speed improvement of 5-10%.

Thanks for your interest in Emu71/DOS!

J-F

No problem here, unless I am missing something. The lines 50 and 60 below have been simply copied from Notepad and pasted into the Emu71 window:

```
Emu71: HP-71B & HP-IL system emulator         J-F GARNIER 1996, 2006
Registered to Gerson Barbosa
>
>LIST 50,60
50 X=2^3
60 A=A^A @ A=A^E @ A=A^I @ A=A^O @ A=A^U
```

Gerson.

Hi, Gerson:

This is what I get when I try your example (which I copied to Notepad from your post, then re-selected it in Notepad and copied to the Emu71 window):

```  Emu71: HP-71B & HP-IL system emulator         J-F GARNIER 1996, 2006
>50 x=2^3
>60 a=a @ a=a @ a=a @ a=a @ a=a
>LIST
50 X=2^3
60 A=A @ A=A @ A=A @ A=A @ A=A
```

Regards from V.

```
```

Hello Valentin,

I've repeated my procedure on Windows XP and obtained your exact result:

```>50 X=2^3
>60 A=A @ A=A @ A=A @ A=A @ A=A
```

Back to Windows Vista, language bar set to PT, Português (Brasil), I got

```>STOP
>LC
>50 X=2"3
ERR:Excess Chars
>50 X=260 A=A"A @ A=A"E @ A=A"I @ A=A"O @ A=A"U
ERR:Excess Chars
```

Changing the language bar to EN, English (United States), and copying and pasting my original example again gives

```>50 X=2^3
>60 A=A^A @ A=A^E @ A=A^I @ A=A^O @ A=A^U
>
```
I haven't tested this on Windows 7 yet.

Best regards,

Gerson.

Hi, Gerson:

Seems you've nailed it. Perhaps J.F. can do something about it now that the problem has been shown to be related to the Windows locale.

Thanks and best regards from V.

```
```