Post Reply 
NewRPL: Complex Numbers in Cartesian Form r[x,y] , ...
03-16-2017, 03:47 AM (This post was last modified: 04-13-2017 02:22 PM by compsystems.)
Post: #1
NewRPL: Complex Numbers in Cartesian Form r[x,y] , ...
Hello, sorry for my bad English

The Book "Complex Variables and Applications - James Ward Brown, Ruel ..."
Shows in your introductory part operations of complex numbers in cartesian form, I am replicating this in a library (HP-50), I would like to see this notation in NEWRPL, in addition to the phasor form (Widely used in Electrical and Electronic engineering)

Thanks

PHP Code:
%%HPT(0)A(D)F(.);
Library of Complex Numbers in Cartesian Form
Authorcompsystems
Versionalpha 0.5 April 10 2017
Coded with HPUserEdit 6
BibliographyComplex Variables and Applications James Ward BrownRuel ...

@  
ƒ =  SQRT
@  [] = -> (STORE)

UPDIR 'cplx' PGDIR -27 CF -128 SF -114 CF
RAD
RECT

DIR

  cplx1 
'(x1,y1)'
  
cplx2 '(x2,y2)'
  
cplx3 '(x1,0)'
  
cplx4 '(x2,0)'
  
cplx5 '(x,0)'
  
cplx6 '(0,y)'
  
cplx6 '(0,1)'
  
cplx '(re,im)'

  
addComplex
  «
    0  CP1 CP2 ans
    «
      delVars CP1 CP2 
'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  subtractComplex
  «
    0  CP1 CP2 ans
    «
      delVars CP1 CP2 
'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  multiplyComplex
  «
    0  CP1 CP2 ans
    «
      delVars CP1 CP2 
'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  negativeComplex
  «
    0  CP1 ans
    «
      delVars CP1 NEG 
'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  invComplex
  «
    0  CP1 ans
    «
      delVars
      
IF
        
CP1 RE IP 0. SAME
        CP1 IM IP 0. SAME 
AND
      
THEN
        
"Undefined, complex number must be nonzero" DUP MSGBOX
      
ELSE
        
CP1 INV 'ans' STO
        cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
      END
    »
  »

  divComplex
  «
    0  CP1 CP2 ans
    «
      delVars
      
IF
        
CP2 RE IP 0. SAME
        CP2 IM IP 0. SAME 
AND
      
THEN
        
"Undefined, the complex number of the divisor must be nonzero" DUP MSGBOX
      
ELSE
        
CP1 CP2 'ans' STO
        cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
      END
    »
  »

  scalarMulCplx
  «
    0  CP1 scl ans
    «
      delVars
      scl 
EVAL 'scl' STO
      cplx 
're' CP1 RE scl * EVAL = SUBST 'im' CP1 IM EVAL scl * = SUBST

    »
  »

  scalarMulCplx
  «
    0  CP1 scl ans
    «
      delVars
      scl 
EVAL 'scl' STO
      cplx 
're' CP1 RE scl / EVAL = SUBST 'im' CP1 IM EVAL scl / = SUBST

    »
  »

  absComplex
  «
     CP1
    «
      delVars
      CP1 RE 
EVAL CP1 IM EVAL ^ + ƒ
    »
  »


  argComplex
  «
     CP1
    «
      delVars
      RAD CP1 ARG
      IFERR NUM 
'1_°' CONVERT QPI
      THEN
      END
    »
  »


  conjComplex
  «
    0  CP1 ans
    «
      delVars CP1 CONJ 
'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  simplifyComplex
  «
     0  CP1 ans
    «
      delVars CP1 
EVAL 'ans' STO
      cplx 
're' ans RE EVAL = SUBST 'im' ans IM EVAL = SUBST
    »
  »

  delVars
  «
    
xyx1x2y1y2 PURGE
  »

  Demo0
  «

     CLEAR

    
'(x1, y1)' negativeComplex '(-x1, -y1)'

    '(x1, y1)' '(x2, y2)' 
addComplex '(x1+x2, y1+y2)'

    '(x1, y1)' '(x2, y2)' 
subtractComplex '(x1-x2, y1-y2)'

    '(x1, y1)' '(x2, y2)' 
multiplyComplex '(x2*x1-y2*y1, y2*x1+y1*x2)'

    '(x1, y1)' '(x2, y2)' 
divComplex '( (x2*x1+y2*y1)/(x2^2+y2^2), -((y2*x1-y1*x2)/(x2^2+y2^2)) )'

    '(x1, y1)' 
invComplex '( x1/(x1^2+y1^2), -y1/(x1^2+y1^2) )'

    '(x, y)' 
simplifyComplex '(x^2-y^2, 2*y*x)'

    '(x, y)' 
absComplex 'ƒ(x^2+y^2)'

    '(3, 4)' 
absComplex 5

    
'(3, 4)' argComplex '53.1301023542_°'

    '(3, 4)' 
conjComplex @ (3, -4)
  
»

  Demo1
  «


    
'(x1, 0)' '(x2, 0)' addComplex '(x1+x2, 0)'
    '(x1, 0)' '(x2, 0)' 
subtractComplex @  '(x1-x2, 0)'
    '(x1, 0)' '(x2, 0)' 
multiplyComplex '(x2*x1, 0)'
    '(x, 0)' '(0, y)' 
addComplex  '(x, y)'
    '(0, 1)' '(y, 0)' 
multiplyComplex '(0, y)'
    '(x, 0)' '(0, 1)' '(y, 0)' 
multiplyComplex addComplex '(x, y)'
    '(x, 0)' 
'(y, 0)' multiplyComplex addComplex  '(x, y)'
    '(x, 0)' '(x, 0)' 
multiplyComplex '(x^2, 0)'
    '(x, y)' '(x, y)' 
multiplyComplex '(x^2-y^2, 2*y*x)'

    '(x, y)' 
simplifyComplex '(x^2-y^2, 2*y*x)'
    '(x, y)' 
^  simplifyComplex '(x^3-3*y^2*x, 3*y*x^2-y^3)'
    '(0, 1)' 
simplifyComplex '(-1, 0)'
    '-(x, y)' 
simplifyComplex '(-x1, -y1)'


    '(x, y)' '(0, 0)' 
addComplex '(x, y)'
    '(x, y)' '(1, 0)' 
multiplyComplex  '(x, y)'
    '(x, y)' '-(x, y)' 
addComplex  '(0, 0)'

    '(x1, y1)' '(x2, y2)' 
negativeComplex addComplex '(x1-x2, y1-y2)'
    '(x1, y1)' '(x2, y2)' 
invComplex multiplyComplex '((x2*x1+y2*y1)/(x2^2+y2^2), -((y2*x1-y1*x2)/(x2^2+y2^2)))'

    '(x, y)' 
argComplex 'ATAN(y/x)+(1-x/ABS(x))*(‡/2)'
    '(x, y)' 
conjComplex '(x, -y)'
    'i^2' 
simplifyComplex @ (-10)

    
'(x, y)' '(x, y)' conjComplex multiplyComplex '(1, 0)'

    '(3, -2)' '(3, -2)' 
conjComplex multiplyComplex '(13, 0)'

    '(4, 5)' '(3, -2)' 
conjComplex multiplyComplex '(3, -2)' '(3, -2)' conjComplex multiplyComplex  scalarMulCplx '(2/13, 22/13)'
    '(4, 5)' '(3, -2)' 
divComplex '(2/13, 23/13)'

    '(4, 5)' 
3 scalarMulCplx '(4, 5)' '-2*i' scalarMulCplx addComplex  '(22, 7)'



  
»


  Demo2
  «

    
'(2/13, 3/13)' '(1/2, -1/2)'  multiplyComplex '(5/26, 1/26)' -> 1/(2,-3) * 1/(1,1)
    
'(x1, y1)' '(x2, y2)' addComplex 2 simplifyComplex '(x1^2+2*x2*x1+(x2^2-(y1^2+2*y2*y1+y2^2)),  (2*y1+2*y2)*x1+(2*y1+2*y2)*x2)'
    '(-3, 2)' 
absComplex (14absComplex < @ true
    
'(3, 3)' argComplex '45_°'
    '(3, 4)' 
argComplex '53.1301023542_°'
    '(3, -4)' 
argComplex '-53.1301023542_°'
    '(-3, -4)' 
argComplex '-126.86_°'
    '(-3, 4)' 
argComplex '126.86_°'
    '(3, 4)' 
conjComplex @ (3, -4)
    
'(3, 4)' conjComplex conjComplex @ (34)
    
'(x1, y1)' '(x2, y2)' addComplex conjComplex '(x1+x2, -(y1+y2))'
    '(x1, y1)' 
conjComplex '(x2, y2)' conjComplex addComplex '(x1+x2, -(y1+y2))'
    '(x1, -y1)' '(x2, -y2)' 
addComplex  '(x1+x2, -(y1+y2))'



  
»

  Demo3
  «
    
(3,4) (1,1addComplex
    
'(3.68201941381+1.56292451396*i)' '(5+7*i)' multiplyComplex
    
'(4,€23)_°' '(5+7*i)' multiplyComplex
    
'(3, 0)' invComplex '(.333333333333,0.)'
    '(0, 4)' 
invComplex '(0.,-.25)'
    '(0, 0)' 
invComplex
  »


  Demo4
  «

   
(-32absComplex (14absComplex < @ true
    
(33argComplex 45_°
    
(34argComplex 53.1301023542_°
    
(3, -4argComplex @ -53.1301023542_°
    
(-3, -4argComplex @ -126.86_°
    
(-34argComplex 126.86_°
    
(34conjComplex @ (3, -4)
    (
34conjComplex conjComplex @ (34)



  
»



END

'cplx' STO cplx Demo4 
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
NewRPL: Complex Numbers in Cartesian Form r[x,y] , ... - compsystems - 03-16-2017 03:47 AM



User(s) browsing this thread: 1 Guest(s)