# HP Forums

You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Although these two little RPL programs will work on the HP 28C/S, they are intended for later RPL calculators such as the HP 48S and HP 50g which lack this capability. Both programs accept the input parameters in the form of a complex number and return the results as individual values into the stack.

Rectangular to Polar Coordinates:

<< DUP ARG SWAP ABS >>

Example: (3,4) --> 5 in stack level 1 and 53.13 in stack level 2 (degrees)

Polar to Rectangular Coordinates:

<< DUP DUP RE SWAP IM SIN * SWAP DUP RE SWAP IM COS * >>

Example: (5,53.13) --> 3 in stack level 1 and 4 in stack level 2 (degrees)
Here's an alternate approach for Polar to Rectangular for HP 48/49/50, but it takes the inputs on two levels, not as a single complex number:

« -16 SF V2 -16 CF V »
That's actually very elegant and more in line with the methodology of calculators with direct conversion keys such as the HP 33s. The conversion in the other direction for rectangular to polar representation is:

<< -16 CF ->V2 -16 SF V-> >>
The only problem is that it does not preserve the user's original flag settings. A quick RCLF UNROT at the beginning and SWAP STOF at the end should fix it.
(12-17-2013 06:30 AM)Han Wrote: [ -> ]The only problem is that it does not preserve the user's original flag settings. A quick RCLF UNROT at the beginning and SWAP STOF at the end should fix it.

Well, you are correct about the UNROT at the beginning, but you need a ROT rather than a SWAP at the end to get the correct stack order.
nice

Code:
``` 'R2P' %%HP: T(3)A(D)F(.); \<< RCLF UNROT -16. CF \->V2 -16. SF V\-> ROT STOF \>> 'P2R' %%HP: T(3)A(D)F(.); \<< RCLF UNROT -16. SF \->V2 -16. CF V\-> ROT STOF \>>```
Want to take on matrix to area by Gauss's shoelace next? I'd dig it...
``` %%HP: T(3)A(D)F(.); \<< PUSH -16. CF \->V2 -16. SF V\-> POP \>> 'P2R' %%HP: T(3)A(D)F(.); \<< PUSH -16. SF \->V2 -16. CF V\-> POP \>>```
I like push-pops 