UNPKG

katch-mcardle-bmr

Version:

Function for calculating basal metabolic rate the Katch-McArdle way.

51 lines (40 loc) 1.6 kB
'use strict'; 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; }