Modulus calculation to find decreasing Year-Quarter

AI Thread Summary
The discussion focuses on creating a script in FileMaker 12 to decrement the current Year/Quarter in single steps while ensuring it wraps around correctly. The main challenge is to find a modulus calculation that handles all four quarters without using an IF statement, particularly the transition from Q1 to Q4 of the previous year. A proposed solution involves using the formula 1 + Mod(x + 2; 4), which simplifies the calculation by adjusting the starting quarter number. The participants confirm that this approach works conceptually and are eager to test its implementation. The goal is to achieve a concise and efficient code solution for the Year/Quarter decrement function.
jjc
Messages
20
Reaction score
0
I am feeling silly because I can't seem to crack this, but maybe I have been staring at it too long. I am trying to find a math function that will yield a single unit decrement of the currently defined Year/Quarter. This is a software UI thing: I am trying to create a script to decrement, in single steps, the current Year/Quarter shown. The issue is that it needs to wrap around back to the start. Hence I was trying to use a Modulus operator.

Here's what I need, decrementing the current quarter:
Q1 -> Q4 (of the prior year)
Q2 -> Q1
Q3 -> Q2
Q4 -> Q3

I can get three of the four conditions via mod(), but I can't seem to work out one calculation that works for all. Adding another number somewhere is fine; I am really just trying to do this without having to also include an IF() statement to look for the Q1->Q4 condition.

It doesn't have to deal with the "Q" string part; I already am splitting the string up and just handling the numeric portion separately. I then rebuild the string. Same with the year; that is handled in a separate step as well. I just need to calculate the quarter number, and I am trying to save 1 line of code. :)

And if anyone cares, this is being done in FileMaker 12 scripting language. Has most of the modern conveniences, but not quite as flexible as most real full-blown languages. This is what I have currently (yields 3 correct results; slightly modified from actual code to make it more readable):

...
res = Mod ( currQnum - 1 ; 4 );
return res;

Here is my working version for incrementing (modified again; Year-wrap around IS done with an IF statement, but not the Qrtr number):


...
newQ = Mod ( currQNum ; 4 ) + 1 ;
...
return newYr & " Q" & newQ

Thanks
Justin
 
Mathematics news on Phys.org
The usual trick is to add the base first to make sure it doesn't go negative: Mod(val+4-1; 4)
 
It seems like it wouldn't quite work in this situation; I could still end up with a zero result of the mod(); I want a result from 1 through 4. Val = 1 ; Mod (1 + 4 - 1 ; 4 ) = Mod (4) = 0. And if I add 4 to that, it works for that one, but not the others. I have thought of doing a subtraction ( 4 - Mod(...) ) but that just inverts the order of results, yielding f(3) = 1. But it does work for f(1).
 
jjc said:
It seems like it wouldn't quite work in this situation; I could still end up with a zero result of the mod(); I want a result from 1 through 4. Val = 1 ; Mod (1 + 4 - 1 ; 4 ) = Mod (4) = 0. And if I add 4 to that, it works for that one, but not the others. I have thought of doing a subtraction ( 4 - Mod(...) ) but that just inverts the order of results, yielding f(3) = 1. But it does work for f(1).
OK, you didn't say the qtr numbers are in the range 1-4. I assumed 0-3. That's easy: subtract 1 at the start and add it back at the end. So to step back n quarters:
1+Mod(4*n-1+x-n; 4)
 
Yeah, I didn't explicitly mention it but my sample data showed it.

Thanks for this function. I will assume that 'x' in your formula is the starting quarter number. n = 1 all the time, in my case.

So that essentially reduces the formula to:
1+Mod(x+2 ; 4 )

When I work through it in my head it works! Now to test it... :)

Thanks!
 
Thread 'Video on imaginary numbers and some queries'
Hi, I was watching the following video. I found some points confusing. Could you please help me to understand the gaps? Thanks, in advance! Question 1: Around 4:22, the video says the following. So for those mathematicians, negative numbers didn't exist. You could subtract, that is find the difference between two positive quantities, but you couldn't have a negative answer or negative coefficients. Mathematicians were so averse to negative numbers that there was no single quadratic...
Insights auto threads is broken atm, so I'm manually creating these for new Insight articles. In Dirac’s Principles of Quantum Mechanics published in 1930 he introduced a “convenient notation” he referred to as a “delta function” which he treated as a continuum analog to the discrete Kronecker delta. The Kronecker delta is simply the indexed components of the identity operator in matrix algebra Source: https://www.physicsforums.com/insights/what-exactly-is-diracs-delta-function/ by...
Thread 'Unit Circle Double Angle Derivations'
Here I made a terrible mistake of assuming this to be an equilateral triangle and set 2sinx=1 => x=pi/6. Although this did derive the double angle formulas it also led into a terrible mess trying to find all the combinations of sides. I must have been tired and just assumed 6x=180 and 2sinx=1. By that time, I was so mindset that I nearly scolded a person for even saying 90-x. I wonder if this is a case of biased observation that seeks to dis credit me like Jesus of Nazareth since in reality...
Back
Top