Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
02-03-2017, 11:09 AM (This post was last modified: 02-05-2017 07:35 PM by toshk.)
Post: #1
 toshk Member Posts: 194 Joined: Feb 2015
Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
putting eqnLib together
try the code out.

02-03-2017, 11:25 AM
Post: #2
 ndzied1 Member Posts: 110 Joined: Apr 2014
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
I posted this in the suggestions section a while ago.
I'm pretty sure it's based on this patent

02-03-2017, 02:57 PM (This post was last modified: 02-03-2017 03:32 PM by Han.)
Post: #3
 Han Senior Member Posts: 1,883 Joined: Dec 2013
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
If you have an HP48GX, you can extract it using Jazz. The equations are stored in library #E2h. A list of all the topics can be found in ROMPTR E2 15 (using Jazz format; those values are in hex: #E2h and #15h). I was planning to extract this anyway for my own equation library.

EDIT: Another place to find it is in the Advanced User's Reference for the HP48

EDIT #2: The strings in the HP48GX use a tiny compression scheme (e.g. ^2 and *( are fairly common character sequences that have been squished into a single character), so maybe these are not the best to use unless someone writes a "decompressor" for those strings.

Graph 3D | QPI | SolveSys
02-03-2017, 04:37 PM
Post: #4
 Tim Wessman Senior Member Posts: 2,280 Joined: Dec 2013
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
I just checked the 48/50 source tree. They don't exist in there except in the "compressed" form as described and the utility to "convert" back and forth between them is long gone, but perhaps this will be helpful:

Code:
The following 1-byte values are used in equation compression: \01 CONST( \02 UBASE( \03 IFTE( \04 COS( \05 SIN( \06 rad \07 two \08 2* \09 )* \0A This is passed through for line formatting \0B 2- \0C ^2 \0D /( \0E =( \0F )) \10 *(

Archive with the original equation/variable sources:

A little program, or even a bash script or something similar should be able to "reverse" the encoding without much trouble. Even manually search/replace shouldn't take long at all.

TW

Although I work for HP, the views and opinions I post here are my own.
02-03-2017, 05:30 PM
Post: #5
 toshk Member Posts: 194 Joined: Feb 2015
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Thanks ....a lot.
02-03-2017, 06:08 PM
Post: #6
 ndzied1 Member Posts: 110 Joined: Apr 2014
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
I didn't read your post close enough. I thought you were talking about the code for the multiple equation solver. However, it would still be a FANTASTIC add to the Prime to use the 50g type multiple equation solver... ;-)
02-05-2017, 09:16 AM
Post: #7
 toshk Member Posts: 194 Joined: Feb 2015
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Equation Lib: in test mode: not all formulae are implement now. but all choose menus as in 50G are present now.
Testers type:
toshLib(); choose from a Library and press ON to solve the equation(s) if it present now.
Most equation under Electrical are ported.

Known issues there is no multi-solve;
Is there exist two equations E1 and E2; E2 shows error;
i tried putting equations under different Solver symb;
eg. series (E1) and parallel resistors (E2) ; Solver would not allow me to store equation in E2. (have no idea)? but suspect PuTt() sub-function not execution well.

Attached File(s)
02-05-2017, 09:58 PM
Post: #8
 Han Senior Member Posts: 1,883 Joined: Dec 2013
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Pretty cool, but there does not seem to be any way to actually start the solver except to interrupt the program with the [ON] key. I was thinking that upon choosing an equation, it would then enter directly into the solver. Perhaps instead of "UNTIL 0" at the end of toshLib(), you could use "UNTIL stop" where the variable stop is initialized to 0 and then changed to 1 after a selection is made. Otherwise it looks like the user should be able to enter in values for the solver, but the program is actually still running and may lead users to think their calculator is misbehaving.

Also, there is "ITEM5" as a menu item that seems to result in an error.

Graph 3D | QPI | SolveSys
02-11-2017, 10:25 PM (This post was last modified: 02-12-2017 10:17 AM by toshk.)
Post: #9
 toshk Member Posts: 194 Joined: Feb 2015
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Equation library complete: as in Hp 48/49/50 No illustration;
Multiple Equations outputted into E2-E0, check the appropriate E to solve. (multiple equation solver does not exist for Solver) going through the E's one can solve all parameters associated with a problem. if equation does not exist for the select topics and you like it to be added for the benefit of the public i suggest you write:
1. Topic Name
2. Equation Name
3. Equation typed in XML
4. Associated symbols of the equation

toshLib().

02-12-2017, 11:19 AM
Post: #10
 Stevetuc Member Posts: 278 Joined: Jan 2014
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
(02-11-2017 10:25 PM)toshk Wrote:  Equation library complete: as in Hp 48/49/50 No illustration;
Multiple Equations outputted into E2-E0, check the appropriate E to solve. (multiple equation solver does not exist for Solver) going through the E's one can solve all parameters associated with a problem. if equation does not exist for the select topics and you like it to be added for the benefit of the public i suggest you write:
1. Topic Name
2. Equation Name
3. Equation typed in XML
4. Associated symbols of the equation

toshLib().

This looks pretty cool. Is there any way to extract the graphics from the HP48 library for use on the Prime version? That would be a nice addition and helpful to use the equations without the HP48 AUR
03-06-2017, 01:24 AM
Post: #11
 john c. Junior Member Posts: 13 Joined: Aug 2016
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Hello. In your Electricity section of your app. The ohms law and power section
#3 There is no variable for power P. Only V,I,R The equation listed is V=I*R.
Am I missing part of the program?? I do see it listed in the program,
Let me know. Thanks.
03-06-2017, 04:50 AM
Post: #12
 toshk Member Posts: 194 Joined: Feb 2015
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
(03-06-2017 01:24 AM)john c. Wrote:  Hello. In your Electricity section of your app. The ohms law and power section
#3 There is no variable for power P. Only V,I,R The equation listed is V=I*R.
Am I missing part of the program?? I do see it listed in the program,
Let me know. Thanks.

Press [Symb]
to step into the different equations.
03-06-2017, 03:26 PM
Post: #13
 john c. Junior Member Posts: 13 Joined: Aug 2016
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
Hello. Thanks for the reply. I pressed the Symb key and the formulas were
there. So there was no problem after all. I really like your program.
03-06-2017, 08:26 PM (This post was last modified: 03-09-2017 01:47 AM by Han.)
Post: #14
 Han Senior Member Posts: 1,883 Joined: Dec 2013
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
The formulas for Forces and Energy > Linear Mechanics show up as syntax errors for all but F=m*a. This seems to happen in a few other places (e.g. Fluids > Flow in Full Pipes)

There is a bug in your PutIt() command.

CAS.expr( (lst[aa]) + ":=" + (0) );

This creates a CAS program named lst. You can (partially) fix the issue with:

CAS.expr(EVAL( lst[aa] + ":=" + 0 ));

You'll have to force a redraw of the Symb view. Also, keep in mind that the equations list is extremely volatile, especially when users start using the CAS and modify and/or delete the variables used in the system.

EDIT:

I took the liberty of removing unnecessary local variables once you convert a formula such as 'F=m*a' over to "F=m*a" (since both can be stored into E0 through E9). Also, there are a few places that you did not reset all the E0-E9's (e.g. check the Fluids section) and some systems don't have all their variables declared. Some of these I fixed where I saw them.

Lastly, to speed up debugging and overall performance (though probably not noticeable to the user), you may want to use CASE blocks so that your program does not actually run through the entire list of IF THEN END statements (i.e. exit CASE as soon as an IF statement is true).

Code:
#pragma mode( separator(.,;) integer(h32) ) SUBSS(); PUTMENSU(); PuTt(lst); mSEL; me0; run; m1m; AmA; BmBB:=0; mTXTs := {     {"EΩ","C_&B_","Fluids","Forces","Gases","1► 2"},     {"Heat","Magnet","Motion","Optics","Oscill","2► 3"},     {"Geom","SSD","Stress","Waves","","3► 1"} }; eqme:={     {         "Coulomb's Law" ,"Capacitor Charge" ,"Ohm's Law and Power", "DC Inductor Voltage",         "Voltage Divider","RC Transient","Current Divider","RL Transient","Wire Resistance",         "Resonant Frequency","Plate Capacitor","Series and Parallel Resistors",         "Series and Parallel Capacitors","Series and Parallel Inductors",         "Cylindrical Capacitor","Solenoid Inductance","Capacitance Energy","Toroid Inductance",         "Inductive Energy","Sinusoidal Voltage","RLC Current Delay","Sinusoidal Current",         "DC Capacitor Current"     },     {         "Elastic Buckling", "Eccentric Columns","Cantilever Deflection","Simple Deflection",         "Cantilever Slope","Simple Slope","Cantilever Moment","Simple Moment",         "Cantilever Shear","Simple Sheer"     },     {         "Pressure at Depth","Flow with Losses","Bernoulli Equation","Flow in Full Pipes"     },     {         "Linear Mechanics","1D Elastic Collisions","Angular Mechanics","Drag Force",         "Centripetal Force","Law of Gravitation","Hooke’s Law","Mass Energy Relation"     },     {         "Ideal Gas Law","Isentropic Flow","Ideal Gas State Change","Real Gas Law",         "Isothermal Expansion","Real Gas State Change","Polytropic Processes",         "Kinetic Theory"     },     {         "Heat Capacity","Convection","Thermal Expansion","Conduction","Black Body Radiation",         "Convection+Conduction"     },     {         "Straight Wire","B Field in Solenoid","Force Between Wires","B Field in Toroid"     },     {         "Linear Motion","Circular Motion","Object in Free Fall","Terminal Velocity",         "Projectile Motion","Escape Velocity","Angular Motion"     },     {         "Law of Refraction","Critical Angle","Brewster’s Law","Spherical Reflection",         "Spherical Refraction","Thin Lens"     },     {         "Mass-Spring System","Torsional Pendulum","Simple Pendulum","Simple Harmonic",         "Conical Pendulum"     },     {         "Circle","Regular Polygon","Ellipse","Circular Ring","Rectangle","Triangle",         "Cone","Parallelepiped","Cylinder","Sphere"     },     {         "PN Step Junctions","Bipolar Transistors","NMOS Transistors","JFETs"     },     {         "Normal Stress","Stress on an Element","Shear Stress","Mohrs Circle"     },     {         "Transverse Waves","Sound Waves","Longitudinal Waves"     } }; EXPORT toshLib() BEGIN     AmA:=1;     run:=1;     DIMGROB_P(G1,320,224);     BLIT_P(G1,G0,0,0,320,224);          WHILE run DO     BLIT_P(0,0,320,224,G1);         LOCAL me0,m1m,mx,my, mTXT;         WHILE MOUSE(1)≥0 DO             IF GETKEY==4 THEN run:=0; CONTINUE(2); END;         END;         mTXT := mTXTs[AmA];         PUTMENSU(mTXT);                  REPEAT             me0:=MOUSE;             m1m:=me0[1];             IF  GETKEY==4 THEN run:=0; CONTINUE(2); END;         UNTIL SIZE(m1m)>0;         mx:=m1m[1];         my:=m1m[2];         IF my≥220 AND my≤239 THEN             CASE                 IF mx≥0 AND mx≤51 THEN mSEL:=78; END;                 IF mx≥53 AND mx≤104 THEN mSEL:=79; END;                 IF mx≥106 AND mx≤157 THEN mSEL:=73; END;                 IF mx≥159 AND mx≤210 THEN mSEL:=75; END;                 IF mx≥212 AND mx≤263 THEN mSEL:=77; END;                 IF mx≥265 AND mx≤319 THEN                     mSEL:=0;  AmA:=AmA+1;                     IF AmA>size(mTXTs) THEN AmA:=1;  END;                 END;             END;             IF mSEL<>0 THEN SUBSS(mSEL,AmA); END;         END;     END; END; PUTMENSU(mTXT) BEGIN     DRAWMENU(mTXT[1],mTXT[2],mTXT[3],mTXT[4],mTXT[5],mTXT[6]); END; PuTt(lst) BEGIN     LOCAL aa;     FOR aa FROM 1 TO size(lst) DO         CAS.expr(EVAL(lst[aa] +":=" +0));     END; END; RESETSYMB() BEGIN     STARTAPP("Solve");     UNCHECK({0,1,2,3,4,5,6,7,8,9});     ""▶E2;  ""▶E3;  ""▶E4; ""▶E5;     ""▶E6; ""▶E7; ""▶E8; ""▶E9; ""▶E0;     run:=0; END; SUBSS(mSEL,AmA) BEGIN     LOCAL ch,cih;          IF mSEL ==78 AND AmA==1 THEN         CHOOSE(ch,"Electricity",eqme[1]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"q1","q2","r", "ξr"});                 "F=(q1*q2)/(4*π*r^2*ξr*8.85418781762ᴇ−12)"▶E1;              END;             IF ch==2 THEN                 PuTt({"q"});                 "q=C*V"▶E1;              END;             IF ch==3 THEN                 "V=I*R"▶E1;  "P=I*V"▶E2;  "P=I^2*R"▶E3;  "P=V^2/R"▶E4;             END;             IF ch==4 THEN                 PuTt({"∆t","∆I","ti","tf","lf","li"});                 "V=-L*(∆I/∆t)"▶E1; "∆I=(-lf-li)"▶E2; "∆t=(tf-ti)"▶E3;              END;             IF ch==5 THEN                 PuTt({"R1","R2", "Vs","v1"});                 "v1=(Vs*R1)/(R1+R2)"▶E1;              END;             IF ch==6 THEN                 PuTt({"vf","vi","t"});                 "V=vf-(vf-vi)*e^(-t/(R*C))"▶E1;              END;             IF ch==7 THEN                 PuTt({"R1","R2","Is","I2"});                 "I2=(Is*R1)/(R1+R2)"▶E1;             END;             IF ch==8 THEN                 PuTt({"vf","vi","t"});                 "I=(1/R)*(vf-(vf-vi)*e^((-R*t)/L))"▶E1;             END;             IF ch==9 THEN                 PuTt({"ρ"});                 "R=ρ*(L/A)"▶E1;             END;             IF ch==10 THEN                 PuTt({"ɷ0","fo","Qs","Qp"});                 "Qs=(1/R)*(√(L/C))"▶E1;  "Qp=(R)*(√(C/L))"▶E2;  "ɷ0=2*π*fo"▶E3;  "ɷ0=(1/√(C*L))"▶E4;             END;             IF ch==11 THEN                 PuTt({"d","ξr"});                 "C=(ξr*8.85418781762ᴇ−12*A)/d"▶E1;             END;             IF ch==12 THEN                 PuTt({"R1","R2","Req"});                 CHOOSE(cih,"Resistors","Series","Parallel");                 IF cih==1 THEN "R1+R2=Rs"▶E1; END;                 IF cih==2 THEN "(R1+R2)=Rp"▶E1; END;             END;             IF ch==13 THEN                 PuTt({"c1","c2","Ceq"});                 CHOOSE(cih,"Capacitors","Series","Parallel");                 IF cih==1 THEN "(c1+c2)=Cs"▶E1; END;                 IF cih==2 THEN "c1+c2=Cp"▶E1; END;             END;             IF ch==14 THEN                 PuTt({"Ll1","Ll2","Leq"});                 CHOOSE(cih,"Inductors","Series","Parallel");                 IF cih==1 THEN "Ls=Ll1+Ll2=Ls"▶E1; END;                 IF cih==2 THEN "(Ll1+Ll2)=Lp"▶E2; END;             END;             IF ch==15 THEN                 PuTt({"ro","ri","ξr"});                 "C=(2*π*L*ξr*8.85418781762ᴇ−12)/ln(ro/ri)"▶E1;             END;             IF ch==16 THEN                 PuTt({"h","n","µr"});                 "L=(n^2*A*h*µr*1.25663706144ᴇ−6)"▶E1;             END;             IF ch==17 THEN                 "E=(C*V^2)/2"▶E1;             END;             IF ch==18 THEN                 PuTt({"ri","ro","µr","h"});                 "L=(h*N^2*µr*1.25663706144ᴇ−6/(2*π))*ln(ro/ri)"▶E1;             END;             IF ch==19 THEN                 "E=(L*I^2)/2"▶E1;             END;             IF ch==20 THEN                 PuTt({"ɷ","t", "f", "Vmax","φ"});                 "V=Vmax*sin(ɷ*t+φ)"▶E1; "ɷ=2*π*f"▶E2;              END;             IF ch==21 THEN                 PuTt({"Φs","Φp","f","ɷ","XC","XL"});                 "TAN(Φs)=(XL-XC)/R"▶E1; "TAN(Φp)=(-(XL)+(XC))/R"▶E2;                 "XC=1/(ɷ*C)"▶E3;  "XL=ɷ*L"▶E4; "ɷ=2*π*f"▶E5;             END;             IF ch==22 THEN                 PuTt({"ɷ","t", "f" ,"Imax"});                 "I=Imax*sin(ɷ*t+φ)"▶E1;  "ɷ=2*π*f"▶E2;              END;             IF ch==23 THEN                 PuTt({"∆v","∆t","vf","vi", "tf","ti"});                 "I=C*(∆v/∆t)"▶E1; "∆v=(-vf-vi)"▶E2;  "∆t=(tf-ti)"▶E3;             END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==79 AND AmA==1 THEN         CHOOSE(ch,"Columns & Beams",eqme[2]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"Pcr","r","σcr"});                 "Pcr=(E*A*π^2)/(K*L/r)^2"▶E1; "Pcr=(E*I*π^2)/(K*L)^2"▶E2;  "σcr=(Pcr)/A"▶E3; "r=√(I/A)"▶E4;             END;             IF ch==2 THEN                 PuTt({"c","r","Є","σmax"});                 "σmax=P*(c*Є/(r^2*cos(1/2*K*L*√(P/(A*E))/r))+1)/A"▶E1;  "r=√(I/A)"▶E2;             END;             IF ch==3 THEN                 PuTt({"y","a","w","x"});                 "y=-w*x^2*(-4*L*x+6*L^2+x^2)/(24*E*I)+P*x^2*(-3*a+x)/(6*E*I)+M*x^2/(2*E*I)"▶E1;             END;             IF ch==4 THEN                 PuTt({"a","w","x","y"});                 "y=((P*(L-a)*x/(6*L*E*I))*(x^2+(L-a)^2-L^2)-(M*x/(E*I))*(c-(x^2/(6*L))-(L/3)-(c^2/(2*L)))-(w*x/(24*E*I))*(L^3+x^2*(x-2*L)))"▶E1;              END;             IF ch==5 THEN                 PuTt({"a","w","x","Θ"});                 "Θ=(P*x/(2*E*I))*(x-2*a)+(M*x/(E*I))-(w*x/(6*E*I))*(3*L^2-3*L*x+x^2)"▶E1;              END;             IF ch==6 THEN                 PuTt({"a","w","x","Θ","c"});                 "Θ=(P*(L-a)/(6*L*E*I))*(3*x^2+(L-a)^2-L^2)-(M/(E*I))*(c-(x^2/(2*L))-(L/3)-(c^2/(2*L)))-(w/(24*E*I))*(L^3+x^2*(4*x-6*L))"▶E1;              END;             IF ch==7 THEN                 PuTt({"a","w","x","Mx"});                 "Mx=P*(x-a)+M-(W/2)*(L^2-2*L*x+x^2)"▶E1;              END;             IF ch==8 THEN                 PuTt({"a","w","x","Mx"});                 "Mx=(P*(L-a)*x/L)+(M*x/L)+(w*x/2)*(L-x)"▶E1;              END;             IF ch==9 THEN                 PuTt({"x","w"});                 "V=P+w*(L-x)"▶E1;               END;             IF ch==10 THEN                 PuTt({"a","w","x"});                 "V=(P*(L-a)/L)+(M/L)+(w/2)*(L-2*x)"▶E1;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==73 AND AmA==1 THEN         CHOOSE(ch,"Fluids",eqme[3]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"P0","ρ","h"});                 "P=P0+ρ*9.80665*h"▶E1;              END;             IF ch==2 THEN                 PuTt({"∆P","ρ","v1","v2","∆y","hL","A1","A2","y2","y1","D2","D1","P2","P1"});                 "W=M*((∆P/ρ)+((v2^2-v1^2)/2)+9.80665*∆y+hL)"▶E1; "W=M*((∆P/ρ)+((v2^2)*(1-(A2/A1)^2)/2)+9.80665*∆y+hL)"▶E2;                 "W=ρ*Q*((∆P/ρ)+((v1^2)*(1-(A1/A2)^2)/2)+9.80665*∆y+hL)"▶E3; "ρ*Q=M"▶E4;                 "A1=(π*D1^2)/4"▶E5; "A2=(π*D2^2)/4"▶E6; "Q=A1*v1"▶E7; "Q=A2*v2"▶E8; "∆P=P2-P1"▶E9; "∆y=y2-y1"▶E0;             END;             IF ch==3 THEN                 PuTt({"∆P","ρ","v1","v2","∆y","hL","A1","A2","y2","y1","D2","D1","P2","P1"});                 "0=((∆P/ρ)+((v2^2-v1^2)/2)+9.80665*∆y+hL)"▶E1;  "0=((∆P/ρ)+((v2^2)*(1-(A2/A1)^2)/2)+9.80665*∆y)"▶E2;                 "0=((∆P/ρ)+((v1^2)*(1-(A1/A2)^2)/2)+9.80665*∆y)"▶E3; "ρ*Q=M"▶E4;                 "A1=(π*D1^2)/4"▶E5; "A2=(π*D2^2)/4"▶E6; "Q=A1*v1"▶E7; "Q=A2*v2"▶E8; "∆P=P2-P1"▶E9; "∆y=y2-y1"▶E0;             END;             IF ch==4 THEN                 PuTt({"∆P","ρ","ΣK","vavg","f","∆y","µ","Ren","n"});                 "W=(1/4*D^2*π*ρ*vavg*(vavg^2*(2*L*f/D+1/2*ΣK)+9.80665*∆y+∆P/ρ))"▶E1;                 "Ren=D*vavg*ρ/µ"▶E2; "n=ρ/µ"▶E3; "A=(π*D^2)/4"▶E4; "Q=A*vavg"▶E5;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==75 AND AmA==1 THEN         CHOOSE(ch,"Forces and Energy",eqme[4]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"a","m","vi","vf","Ki","Kf","x","v","t","Pavg"});                 "m*a=F"▶E1;  "Ki=m*vi/2"▶E2;  "Kf=m*vf/2"▶E3;  "W=F*x"▶E4;  "Kf-Ki=W"▶E5;  "W=F*v"▶E6;  "Pavg=W/t"▶E7;  "vf=vi+a*t"▶E8;              END;             IF ch==2 THEN                 PuTt({"m1","m2","v1i","v2f"});                 "v1f=((m1-m2)/(m1+m2))*v1i"▶E1;  "v2f=((2*m2)/(m1+m2))*v1i"▶E2;             END;             IF ch==3 THEN                 PuTt({"α","ɷf","ɷi","τ","at","Ki","Kf","Θ","r","t","Pavg","ɷ"});                 "I*α=τ"▶E1;  "Ki=I*ɷi/2"▶E2;  "Kf=I*ɷf/2"▶E3;  "W=r*Θ"▶E4;  "Kf-Ki=W"▶E5;  "P=ɷ*τ"▶E6;  "Pavg=W/t"▶E7;  "ɷf=ɷi+α*t"▶E8;  "at=α*r"▶E9;  "2*π*N=ɷ"▶E0;              END;             IF ch==4 THEN                 PuTt({"ρ","v","Cd"});                 "F=Cd*(ρ*v^2/2)*A"▶E1;              END;             IF ch==5 THEN                 PuTt({"ɷ","r","m","v","ar"});                 "F=m*ɷ^2*r"▶E1; "ɷ=v/r"▶E2; "ar=v^2/r"▶E3; "2*π*N=ɷ"▶E4;             END;             IF ch=6 THEN                 PuTt({"m1","m2","r"});                 "F=6.67384ᴇ−11*(m1*m2/r^2)"▶E1;              END;             IF ch==7 THEN                 PuTt({"k","x"});                 "F=-k*x"▶E1; "W=-k*x^2/2"▶E2;             END;             IF ch==8 THEN                 PuTt({"m"});                 "E=m*299792458^2"▶E1;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==77 AND AmA==1 THEN         CHOOSE(ch,"Gases",eqme[5]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"MW","m","n"});                 "P*V=n*8.3144621*T"▶E1; "m=n*MW"▶E2;             END;             IF ch==2 THEN                 PuTt({"P0","At","T0","ρ0","ρ","k"});                 "(A/At)=((2/(k+1)*(1/2*M^2*(k-1)+1))^((k+1)/(2*(k-1)))/M)"▶E1; "(T/T0)=(2/(2+(k-1)*M^2))"▶E2;                 "(P/P0)=((T/T0)^(k/(k-1)))"▶E3; "(ρ/ρ0)=((T/T0)^(1/(k-1)))"▶E4;             END;             IF ch==3 THEN                 PuTt({"Pf","Vf","Tf","Pii","Vi","Ti"});                 "Pf*Vf/Tf=Vi*Pii/Ti"▶E1;              END;             IF ch==4 THEN                 PuTt({"MW","m","n"});                 "P*V=n*Z*R*T"▶E1; "m=n*MW"▶E2;             END;             IF ch==5 THEN                 PuTt({"Vf","Vi","h"});                 "W = (8.3144621*T*n*ln(Vf/Vi))"▶E1;              END;             IF ch=6 THEN                 PuTt({"Pf","Vf","Tf","Zf","Pii","Vi","Ti","Zi"});                 "(Pf*Vf/(Tf*Zf))=(Vi*Pii/(Ti*Zi))"▶E1;              END;             IF ch==7 THEN                 PuTt({"Pf","Vf","Tf","Zf","Pii","Vi","Ti","n"});                 "Pf/Pii=(Vf/Vi)^(-n)"▶E1; "Tf/Ti=(Pf/Pii)^((n-1)/n)"▶E2;             END;             IF ch==8 THEN                 PuTt({"λ","d","n","vrms","MW","n","m"});                 "λ=1/(√2*d^2*π*6.02214129e23*n/V)"▶E1; "P=n*MW*vrms^2/(3*V)"▶E2; "vrms=√(3*8.3144621*T/MW)"▶E3; "m=n*MW"▶E4;             END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;               IF mSEL ==78 AND AmA==2 THEN         CHOOSE(ch,"Heat Transfer",eqme[6]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"m","c","ΔT"});                 "Q=m*c*ΔT"▶E1;  "Q=m*c*(Tf-Ti)"▶E2;              END;             IF ch==2 THEN                 PuTt({"q","ΔT","h","Th","Tc"});                 "q=h*A*ΔT"▶E1;  "q=h*A*(Th-Tc)"▶E2;              END;             IF ch==3 THEN                 PuTt({"δ","ΔT","α","Tf","Ti"});                 "δ=α*L*ΔT"▶E1; "δ=α*L*(Tf-Ti)"▶E2;              END;             IF ch==4 THEN                 PuTt({"k","q","ΔT"});                 "q=(k*A/L)*ΔT"▶E1; "q=(k*A/L)*(Th-Tc)"▶E2;             END;             IF ch==5 THEN                 PuTt({"eb","f","λ2","λ1","eb12","λmax","c3","q"});                 "eb =σ*T^4"▶E1; "eb12=f*eb"▶E1; "λmax*T=c3"▶E1; "q=eb*A"▶E1;              END;             IF ch=6 THEN                 PuTt({"q","ΔT","h1","Th","Tc","L11","L21","L31","k1","k2","k3","h2"});                 "q=(A*ΔT)/(1/h1+L11/k1+L21/k2+L31/k3+1/h3)"▶E1;                  "q=(A*(Th-Tc))/(1/h1+L11/k1+L21/k2+L31/k3+1/h3)"▶E1; "U=q/(A*ΔT)"▶E1;  " U=q/(A*(Th-Tc))"▶E1;             END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==79 AND AmA==2 THEN         CHOOSE(ch,"Magnetism",eqme[7]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"µr","r"});                 "B = I*1.25663706144e−6*µr/(2*π*r)"▶E1;              END;             IF ch==2 THEN                 PuTt({"µr","n"});                 "B = 1.25663706144e−6*µr*I*n"▶E1;              END;             IF ch==3 THEN                 PuTt({"Ia","Ib","µr","d","Fba"});                 "Fba=(1.25663706144e−6*µr*L*Ib*Ia/(2*π*d))"▶E1;              END;             IF ch==4 THEN                 PuTt({"ri","µr","ro"});                 "B=(1.25663706144e−6*µr*I*N/(2*π))*(2/(ro+ri))"▶E1;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==73 AND AmA==2 THEN         CHOOSE(ch,"Motion",eqme[8]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"v0","x","x0","a","t","v"});                 "x=x0+v0*t+(1/2)*a*t^2"▶E1;  "x=x0+v*t+(1/2)*a*t^2"▶E2;  "x=x0+(1/2)*(v0+v)*t"▶E3;  "v=v0+a*t"▶E4;              END;             IF ch==2 THEN                 PuTt({"ar","v","r","ɷ"});                 "ɷ=v/r"▶E1;  "ar=v^2/r"▶E2; "ɷ==2*π*N"▶E3;              END;             IF ch==3 THEN                 PuTt({"y","y0","v0","t","v"});                 "y=y0+v0*t+(1/2)*9.80665*t^2"▶E1; "y=y0+v*t+(1/2)*9.80665*t^2"▶E2; "v^2=v0^2+2*9.80665*(y+y0)"▶E3;  "v=v0+9.80665*t"▶E4;              END;             IF ch==4 THEN                 PuTt({"v","m","Cd","ρ"});                 "v=√(2*m*9.80665/(Cd*ρ*A ))"▶E1;              END;             IF ch==5 THEN                 PuTt({"x0","x","v0","θ0","t","y0","y","vx","vy"});                 "x=x0+v0*COS(θ0)*t"▶E1;  "y=y0+v0*SIN(θ0)*t-(1/2)*9.80665*t^2"▶E1;  "vx =v0*COS(θ0)"▶E1;                 "vy =v0*SIN(θ0)-9.80665*t"▶E1;  "R=(v0^2)/9.80665*SIN(2*θ0)"▶E1;              END;             IF ch=6 THEN                 PuTt({"v"});                 "v=√(2*6.67384ᴇ−11*M/R)"▶E1;              END;             IF ch==7 THEN                 PuTt({"θ0","ɷ0","t","α","ɷ"});                 "θ=θ0+ɷ0*t+(1/2)*α*t^2"▶E1; "θ=θ0+ɷ*t+(1/2)*α*t^2"▶E1; "θ=θ0+(1/2)*(ɷ0+ɷ)*t"▶E1;  "ɷ=ɷ0+α*t"▶E1;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==75 AND AmA==2 THEN         CHOOSE(ch,"Optics",eqme[9]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"θ1","θ2","n1","n2"});                 "(n1*sin(θ1))=(n2*sin(θ2))"▶E1;              END;             IF ch==2 THEN                 PuTt({"θc","n1","n2"});                 "sin(θc)=(n1/n2)"▶E1;              END;             IF ch==3 THEN                 PuTt({"θb","n1","n2"});                 "TAN(θb)=(n2/n1)"▶E1; "θb+θ2=90"▶E2;              END;             IF ch==4 THEN                 PuTt({"m","r"});                 "1/F=(1/U)+(1/V)"▶E1;  "F=r/2"▶E2;  "m=-V/U"▶E3;              END;             IF ch==5 THEN                 PuTt({"n1","n2","r"});                 "(n1/U)+(n2/V)=(n2-n1)/r"▶E1;              END;             IF ch==6 THEN                 PuTt({"n","r1","r2","m"});                 "1/F=(1/U)+(1/V)"▶E1;  "1/F=(n-1)*(1/r1-1/r2)"▶E2; "m=-V/U"▶E3;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;                   IF mSEL ==77 AND AmA==2 THEN         CHOOSE(ch,"Oscillations",eqme[10]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"ω","k","m","f"});                 "ω=√(k/m)"▶E1; "T=(2*π/ω)"▶E2; "ω=2*π*f"▶E3;              END;             IF ch==2 THEN                 PuTt({"ω","f","Im"});                 "ω=√(G*J/(L*Im))"▶E1; "T=(2*π/ω)"▶E2; "ω=2*π*f"▶E3;              END;             IF ch==3 THEN                 PuTt({"ω","f"});                 "ω=√(9.80665/L)"▶E1; "T=(2*π/ω)"▶E2; "ω=2*π*f"▶E3;              END;             IF ch==4 THEN                 PuTt({"ω","f","a","v","x","xm","t","φ"});                 "x=(xm*cos(t*ω+φ))"▶E1;  "v=(-ω*xm*sin(t*ω+φ))"▶E2;  "ω=2*π*f"▶E3;  "a=(-(ω^2)*xm*cos(t*ω+φ))"▶E4;              END;             IF ch==5 THEN                 PuTt({"h","ω","f"});                 "ω=√(9.80665/h)"▶E1; "h=L*cos(θ)"▶E2; "ω=2*π*f"▶E3;  "T=2*π/ω"▶E4;               END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;                    IF mSEL ==78 AND AmA=3 THEN         CHOOSE(ch,"Geometry",eqme[11]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"r","Id","d"});                 "A=π*r^2"▶E1; "C=2*π*r"▶E2; "I=π*r^4/4"▶E3; "J=π*r^4/2"▶E4;  "Id=I+A*d^2"▶E5;              END;             IF ch==2 THEN                 PuTt({"b","d","h","Id"});                 "A=π*b*h"▶E1; "C=2*π*√((b^2+h^2)/2)"▶E2; "I=π*b*h^3/4"▶E3; "J=(π*b*h/4)*(b^2+h^2)"▶E4;  "Id=I+A*d^2"▶E5;              END;             IF ch==3 THEN                 PuTt({"b","d","h","Id"});                 "A=π*b*h"▶E1; "C=2*π*√((b^2+h^2)/2)"▶E2; "I=π*b*h^3/4"▶E3; "J=(π*b*h/4)*(b^2+h^2)"▶E4;  "Id=I+A*d^2"▶E5;              END;             IF ch==4 THEN                 PuTt({"ro","ri","h","Id"});                 "A=π*(ro^2-ri^2)"▶E1; "I=π*((ro^4-ri^4)/4)"▶E2; "J=π*((ro^4-ri^4)/2)"▶E3; "Id=I+A*d^2"▶E4;              END;             IF ch==5 THEN                 PuTt({"b","d","h","Id"});                 "A =b*h"▶E1;  "P=2*b+2*h"▶E2; "I =(b*h^3)/12"▶E3; "J=(b*h)/12*(b^2+h^2)"▶E4;  "Id =I+A*d^2"▶E5;              END;             IF ch=6 THEN                 PuTt({"b","d","h","Id","v","Ix"});                 "A =(b*h)/2"▶E1;  "P=b+√(v^2+h^2)+√((b-v)^2+h^2)"▶E2; "Ix =(b*h^3)/36"▶E3;                 "Iy =(b*h)/36*(b^2-b*v+v^2)"▶E4; "J=(b*h)/36*(h^2+b^2-b*v+v^2)"▶E5;  "Id=Ix+A*d^2"▶E6;              END;             IF ch==7 THEN                 PuTt({"r","d","h","Id","v","Ixx","m","Izz"});                 "V =π/3*r^2*h"▶E1; "A=π*r^2+π*r*√(r^2+h^2 )"▶E2; "Ixx =3/20*m*r^2+3/80*m*h^2"▶E3;                 "Izz =3/10*m*r^2"▶E4; "Id =Ixx+m*d^2"▶E5;              END;             IF ch==8 THEN                 PuTt({"b","t","h","Id","m","d"});                 "V =b*h*t"▶E1; "A =2*(b*h+b*t+h*t)"▶E2; "I =1/12*m*(h^2+t^2)"▶E3; "Id =I+m*d^2"▶E4;             END;             IF ch==9 THEN                 PuTt({"r","d","h","Id","v","Ixx","m","Izz"});                 "V=π*r^2*h"▶E1; "A=2*π*r^2+2*π*r*h"▶E2; "Ixx=1/4*m*r^2+1/12*m*h^2"▶E3;  "Izz =1/2*m*r^2"▶E4; "Id =Ixx+m*d^2"▶E5;             END;             IF ch==10 THEN                 PuTt({"r","d","h","Id","v","Ixx","m"});                 "V=4/3*π*r^3"▶E1; "A=4*π*r^2"▶E2; "I=2/5*m*r^2"▶E3; "Id=I+m*d^2"▶E4;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==79 AND AmA==3 THEN         CHOOSE(ch,"Solid State Devices",eqme[12]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"Vbi","NA","ND","xd","Va","Cj","Emax","BV","Js","Aj","ΔW","ΔL","xj","Cj"});                 "Vbi =(1.3806488ᴇ−23*T)/1.602176565ᴇ−19* LN((NA*ND)/(8.72ᴇ15^2))"▶E1;                 "xd =√((2*1.0341691371ᴇ−10*8.85418781762ᴇ−12/1.602176565ᴇ−19)*(Vbi-Va)*(1/NA+1/ND))"▶E2;                 "Cj =(1.0341691371ᴇ−10*8.85418781762ᴇ−12)/xd"▶E3;  "Emax =(2*(Vbi-Va))/xd"▶E4;                 "BV =(1.0341691371ᴇ−10*8.85418781762ᴇ−12*E1^2)/(2*1.602176565ᴇ−19)*(1/NA+1/ND)"▶E5;                 "J=Js*(e^(Va*1.602176565ᴇ−19/(T*1.3806488ᴇ−23))-1)"▶E6; "Aj =(W+2*ΔW)*(L+2*ΔL)+π*(W+L+2*ΔW+2*ΔL)*xj+2*π*xj^2"▶E7;                    "I =J*Aj"▶E8;              END;             IF ch==2 THEN                 PuTt({"IE","VBE","αR","ICS","IC","ICS","VBC","IES","αF","IS","IB","ICO","ICEO","VCEsat","Cj"});                 "IE=-IES*(e^((1.602176565ᴇ−19*VBE)/(1.3806488ᴇ−23*T))-1)+αR*ICS*(e^((1.602176565ᴇ−19*VBE)/(1.3806488ᴇ−23*T))-1)"▶E1;                 "IC=-ICS*(e^((1.602176565ᴇ−19*VBC)/(1.3806488ᴇ−23*T))-1)+αF*IES*(e^((1.602176565ᴇ−19*VBE)/(1.3806488ᴇ−23*T))-1)"▶E2;                 "IS=αR*IES"▶E3;  "IS =αR*ICS"▶E4;  "IB+IE+IC=0"▶E5; "ICO=ICS*(1-αF*αR)"▶E6;  "ICEO=ICO/(1-αF)"▶E7;                 "VCEsat=(1.3806488ᴇ−23*T)/1.602176565ᴇ−19*LN((1+IC/IB*(1-αR))/(αR*(1-IC/IB*((1-αF)/αF))))"▶E8;              END;             IF ch==3 THEN                 PuTt({"We","ΔW","Le","ΔL","Cox","tox","IDS","μn","VGS","Vt","VDS","λ","ˠ","NA","Vt0","φp","VBS","gds","gm","VDsat"});                 "We =W-2*ΔW"▶E1;  "Le =L-2*ΔL"▶E2; "Cox=(3.9000217424*8.85418781762ᴇ−12)/tox"▶E3;                 "IDS =Cox*μn*(We/Le)*((VGS-Vt)*VDS-(VDS^2)/2)*(1+λ*VDS)"▶E4;                 "ˠ=(√(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12*1.602176565ᴇ−19*NA))/Cox"▶E5;                 "Vt=Vt0+ˠ*(√(2*ABS(φp)-ABS(VBS))-√(2*ABS(φp)))"▶E6;                 "φp=(-1.3806488ᴇ−23*T)/1.602176565ᴇ−19*LN(NA/8.72ᴇ15)"▶E7; "gds=IDS*λ"▶E8;                 "gm =√(Cox*μn*(We/Le)*(1+λ*VDS)*2*IDS)"▶E9; "VDsat=VGS-Vt"▶E0;              END;             IF ch==4 THEN                 PuTt({"Vbi","ND","xdmax","VGS","VDS","GO","μn","a","ID","VDsat","Vt","gm"});                 "Vbi =(1.3806488ᴇ−23*T)/1.602176565ᴇ−19*LN(ND/8.72ᴇ15)"▶E1;                 "xdmax =√(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12/1.602176565ᴇ−19*ND*(Vbi-VGS+VDS))"▶E2;                 "GO =1.602176565ᴇ−19*ND*μn*((a*W)/L)"▶E3;                  "ID=G0*(VDS-(2/3*√(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12/(1.602176565ᴇ−19*ND*a^2 )))*(((Vbi-VGS+VDS)^(3/2)-(Vbi-VGS)^(3/2))))"▶E4;                 "VDsat=(1.602176565ᴇ−19*ND*a^2)/(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12)-(Vbi-VGS)"▶E5;                 "Vt=Vbi-(1.602176565ᴇ−19*ND*a^2)/(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12)"▶E6;                 "gm =G0*(1-√(2*1.0341691371ᴇ−10*8.85418781762ᴇ−12/(1.602176565ᴇ−19*ND*a^2)*(Vbi-VGS)))"▶E7;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==73 AND AmA==3 THEN         CHOOSE(ch,"Stress Analysis",eqme[13]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"Є","σ","δ"});                 "σ=E*Є"▶E1; "Є=δ/L"▶E2; "σ=P/A"▶E3;              END;             IF ch==2 THEN                 PuTt({"σy1","σx1","σx","σy","τxy","σ1","σ2","τx1y1"});                 "σx1=(σx+σy)/2+(σx-σy)/2*COS(2*θ)+τxy*SIN(2*θ)"▶E1; "σx1+σy1=σx+σy"▶E2; "τx1y1=-((σx-σy)/2)*SIN(2*θ)+τxy*COS(2*θ)"▶E3;              END;             IF ch==3 THEN                 PuTt({"τ","ˠ","ф","r"});                 "τ=G*ˠ"▶E1; "ˠ=r*ф/L"▶E2; "τ=(T*r)/J"▶E3;              END;             IF ch==4 THEN                 PuTt({"σx","σy","τxy","σ1","σ2","θp1","θp2","τmax","θs","σavg"});                 "σ1=(σx+σy)/2+√((σx-σy)/2+τxy^2 )"▶E1; "σ1+σ2=σx+σy"▶E2; "SIN(2*θp1)=τxy/√(((σx-σy)/2)^2+τxy^2)"▶E3; "θp2 =θp1+90"▶E4;                 "τmax=(σ1-σ2)/2"▶E5; "θs=θp1-45"▶E6;  "σavg=(σx+σy)/2"▶E7;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END;          IF mSEL ==75 AND AmA==3 THEN         CHOOSE(ch,"Waves",eqme[14]);         IF ch THEN RESETSYMB(); END;         CASE             IF ch==1 THEN                 PuTt({"ym","y","k","t","v","f","k","ω","λ"});                 "y=ym*SIN(k*x-ω*t)"▶E1; "v=λ*f"▶E2; "k=(2*π)/λ"▶E3; "ω=2*π*f"▶E4;              END;             IF ch==2 THEN                 PuTt({"v","ρ","ω","sm","β","f"});                 "v=√(B/ρ)"▶E1; "I=(1/2)*ρ*v*ω^2*sm^2"▶E2; "β=10*LOG(I/10)"▶E3;  "ω=2*π*f"▶E1;              END;             IF ch==3 THEN                 PuTt({"ym","y","k","t","v","f","k","ω","λ"});                 "y=ym*COS(k*x-ω*t)"▶E1; "v=λ*f"▶E2; "k=(2*π)/λ"▶E3; "ω=2*π*f"▶E4;              END;         END;         IF ch THEN CHECK(1); STARTVIEW(2,1); END;     END; //    IF mSEL ==77 AND AmA==3 THEN //        CHOOSE(ch,"ITEM5",eqme[15]); //    END; END;

Graph 3D | QPI | SolveSys
03-10-2017, 03:34 PM
Post: #15
 Han Senior Member Posts: 1,883 Joined: Dec 2013
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
(02-12-2017 11:19 AM)Stevetuc Wrote:  This looks pretty cool. Is there any way to extract the graphics from the HP48 library for use on the Prime version? That would be a nice addition and helpful to use the equations without the HP48 AUR

There is also another equation library app that already implements the pictures if you are interested: http://www.hpmuseum.org/forum/thread-7725.html

Graph 3D | QPI | SolveSys
03-10-2017, 04:29 PM (This post was last modified: 03-10-2017 04:33 PM by toshk.)
Post: #16
 toshk Member Posts: 194 Joined: Feb 2015
RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G
(03-10-2017 03:34 PM)Han Wrote:
(02-12-2017 11:19 AM)Stevetuc Wrote:  This looks pretty cool. Is there any way to extract the graphics from the HP48 library for use on the Prime version? That would be a nice addition and helpful to use the equations without the HP48 AUR