Finding the Separate RHS of a/b when b = b' + c

  • Thread starter Thread starter jobyts
  • Start date Start date
AI Thread Summary
The discussion focuses on algebraic manipulation to separate the right-hand side (RHS) of the equation a/(b'+c) into a/b' plus another term. Participants explore approximating division operations in microcode, noting that the microcode group lacks a division operation but can perform multiplication. A proposed solution involves using a multiplicative factor of approximately 4295 to scale the input value x, which ranges from 0 to 1,000,000, to an output y that fits within a 32-bit range. The accuracy of this approximation is debated, with calculations provided to illustrate the potential error introduced by assuming certain values. The conversation concludes with a request for clarification on the derivation of the proposed equation, highlighting the collaborative nature of the problem-solving process.
jobyts
Messages
226
Reaction score
60
let's say a/b = a/(b'+c)
where b = b'+c.
I need to separate the RHS into a/b' + something. What's that something?
 
Mathematics news on Phys.org
jobyts said:
let's say a/b = a/(b'+c)
where b = b'+c.
I need to separate the RHS into a/b' + something. What's that something?

What's the context? Is it just algebraic manipulation?

Something = a/(b'+c) - a/b'

and put over a common denominator?
 
I need to convert x (ranging between 0 - 1,000,000) to y (ranging between 0 - (2^32)-1).

so y = (x * 2^32)/1M => (x << 32)/ 1M

We, the software guys have no problem doing it. But the microcode group says they don't have division operation.
I was trying to provide a solution by converting (x << 32)/ 1M to (x <<32) / ((2^20) + a)
(2^20 is the closest approximation to 1M)

I need to measure the error I'm introducing if I assume a=0.
If possible, I want to come up with a calculation as
(x<<32) /((2^20) + a) => (x << 12) + b.
What is b?
 
jobyts said:
I need to convert x (ranging between 0 - 1,000,000) to y (ranging between 0 - (2^32)-1).

so y = (x * 2^32)/1M => (x << 32)/ 1M

We, the software guys have no problem doing it. But the microcode group says they don't have division operation.
I was trying to provide a solution by converting (x << 32)/ 1M to (x <<32) / ((2^20) + a)
(2^20 is the closest approximation to 1M)

I need to measure the error I'm introducing if I assume a=0.
If possible, I want to come up with a calculation as
(x<<32) /((2^20) + a) => (x << 12) + b.
What is b?

Do they have a multiply? Just multiply x * 4295

Will that work?
 
berkeman said:
Do they have a multiply? Just multiply x * 4295

Will that work?

They have multiply operation for integers. Is it possible to make the approximation independent of x? We can use if-then-else.
 
jobyts said:
They have multiply operation for integers. Is it possible to make the approximation independent of x? We can use if-then-else.

Not sure what you mean by approximation. That multiplicative factor is pretty exact for doing the scaling that you asked about. Nice integer multiplication...
 
1000000*4295 = 0x1 0000 7FC0
1000000*4294 = 0x0 FFF1 3D80
1000000*1125899906 >> 18 = 4294967292 (0x0 FFFF FFFC)
1000000*2251799813 >> 19 = 4294967294 (0x0 FFFF FFFE)
 
Last edited:
berkeman said:
Not sure what you mean by approximation. That multiplicative factor is pretty exact for doing the scaling that you asked about. Nice integer multiplication...

2^32 / 1M = 4,294.967296
We rounded 4,294.967296... to 4295.

So, for higher values of x, the deviation would be high.
 
Thanks Berkeman and Xitami for your answers. Xitami's equation gives pretty accurate results.

Xitami, can you tell how you derived that equation?
 
  • #10
Code:
PARI/GP >[B]{
K=2^32-1;
T=1000000;
m=K/T;
for(i=0,20,
        n=T*truncate(m*2^i)>>i;
        print(i" "K-n))}[/B]
0 967295
1 467295
2 217295
3 92295
4 29795
5 29795
6 14170
7 6358
8 2452
9 499
10 499
11 10
12 10
13 10
14 10
15 10
16 10
17 3
18 3
19 1
20 1
PARI/GP > [B]truncate(m*2^19)[/B]
%2 = 2251799813
PARI/GP > [B]#binary(truncate(m*2^19)*1000000)[/B]
%3 = 51
51 bits of intermediate result
 
Last edited:

Similar threads

Replies
10
Views
2K
Replies
10
Views
1K
Replies
5
Views
2K
Replies
19
Views
3K
Replies
1
Views
1K
Replies
3
Views
1K
Replies
4
Views
1K
Replies
10
Views
5K
Back
Top