Post Reply 
Best way to convert complex numbers, rect, polar, euler
09-12-2018, 06:23 AM
Post: #1
Best way to convert complex numbers, rect, polar, euler
Hello

I have tried several ways to convert complex numbers between differents formats.
What i am looking for is a way to convert all of them between all formats.
As example:

polar to cartesian: r * exp(i*phi) => a+ib
cartesian to euler: a+ib => r(cos(phi)+ i*sin(phi) )

is there a simple command or trick to easily do this conversion?
Or do i have to write a program for that?

Thanks
Find all posts by this user
Quote this message in a reply
09-12-2018, 12:58 PM
Post: #2
RE: Best way to convert complex numbers, rect, polar, euler
It's built in. Press the angle [∡] key (Shift ×) to toggle any result between rectangular and polar notation. The angle will be interpreted according to the current angle mode, of course.

Example:
3+4i Enter --> 3+4*i
[∡] --> 5 ∡ 0.9273 (radian mode)

1∡2 Enter --> 1∡2 (radian mode)
[∡] --> -0.4161+0.9093*i

You can also use (x,y) notation instead of x+yi notation for inputs, and in Home Settings you can select whether you want outputs to be in (x,y) or x+yi notation.

The programmable functions polar_coordinates and rectangular_coordinates are also available. See their help screens for more info.

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-12-2018, 06:46 PM
Post: #3
RE: Best way to convert complex numbers, rect, polar, euler
(09-12-2018 12:58 PM)Joe Horn Wrote:  Example:
3+4i Enter --> 3+4*i
[∡] --> 5 ∡ 0.9273 (radian mode)

1∡2 Enter --> 1∡2 (radian mode)
[∡] --> -0.4161+0.9093*i

How to do this in RPN mode?
Find all posts by this user
Quote this message in a reply
09-12-2018, 06:51 PM
Post: #4
RE: Best way to convert complex numbers, rect, polar, euler
Just find.
This does not work:
’3+4*i’
Enter

This works:
3
Enter
4
Enter
i
*
+
Find all posts by this user
Quote this message in a reply
09-12-2018, 06:52 PM (This post was last modified: 09-12-2018 06:53 PM by Didier Lachieze.)
Post: #5
RE: Best way to convert complex numbers, rect, polar, euler
In RPN mode:

(3,4) Enter --> 3+4*i
[∡] --> 5 ∡ 0.9273 (radian mode)

1∡2 Enter --> 1∡2 (radian mode)
[∡] --> -0.4161+0.9093*i
Find all posts by this user
Quote this message in a reply
09-12-2018, 06:56 PM
Post: #6
RE: Best way to convert complex numbers, rect, polar, euler
(09-12-2018 06:52 PM)Didier Lachieze Wrote:  (3,4) Enter --> 3+4*i
[∡] --> 5 ∡ 0.9273 (radian mode)
Thank You, Didier.
Find all posts by this user
Quote this message in a reply
09-12-2018, 07:30 PM
Post: #7
RE: Best way to convert complex numbers, rect, polar, euler
3i4 also works from memory.

TW

Although I work for HP, the views and opinions I post here are my own.
Find all posts by this user
Quote this message in a reply
09-12-2018, 07:35 PM
Post: #8
RE: Best way to convert complex numbers, rect, polar, euler
Yes, 3i4 works also. Thank You, Tim.
Find all posts by this user
Quote this message in a reply
09-12-2018, 09:20 PM (This post was last modified: 09-13-2018 12:18 AM by Anders.)
Post: #9
RE: Best way to convert complex numbers, rect, polar, euler
(09-12-2018 07:35 PM)Voldemar Wrote:  Yes, 3i4 works also. Thank You, Tim.

3i4 =3*4*i =12i so it did not work on my G2 calc.

But it would be fantastic if it the [∡] button worked the same way in CAS as it does in Home, but giving exact answers...
Find all posts by this user
Quote this message in a reply
09-20-2018, 05:13 PM
Post: #10
RE: Best way to convert complex numbers, rect, polar, euler
Thanks very much for all of your answers.
Find all posts by this user
Quote this message in a reply
09-20-2018, 11:40 PM
Post: #11
RE: Best way to convert complex numbers, rect, polar, euler
(09-12-2018 09:20 PM)Anders Wrote:  3i4 =3*4*i =12i so it did not work on my G2 calc.

It does work in RPN mode, as was requested.

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-21-2018, 12:41 AM
Post: #12
RE: Best way to convert complex numbers, rect, polar, euler
(09-20-2018 11:40 PM)Joe Horn Wrote:  
(09-12-2018 09:20 PM)Anders Wrote:  3i4 =3*4*i =12i so it did not work on my G2 calc.

It does work in RPN mode, as was requested.

I think the RPN mode RPL is crippled.
The stack should be a special list
A new parser is needed for
#RPL //programs similar to command line

Stacks could be T0..T9
where :T6:STACK would set the default as T6
but if needed a command could refer to another stack (or not in the first beta)
I hhope that my idea will be recarded as the Next Big, no, HUUUUUUUGE Thing
for the HP Prime RPN mode and #RPL Programs
like a symbolic vector is internally a list so could be a stack

I have even imagined :666:SIN operating on the object upon the stack level 666
Thus :5:DROPN would first take the 'N' from the level 1
then DROP that many stack elements or items starting from the new level 5
Thus the default with this tagged reference method would be :1:DROPN
If only I had the time...
:T4::3ConfusedQ would take a square of the value in stack T4, level 3
and also return the answer at level 3 - like the stack started from there

One could "debug" the stack(s) using the build-in List Editor
I want a real RPL environment....

Sorry for the rant - slightly off topic on the subject, but still about RPN & Prime
VPN
Find all posts by this user
Quote this message in a reply
09-21-2018, 07:38 AM
Post: #13
RE: Best way to convert complex numbers, rect, polar, euler
(09-20-2018 11:40 PM)Joe Horn Wrote:  
(09-12-2018 09:20 PM)Anders Wrote:  3i4 =3*4*i =12i so it did not work on my G2 calc.

It does work in RPN mode, as was requested.

You are kind of proving my larger point that the implementation of the complex number formats standard and functions is screwy.
Certain formats and functions/buttons works in some modes and in others not.
This is confusing the user constantly...

1. There is a [∡] button and it works as it should in Home but not in CAS (super frustrating - forcing people to implement their own conversion functions - see various attempts in the http://www.hpmuseum.org/forum/forum-15.html ).
2. Some complex number formats work in RPN but not in CAS or textbook (home), e.g. 2i4 is interpreted different.

It short it’s a mess.

An engineer (EE, CE in particular), who needs to constantly move back and forth between polar and cartesian coordinates (and calc/pre calc high school student too for that matter), should be able to expect the calculator to accept the same number formats and operate the same regardless of he/she is using RPN, textbook format (home) or CAS.


Wouldn't it be great if we could standardize across all three, e.g. 4i3, 3∡(pi/2) works everywhere - simple notation that saves key strokes.
You can then do things like (4i3) * (3∡(pi/2)) in Textbook (Home) and CAS
or in RPN:
4i3 <enter>
3∡(pi/2) <enter>
* <enter>
and the expected results
Find all posts by this user
Quote this message in a reply
09-21-2018, 07:56 AM
Post: #14
RE: Best way to convert complex numbers, rect, polar, euler
(09-21-2018 07:38 AM)Anders Wrote:  
(09-20-2018 11:40 PM)Joe Horn Wrote:  It does work in RPN mode, as was requested.

You are kind of proving my larger point that the implementation of the complex number formats standard and functions is screwy.
Certain formats and functions/buttons works in some modes and in others not.
This is confusing the user constantly...

1. There is a [∡] button and it works as it should in Home but not in CAS (super frustrating - forcing people to implement their own conversion functions - see various attempts in the http://www.hpmuseum.org/forum/forum-15.html ).
2. Some complex number formats work in RPN but not in CAS or textbook (home), e.g. 2i4 is interpreted different.

It short it’s a mess.

An engineer (EE, CE in particular), who needs to constantly move back and forth between polar and cartesian coordinates (and calc/pre calc high school student too for that matter), should be able to expect the calculator to accept the same number formats and operate the same regardless of he/she is using RPN, textbook format (home) or CAS.


Wouldn't it be great if we could standardize across all three, e.g. 4i3, 3∡(pi/2) works everywhere - simple notation that saves key strokes.
You can then do things like (4i3) * (3∡(pi/2)) in Textbook (Home) and CAS
or in RPN:
4i3 <enter>
3∡(pi/2) <enter>
* <enter>
and the expected results

"operate the same regardless of he/she is using RPN, textbook format (home) or CAS."

Impossible with the RPN. It *IS* different by it's very nature.

Possible, but not feasible with [Home] vs [CAS],
which still needs a lot of work.

The CAS is never going to change.
It is used in various other platforms
and the sole genius developer has a certain consistent philosophy behind it.
He has already made many special exceptions just for us.
Lucky enough this unmentioned professor still fixes bugs
and even answers questions in this very forum - in English (and French).

Therefore the Home needs to adapt to be more like CAS (or CAS+).
Using CAS("Expression") or CAS.casfunction() you already have extras,
but ... I'm afraid that you're right... it is different.
<sigh>
I suggest you stick to Home for your [∡] problems and learn that environment well.
VPN
Find all posts by this user
Quote this message in a reply
09-21-2018, 03:09 PM (This post was last modified: 09-21-2018 03:20 PM by Anders.)
Post: #15
RE: Best way to convert complex numbers, rect, polar, euler
(09-21-2018 07:56 AM)CyberAngel Wrote:  
(09-21-2018 07:38 AM)Anders Wrote:  You are kind of proving my larger point that the implementation of the complex number formats standard and functions is screwy.
Certain formats and functions/buttons works in some modes and in others not.
This is confusing the user constantly...

1. There is a [∡] button and it works as it should in Home but not in CAS (super frustrating - forcing people to implement their own conversion functions - see various attempts in the http://www.hpmuseum.org/forum/forum-15.html ).
2. Some complex number formats work in RPN but not in CAS or textbook (home), e.g. 2i4 is interpreted different.

It short it’s a mess.

An engineer (EE, CE in particular), who needs to constantly move back and forth between polar and cartesian coordinates (and calc/pre calc high school student too for that matter), should be able to expect the calculator to accept the same number formats and operate the same regardless of he/she is using RPN, textbook format (home) or CAS.


Wouldn't it be great if we could standardize across all three, e.g. 4i3, 3∡(pi/2) works everywhere - simple notation that saves key strokes.
You can then do things like (4i3) * (3∡(pi/2)) in Textbook (Home) and CAS
or in RPN:
4i3 <enter>
3∡(pi/2) <enter>
* <enter>
and the expected results

"operate the same regardless of he/she is using RPN, textbook format (home) or CAS."

Impossible with the RPN. It *IS* different by it's very nature.

Possible, but not feasible with [Home] vs [CAS],
which still needs a lot of work.

The CAS is never going to change.
It is used in various other platforms
and the sole genius developer has a certain consistent philosophy behind it.
He has already made many special exceptions just for us.
Lucky enough this unmentioned professor still fixes bugs
and even answers questions in this very forum - in English (and French).

Therefore the Home needs to adapt to be more like CAS (or CAS+).
Using CAS("Expression") or CAS.casfunction() you already have extras,
but ... I'm afraid that you're right... it is different.
<sigh>
I suggest you stick to Home for your [∡] problems and learn that environment well.
VPN

Obviously RPN is different. I've used HP calculators for years so I am pretty familiar with that concept (67, 42S 28S 48GX, 50g etc). Yes I used phrase "the same" loosely here but was hoping people would get what I mean.

Ok I'll try again:
There is no reason why 4i2 and 3∡1.4 could not be made to work in the 3 modes.

Nor is there reason why the ∡ button could not be made to work the "same" way (except considering the inherent differences in RPN vs Text book mode).

The way you solve this is buy shielding the underlying CAS or Home functionality (Textbook or RPN mode) with a UI parser that parsers the key strokes as the user types them, convert the key strokes into tokens and organized the tokens in to an abstract syntax tree.

The correct syntax for complex numbers and how i, ∡ buttons work in different contexts are described as regular expressions and with BNF notation. A simple lexical scanner and a LALR type parser can then be used to generate the AST.

Once user hit's enter the parser passes the tree in the form that CAS or Home expects it. No core code need to change in CAS except actual interface to CAS (UI).

Now, I am assuming the HP Prime have UI parser(s) already that front ends Home and CAS (how else do they do it today?). Therefore, all you need to do is update them/it per above. Could be as simple as adding/updating the existing grammar/formal language (catalog of valid regular expressions and BNF rules).
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: