• Support PF! Buy your school textbooks, materials and every day products Here!

Modulo arithmetic

  • Thread starter Mentallic
  • Start date
  • #1
Mentallic
Homework Helper
3,798
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.
 

Answers and Replies

  • #2
34,043
9,891
[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
Mentallic
Homework Helper
3,798
94
[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.

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
rcgldr
Homework Helper
8,680
514
So finally, my question is, can I create a function that isn't piecewise that defines this process?
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
Mentallic
Homework Helper
3,798
94
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
rcgldr
Homework Helper
8,680
514
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))
 

Related Threads on Modulo arithmetic

Replies
8
Views
4K
  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
7
Views
1K
  • Last Post
Replies
3
Views
1K
  • Last Post
Replies
2
Views
997
  • Last Post
Replies
1
Views
4K
  • Last Post
Replies
3
Views
601
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
4
Views
1K
Top