Announcement

Collapse
No announcement yet.

Newbie questions

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #21
    My solution to ATAN2, in the 80, when I was using a TRS-80 Model III
    For extended-precision values, make the necessary changes.
    Code:
    [color=000000]120 R1[/color][color=8000FF]=[/color][color=000000]57.29578!
        [/color][color=007F00]'
        ' SE contains delta sin
        ' SN contains delta cos
        ' ATAN2 returns in X
        '
    [/color][color=000000]1910 [/color][color=0000C0]IF [/color][color=000000]SN[/color][color=8000FF]=[/color][color=000000]0 [/color][color=0000C0]THEN [/color][color=000000]X[/color][color=8000FF]=[/color][color=000000]90[/color][color=8000FF]-([/color][color=000000]SE&lt[/color][color=8000FF];[/color][color=000000]0[/color][color=8000FF])*[/color][color=000000]90 [/color][color=0000C0]ELSE [/color][color=000000]X[/color][color=8000FF]=[/color][color=0000C0]ATN[/color][color=8000FF]([/color][color=000000]SE[/color][color=8000FF]/[/color][color=000000]SN[/color][color=8000FF])*[/color][color=000000]R1[/color][color=8000FF]-([/color][color=000000]SN&lt[/color][color=8000FF];[/color][color=000000]0[/color][color=8000FF])*[/color][color=000000]180[/color][color=8000FF]:[/color][color=0000C0]IF [/color][color=000000]X&lt[/color][color=8000FF];[/color][color=000000]0 [/color][color=0000C0]THEN [/color][color=000000]X[/color][color=8000FF]=[/color][color=000000]X[/color][color=8000FF]+[/color][color=000000]360
    [/color]
    Test code:
    Code:
    [color=0000C0]#COMPILE EXE
    #DIM ALL
    
    FUNCTION PBMAIN [/color][color=8000FF]() [/color][color=0000C0]AS LONG
    
        LOCAL [/color][color=000000]R1[/color][color=8000FF], [/color][color=000000]SE[/color][color=8000FF], [/color][color=000000]SN[/color][color=8000FF], [/color][color=000000]X [/color][color=0000C0]AS SINGLE
    
    [/color][color=000000]120 R1[/color][color=8000FF]=[/color][color=000000]57.29578!
    1200 SE[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 0:SN= 0: ATAN2 should be   0" [/color][color=000000]X [/color][color=007F00]'prints 0
    [/color][color=000000]1210 SE[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 0:SN= 1: ATAN2 should be   0" [/color][color=000000]X [/color][color=007F00]'prints 0
    [/color][color=000000]1220 SE[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 1:SN= 1: ATAN2 should be  45" [/color][color=000000]X [/color][color=007F00]'prints 45
    [/color][color=000000]1230 SE[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 1:SN= 0: ATAN2 should be  90" [/color][color=000000]X [/color][color=007F00]'prints 90
    [/color][color=000000]1240 SE[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 1:SN=-1: ATAN2 should be 135" [/color][color=000000]X [/color][color=007F00]'prints 135
    [/color][color=000000]1250 SE[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 0:SN=-1: ATAN2 should be 180" [/color][color=000000]X [/color][color=007F00]'prints 180
    [/color][color=000000]1260 SE[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE=-1:SN=-1: ATAN2 should be 225" [/color][color=000000]X [/color][color=007F00]'prints 225
    [/color][color=000000]1270 SE[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE=-1:SN= 0: ATAN2 should be 270" [/color][color=000000]X [/color][color=007F00]'prints 270
    [/color][color=000000]1280 SE[/color][color=8000FF]=-[/color][color=000000]1[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE=-1:SN= 1: ATAN2 should be 315" [/color][color=000000]X [/color][color=007F00]'prints 315
    [/color][color=000000]1290 SE[/color][color=8000FF]= [/color][color=000000]0[/color][color=8000FF]:[/color][color=000000]SN[/color][color=8000FF]= [/color][color=000000]1[/color][color=8000FF]:[/color][color=0000C0]GOSUB [/color][color=000000]1910[/color][color=8000FF]: [/color][color=0000C0]PRINT [/color][color=C020C0]"For SE= 0:SN= 1: ATAN2 should be   0" [/color][color=000000]X [/color][color=007F00]'prints 0
         [/color][color=0000C0]WAITKEY$
         EXIT FUNCTION
    [/color][color=000000]1910 [/color][color=0000C0]IF [/color][color=000000]SN[/color][color=8000FF]=[/color][color=000000]0 [/color][color=0000C0]THEN [/color][color=000000]X[/color][color=8000FF]=-([/color][color=000000]SE[/color][color=8000FF]<>[/color][color=000000]0[/color][color=8000FF])*([/color][color=000000]90[/color][color=8000FF]-([/color][color=000000]SE[/color][color=8000FF]<[/color][color=000000]0[/color][color=8000FF])*[/color][color=000000]180[/color][color=8000FF]) [/color][color=0000C0]ELSE [/color][color=000000]X[/color][color=8000FF]=[/color][color=0000C0]ATN[/color][color=8000FF]([/color][color=000000]SE[/color][color=8000FF]/[/color][color=000000]SN[/color][color=8000FF])*[/color][color=000000]R1[/color][color=8000FF]-([/color][color=000000]SN[/color][color=8000FF]<[/color][color=000000]0[/color][color=8000FF])*[/color][color=000000]180[/color][color=8000FF]:[/color][color=0000C0]IF [/color][color=000000]X[/color][color=8000FF]<[/color][color=000000]0 [/color][color=0000C0]THEN [/color][color=000000]X[/color][color=8000FF]=[/color][color=000000]X[/color][color=8000FF]+[/color][color=000000]360
    1920 [/color][color=0000C0]RETURN
    
    END FUNCTION
    [/color]
    atan2 test.zip
    "The trouble with quotes on the Internet is that you can never know if they are genuine." - Abraham Lincoln.

    Comment


      #22
      Strickley in answer to question -
      For extended-precision values, make the necessary changes.
      change - LOCAL R1, SE, SN, X AS SINGLE
      to - LOCAL R1, SE, SN, X AS EXTENDED
      plus change degrees to radians

      (no other checks made for run time errors or compile time errors)

      ((The ATN function in PB is natively extended.))
      Last edited by Dale Yarker; 16 Aug 2016, 10:08 AM.
      Dale

      Comment


        #23
        Strickley in answer to question -
        Hello Dale,
        Now I'm confused ...I didn't do a question. I just put a code for calculating the ATAN2 function. The complete code is on line 1910. I also know that the PB ATN function returns its value in extended-precision and the ATAN2 function will use this precision only if it is in the interest of the programmer. Typically, implementations of the ATAN2 function takes some space, I'd say about 10 lines of code - This version fit in just one line! But yes, to run in extended precision are necessary the changes that you indicated.
        Anyway my thanks!
        Arthur.
        Code:
            LOCAL R1, SE, SN, X AS EXT  'single
        
        120 R1=5.72957795130823209e+01##    '57.29578!


        "The trouble with quotes on the Internet is that you can never know if they are genuine." - Abraham Lincoln.

        Comment

        Working...
        X
        😀
        🥰
        🤢
        😎
        😡
        👍
        👎