katch-mcardle-bmr
Version:
Function for calculating basal metabolic rate the Katch-McArdle way.
51 lines (40 loc) • 1.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = calculateKatchMcArdleBmr;
var _isNumber = require('is-number');
var _isNumber2 = _interopRequireDefault(_isNumber);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function isPositiveNumber(num) {
return (0, _isNumber2.default)(num) && num > 0;
}
function positiveNumberErrorMessage(parameter) {
return 'The Katch-McArdle formula requires ' + parameter + ' to be a positive number.';
}
function calculateKatchMcArdleBmr() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
weight = _ref.weight,
bodyFatPercentage = _ref.bodyFatPercentage,
_ref$useImperial = _ref.useImperial,
useImperial = _ref$useImperial === undefined ? true : _ref$useImperial;
if (!isPositiveNumber(weight)) {
throw new Error(positiveNumberErrorMessage('weight'));
}
if (!isPositiveNumber(bodyFatPercentage)) {
throw new Error(positiveNumberErrorMessage('body fat percentage'));
}
if (bodyFatPercentage > 100) {
throw new Error('The body fat percentage can\'t be greater than 100.');
}
var base = 370;
var leanMultiplier = 21.6;
// If the body fat is greater than 1, adjust to a decimal value.
if (bodyFatPercentage > 1) {
bodyFatPercentage = bodyFatPercentage / 100;
}
var weightInKg = useImperial ? weight * 0.453592 : weight;
var bodyFatMass = weightInKg * bodyFatPercentage;
var leanMass = weightInKg - bodyFatMass;
return base + leanMultiplier * leanMass;
}
;