Calculating Your Weight Lifting Rep Maximum Using ColdFusion

Posted March 17, 2009 at 8:08 AM

Tags: ColdFusion, Health / Fitness, Project HUGE

Now that I am following Chad Waterbury's Huge In A Hurry - "Get Started" program, I need to have a better understanding of what my various rep maximums are. A rep maximum is the weight at which I can exactly get a given number of reps. For example, if my 5RM (5 Rep Maximum) was 135 for a given exercise, it would mean that I was strong enough to get 5 reps at 135 but not 6 reps. I need to know this information because in the Huge In A Hurry program, I need to be performing sub-RM reps at Rep Max weights; because I am not actually pushing to failure, I don't have the best gauge of where my rep max really is (until I get a better feel for the program).

That said, rep maximum is something that can be estimated based on relative intensities to a 1RM (one rep max). By that I mean that your RM at any given weight is a rough percentage estimate of what your 1RM is. So, theoretically, if you know any of your rep max weights, you can use that to extrapolate all of your rep max weights. Of course, this is a very rough estimate as strength training is specific and does not necessarily extrapolate well. But, for rough estimates, it gives us a good place to start.

This is a table that I have seen in many PT (personal training) text books, but I got the following version of it off of bodybuilding.com:

Reps / %1RM
1 - 100
2 - 95
3 - 90
4 - 88
5 - 86
6 - 83
7 - 80
8 - 78
9 - 76
10 - 75
11 - 72
12 - 70

Based on this table (and some further guess work), I created a ColdFusion user defined function that would return all of your rep maximums based on any given RM:

 Launch code in new window » Download code as text file »

  • <cffunction
  • name="CalculateRepMaximum"
  • access="public"
  • returntype="array"
  • output="false"
  • hint="I calculate estimated repetition maximums based on a given rep max.">
  •  
  • <!--- Define arguments. --->
  • <cfargument
  • name="Weight"
  • type="numeric"
  • required="true"
  • hint="I am the weight at which the given rep maximum can be acheived."
  • />
  •  
  • <cfargument
  • name="Reps"
  • type="numeric"
  • required="false"
  • default="1"
  • hint="I am the number of maximum reps that can be achieved at the given weight."
  • />
  •  
  • <!--- Define the local scope. --->
  • <cfset var LOCAL = StructNew() />
  •  
  • <!---
  • Create the array that we will return. Each index
  • stands for the number of that can be achieved at
  • the given weight.
  • --->
  • <cfset LOCAL.RepMax = ArrayNew( 1 ) />
  •  
  • <!---
  • Create an array to hold the percentage of a 1 rep
  • max intensity can be done for a given number of reps.
  • This table is an expanded one taken based on the data
  • available on BodyBuilding.com.
  •  
  • This table is just a rough estimate! There is no way that
  • true strength can be extrapolated from any given weight
  • as your body is trained to be most efficient at any given
  • weight. Strength cannot be perfectly extrapolated from
  • endurance and vice versa.
  • --->
  • <cfset LOCAL.Intensity = ArrayNew( 1 ) />
  • <cfset LOCAL.Intensity[ 1 ] = 1 />
  • <cfset LOCAL.Intensity[ 2 ] = .95 />
  • <cfset LOCAL.Intensity[ 3 ] = .9 />
  • <cfset LOCAL.Intensity[ 4 ] = .88 />
  • <cfset LOCAL.Intensity[ 5 ] = .86 />
  • <cfset LOCAL.Intensity[ 6 ] = .83 />
  • <cfset LOCAL.Intensity[ 7 ] = .8 />
  • <cfset LOCAL.Intensity[ 8 ] = .78 />
  • <cfset LOCAL.Intensity[ 9 ] = .76 />
  • <cfset LOCAL.Intensity[ 10 ] = .75 />
  • <cfset LOCAL.Intensity[ 11 ] = .72 />
  • <cfset LOCAL.Intensity[ 12 ] = .7 />
  •  
  • <!--- Guessing at this point. --->
  • <cfset LOCAL.Intensity[ 13 ] = .68 />
  • <cfset LOCAL.Intensity[ 14 ] = .66 />
  • <cfset LOCAL.Intensity[ 15 ] = .64 />
  • <cfset LOCAL.Intensity[ 16 ] = .61 />
  • <cfset LOCAL.Intensity[ 17 ] = .58 />
  • <cfset LOCAL.Intensity[ 18 ] = .55 />
  • <cfset LOCAL.Intensity[ 19 ] = .52 />
  • <cfset LOCAL.Intensity[ 20 ] = .48 />
  •  
  •  
  • <!---
  • Based on the given weight, calculate the one rep
  • maximum using the intensity table.
  • --->
  • <cfset LOCAL.OneRepMax = Fix( ARGUMENTS.Weight / LOCAL.Intensity[ ARGUMENTS.Reps ] ) />
  •  
  • <!--- Store the one rep max in our results array. --->
  • <cfset LOCAL.RepMax[ 1 ] = LOCAL.OneRepMax />
  •  
  •  
  • <!---
  • Now that we have our 1RM in place, we can calculate
  • the result set based on the intensity table.
  • --->
  • <cfloop
  • index="LOCAL.Reps"
  • from="2"
  • to="#ArrayLen( LOCAL.Intensity )#"
  • step="1">
  •  
  • <!--- Set the RM for the given weight. --->
  • <cfset LOCAL.RepMax[ LOCAL.Reps ] = Fix( LOCAL.OneRepMax * LOCAL.Intensity[ LOCAL.Reps ] ) />
  •  
  • </cfloop>
  •  
  •  
  • <!--- Return the populated rep max array. --->
  • <cfreturn LOCAL.RepMax />
  • </cffunction>

As you can see, all we are doing is using the above table to populate an array of weights based on relative intensities. To test this, I wrote the following code:

 Launch code in new window » Download code as text file »

  • <!---
  • Get the estimated rep maximums based on being able to
  • bench 245 lbs. 2 times on a flat bench.
  • --->
  • <cfset arrRM = CalculateRepMaximum( 245, 2 ) />
  •  
  • <!--- Output the estimated rep maximums. --->
  • <cfloop
  • index="intRM"
  • from="1"
  • to="#ArrayLen( arrRM )#"
  • step="1">
  •  
  • #intRM# RM = #arrRM[ intRM ]# lbs.<br />
  •  
  • </cfloop>

I know that I can get around 2 reps bench pressing 245 lbs. So, I use that as my "known" RM and let the ColdFusion user defined function fill in the blanks. Running the above code gives me the following:

1 RM = 257 lbs.
2 RM = 244 lbs.
3 RM = 231 lbs.
4 RM = 226 lbs.
5 RM = 221 lbs.
6 RM = 213 lbs.
7 RM = 205 lbs.
8 RM = 200 lbs.
9 RM = 195 lbs.
10 RM = 192 lbs.
11 RM = 185 lbs.
12 RM = 179 lbs.
13 RM = 174 lbs.
14 RM = 169 lbs.
15 RM = 164 lbs.
16 RM = 156 lbs.
17 RM = 149 lbs.
18 RM = 141 lbs.
19 RM = 133 lbs.
20 RM = 123 lbs.

Simple stuff. Again, the accuracy of this is somewhat questionable, but at least it gives us a place to start from. The next step for me would be to integrate this calculator into my DigDeepFitness.com iPhone fitness software.

Download Code Snippet ZIP File

Post Comment  |  Ask Ben  |  Permalink  |  Other Searches  |  Print Page




Learning ColdFusion 9 - ColdFusion 9 tutorials, samples, examples, demos

Reader Comments

Mar 17, 2009 at 8:50 AM // reply »
24 Comments

Nice, next step is have it generate one of those 7 week bench press programs. Like the one Muscle Media published back in the day.
http://www.timinvermont.com/fitness/benchpgm.htm

According to that math, my 1 RM is higher than I figured (305). I wonder if it is that whole mental thing. :skeered:


Mar 17, 2009 at 8:54 AM // reply »
6,516 Comments

@Aaron,

I remember Muscle Media (the magazine?) I used to read it before I read FLEX, before I read Muscular Development.


Mar 17, 2009 at 9:02 AM // reply »
24 Comments

@Ben Nadel,
That program is awesome btw...freaky gains on bench. I have run through it a couple times.

_Really_ tough on the shoulders though. For me anyways.


Mar 17, 2009 at 9:13 AM // reply »
6,516 Comments

@Aaron,

I'll have to check it out after I'm done getting Huge in a Hurry :)

Yeah, shoulders are a tough point for me. I rarely do any direct shoulder work anymore as they tend to hurt afterward. Tomorrow, however, I'm supposed to be doing some shoulder press, so we'll see how that goes.


Mar 17, 2009 at 9:35 AM // reply »
2 Comments

Yeah I code Coldfusion all day long and like to push the iron too. I don't know if it's 100% accurate to calculate these pecentages. My advice to you is to keep it simple. Big weights make big muscles!!!
I like also Dorian Yates training philosophy that you should train one set to failure, max. Get a exercise and do that for max 5 reps, and do only one max set. You can do a couple of warm-up sets. I think these sorts of programs prevent over-training and keeps your in a positive anabolic state, just the opposite that can happen when overtraning - catabolic.


Mar 17, 2009 at 9:45 AM // reply »
6,516 Comments

@Marko,

These percentages are not nearly 100% accurate! They are meant only for rough estimates. Working out is specific adaptations to specific demands. If you always train with very low reps, these estimates will probably be way off in the 15-20 rep range. However, likewise, if you only train 15-20 reps, the 1RM estimate is probably WAY high cause you are not used to going heavy. This is just a staring point.

Have you see Blood and Guts? A great video. Dorian is a beast - one of my all time favorite lifters.


Mar 18, 2009 at 3:57 AM // reply »
2 Comments

If you have been lifting for a while and are aiming for training for strength and muscle, the way to go is to go heavy. I would say for exercises like benchpress and deadlift you can do singles! Squats you can be a little more careful with. I think if you want to get stronger the best exercise there is deadlifts! And doing deadlifts in a workout is a great way to feel that you trained - there's no exercise besides squats that is so hard! That feels good!

And JQuery is avesome, I use it with Coldfusion with joy.

And by the way - I like your blog, I read every post now!


Mar 18, 2009 at 8:05 AM // reply »
6,516 Comments

@Marko,

I think singles are good, but I don't think you can do singles all the time. I feel like that raises the likelihood of injury.

Glad you are liking the blog :) Thanks.


Apr 7, 2009 at 4:51 AM // reply »
1 Comments

I agree with Marko!!

Kristal L. Rosebrook


Post Comment  |  Ask Ben

Recent Blog Comments
Nov 20, 2009 at 11:32 PM
Five Months Without Hungarian Notation And I'm Loving It
I've used headless camel case for years for not only ColdFusion variables, but also SQL tables and fields... pretty much everything involving code. I also subscribe to the "don't abbreviate and clea ... read »
Nov 20, 2009 at 11:00 PM
Five Months Without Hungarian Notation And I'm Loving It
@Marcel, Yeah, I always err on the side of longer but more readable variable names. As for the camel casing of CF methods and the headless camel casing of custom items, I get around this by always ... read »
Nov 20, 2009 at 10:56 PM
Five Months Without Hungarian Notation And I'm Loving It
I use the following and love it: my.namespace.MyComponents.functionMethodsOrUDF() CONSTANT_VALUES_OR_PROPERTIES One thing I always try is to CamelCaseBuiltInColdFusionFunctions() so others can tell ... read »
Nov 20, 2009 at 5:38 PM
Learning ColdFusion 8: CFImage Part I - Reading And Writing Images
Hi Ben, Great article. I've been looking around to see if ColdFusion image engine can programatically create the following "wrap around" effect: http://www.creativepro.com/article/photoshop-s-she ... read »
Nov 20, 2009 at 5:35 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
@Dave: I talked to Gert he suggested: <cfhttp method="get" url="http://{some cf website}" result="stuff" addtoken="yes" /> Note the addition of cfhttp attribute addtoken. That should persist y ... read »
Nov 20, 2009 at 5:23 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
@Todd, Ahh, gotcha, yeah that makes sense. ... read »
Nov 20, 2009 at 5:17 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
Ben, sorry if I didn't make this clear. You can make it work like that if you want, just put <cfset session.foo = 1> (and <cfset application.foo = 1>) in your OnRequestStart() and it reve ... read »