Solving Modulo Arithmetic Problem with Variable Integer k

  • Thread starter Mentallic
  • Start date
  • Tags
    Arithmetic
  • #1

Mentallic

Homework Helper
3,802
94
I've stumbled across an arithmetic problem that's getting the better of me, so I need your help!

I have a constant set of integers [itex][m,n], m>0, m\neq n[/itex] and a variable integer k>0. If we multiply k by successively increasing positive integers t, we will eventually get kt > m. Now, what I want is the output to be kt if [itex]kt \in [m,n][/itex] and n if [itex]kt>n[/itex].

So for example, let's consider m = 45, n = 50 and k = 8.

We get the sequence 8, 16, 24, 32, 40, 48

At this point, we have a value larger or equal to m=45, and 48 < n=50 so the output is 48.

For k=11 we have
11, 22, 33, 44, 55

Since we now have a value larger than m, but the value is also larger than n, the output needs to be n=50.

So finally, my question is, can I create a function that isn't piecewise that defines this process? The piecewise function wasn't such a big deal,

$$
f(k,m,n) =
\begin{cases}
\Big\lceil \frac{m}{k} \Big\rceil k, & \text{if}\hspace{5 mm} \Big\lceil \frac{m}{k} \Big\rceil k < n \\ \\
n, & \text{if}\hspace{5 mm} \Big\lceil \frac{m}{k} \Big\rceil k \geq n
\end{cases}
$$


But I can't figure out how to produce a non-piecewise function.
 
Physics news on Phys.org
  • #2
[m,n] means the interval from m to n?

So t is the smallest integer t such that kt >=m?

You can implement min(a,b) (the smaller value of a and b) as (|a+b|-|a-b|)/2, I think that should help.
 
  • #3
mfb said:
[m,n] means the interval from m to n?

So t is the smallest integer t such that kt >=m?

Yes and yes. Sorry, I should have been more clear when defining my variables.

mfb said:
You can implement min(a,b) (the smaller value of a and b) as (|a+b|-|a-b|)/2, I think that should help.

That's perfect! Thanks mfb.
 
  • #4
Mentallic said:
So finally, my question is, can I create a function that isn't piecewise that defines this process?

mfb said:
You can implement min(a,b) (the smaller value of a and b) as (|a+b|-|a-b|)/2.
Now a method to implement absolute value that isn't piecewise would be needed.
 
Last edited:
  • #5
Good point, but this problem was actually for a computing project of mine and since the abs(x) function already exists as a library function, its piecewise definition isn't an issue.
 
  • #6
For 32 bit signed two complement integers, and assuming the compiler does an arithmetic right shifts:

#define abs(a) ((a^(a>>31))+((a>>31)&1))
 

Suggested for: Solving Modulo Arithmetic Problem with Variable Integer k

Replies
1
Views
757
Replies
3
Views
654
Replies
2
Views
857
Replies
4
Views
1K
Replies
9
Views
214
Back
Top