handling Large Numbers


Closed Thread
Results 1 to 13 of 13

Hybrid View

  1. #1
    Join Date
    Feb 2005
    Posts
    67

    Unhappy handling Large Numbers

    OK, Brain Freeze !! (At the moment I cannot even get a slope formula right !)

    This is what I am trying to do

    x var word [2]


    ADCIN 6,x

    x = x*2923-1343923

    x1 = div32 1000

    assembly says value truncated

    it only allows to max ~63000

    help !

    Pete
    Pete

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Peter1960 View Post
    OK, Brain Freeze !! (At the moment I cannot even get a slope formula right !)
    This is what I am trying to do
    x var word [2]
    ADCIN 6,x
    x = x*2923-1343923
    x1 = div32 1000
    assembly says value truncated
    it only allows to max ~63000
    help !
    Pete
    Page 31 of the manual, 4th line down...

  3. #3
    Join Date
    Feb 2005
    Posts
    67


    Did you find this post helpful? Yes | No

    Default

    Page 31 4th line down in mine says

    ** Top 16 Bits of Multiplication

    I also found the DIV32, however ?

    May I inquire what you were saying, please

    Pete
    Pete

  4. #4
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Ok, maybe we've got different versions of the manual, different sections on different pages...I was referring to Section 4.17, but I'm pulling ALL of this straight from the manual:

    x var word [2] ---- space between 'word' and '[2]' doesn't work.

    ADCIN 6,x ---- this might work, if you set the configuration and defines correctly, which I don't see.

    x = x*2923-1343923
    ---this won't work at all. For one thing, 'x' can't be any larger than 22 at the start of the operation because it'll be over the 16 bit limit. 1,343,923 is actually a 21 bit number. PBP only operates on 16 bit numbers. You might be wanting to do a 16x16=32bit number multiply operation, but you aren't going to do it with a '*'. And even if you did use it correctly, you couldn't subtract 1,343,923 from the result because, again, 1,343,923 is a number that can't be held in 16 bits.

    x1 = div32 1000 --- inconsistent usage with the correct way of using it

    assembly says value truncated
    it only allows to max ~63000 ----- because PBP doesn't deal with numbers larger than 16 bits (65535)...

  5. #5
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Peter,

    It looks like the original formula would have been

    y = 0.2923x - 134.39

    With a few extra decimal places.

    But since you will end up with an integer in the end, you can just round off to -134 for the b parameter (y=mX + b).

    For the m parameter, 0.2923 is 2923 ten thousanths. Which is an easy way to remember that you need to divide by 10,000 afterwards.

    So you multiply the A/D reading times 2923.
    Then divide it by 10,000
    Like this...
    Code:
    X      VAR WORD
    Y      VAR WORD
    
    ADCIN 6,X
    
    Y = X * 2923
    Y = DIV32 10000
    Y = Y - 134
    I think that's about as close as you can get with 16/31 bit math.

    HTH,
    DT

  6. #6
    Join Date
    Feb 2005
    Posts
    67


    Did you find this post helpful? Yes | No

    Thumbs up

    Hi Daryl,
    Must have been your telepathy, as I did precicly that, ie

    div32 first THEN subtract

    ADCIN 7,y

    Pause 100 ' adc settling

    x1 = y

    y = y*385

    y = div32 1000

    y = y - 5088

    y1=y1+y ' Loop to average results

    If x = 9 then goto outtwo

    x=x+1

    Pause 100

    Goto Ambient

    Outtwo: Debug "A raw= ",#x1,$0D,$0A

    y=y1/1000

    Y1= y1//1000

    Y1 = Y1/100

    Debug "A calc= ",#y,".",#y1,$0D,$0A

    x=0
    y=0
    y1=0

    now results are JUST Fine !!!!
    thanks Steve and Daryll

    kindregards

    pete

    sorry Steve is meant to say Skimask
    Last edited by Peter1960; - 24th April 2007 at 05:27. Reason: name change
    Pete

  7. #7
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Peter1960 View Post
    sorry Steve is meant to say Skimask
    Ouf! Thank you very much. I have some reputation to preserve

    thanks Steve and Daryll
    Who's Daryll now? i know the OLD movie, a magician and an OLD guy, but the OLD guy name is DarrEl

    Just kidding.
    Last edited by mister_e; - 24th April 2007 at 21:19.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  8. #8
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Who's Daryll now?
    That's my brother Daryll.
    Then there's my other brother Darryl.
    <br>
    DT

Similar Threads

  1. Replies: 4
    Last Post: - 15th April 2009, 01:54
  2. store/display very large numbers (700000)
    By ttease in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 18th March 2007, 22:08
  3. Multiplying large numbers
    By jhonea1 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 14th April 2006, 17:41
  4. How to display large numbers
    By Peter1960 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 26th March 2006, 23:17
  5. math problems - large numbers
    By Tomasm in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 16th February 2004, 07:48

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts