HP Forums
Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: HP Prime (/forum-5.html)
+--- Thread: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G (/thread-7706.html)



Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 02-03-2017 11:09 AM

putting eqnLib together
try the code out.
[attachment=4445]


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - ndzied1 - 02-03-2017 11:25 AM

I posted this in the suggestions section a while ago.
I'm pretty sure it's based on this patent

https://www.google.com/patents/US5175700


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Han - 02-03-2017 02:57 PM

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Tim Wessman - 02-03-2017 04:37 PM

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:

[attachment=4439]

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 02-03-2017 05:30 PM

Thanks ....a lot.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - ndzied1 - 02-03-2017 06:08 PM

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... ;-)


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 02-05-2017 09:16 AM

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Han - 02-05-2017 09:58 PM

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 02-11-2017 10:25 PM

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().

[attachment=4475]


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Stevetuc - 02-12-2017 11:19 AM

(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


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - john c. - 03-06-2017 01:24 AM

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 03-06-2017 04:50 AM

(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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - john c. - 03-06-2017 03:26 PM

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.


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Han - 03-06-2017 08:26 PM

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;



RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - Han - 03-10-2017 03:34 PM

(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

The pics are now available in this thread: http://hpmuseum.org/forum/thread-7907.html

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


RE: Looking for the massive text Formulae HP uses for their Equation Library in 50G/49G - toshk - 03-10-2017 04:29 PM

(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

The pics are now available in this thread: http://hpmuseum.org/forum/thread-7907.html

There is also another equation library app that already implements the pictures if you are interested: http://www.hpmuseum.org/forum/thread-7725.html
Always insightful codes from you....(I pour hours in reading your codes). The more I code on HPrime the easier my matlab codes.
when I grow up I would like to code like you.
thanks.