function calculateFrequency(distance) {
  return(Math.pow(2, distance / 12) * 440);
  }

function calculateTension(unitWeight, scaleLength, tone) {
  return(unitWeight * Math.pow(2 * scaleLength * tone.frequency, 2) / 386.4);
  }

function calculateUnitWeight(tension, scaleLength, tone) {
  return((tension * 386.4 / Math.pow(2 * scaleLength * tone.frequency, 2)).toFixed(8));
  }

function matchGauge(desiredUnitWeight, stringSet) {
  var unitWeights;
  if (stringSet == "p") {
    unitWeights = unitWeightsDAddarioPL;
    gauges = gaugesDAddarioPL;
    }
  else if (stringSet == "w") {
    unitWeights = unitWeightsDAddarioNW;
    gauges = gaugesDAddarioNW;
    }
  else {
    return(-1);
    }
  var lowerMatch = 0;
  var upperMatch = unitWeights.length - 1;
  for (var a = 0; a < unitWeights.length; a++) {
    if (desiredUnitWeight >= unitWeights[a]) {
      lowerMatch = a;
      }
    else {
      upperMatch = a;
      break;
      }
    }
  var lowerDistance = desiredUnitWeight - unitWeights[lowerMatch];
  var upperDistance = unitWeights[upperMatch] - desiredUnitWeight;
  return((lowerDistance <= upperDistance) ? lowerMatch : upperMatch);
  }