function zeta (s, createValue, determineDigits, getRe) {
    const n = determineDigits(s)
    if (getRe(s) > -(n - 1) / 2) {
      return f(s, createValue(n), createValue)
    } else {
      // Function Equation for reflection to x < 1
      let c = multiply(pow(2, s), pow(createValue(pi), subtract(s, 1)))
      c = multiply(c, (sin(multiply(divide(createValue(pi), 2), s))))
      c = multiply(c, gamma(subtract(1, s)))
      return multiply(c, zeta(subtract(1, s), createValue, determineDigits, getRe))
    }
  }
@param {number | BigNumber | Complex} s
@param {(value: number) => number | BigNumber | Complex} createValue
@param {(value: number | BigNumber | Complex) => number} determineDigits
@param {(value: number | BigNumber | Complex) => number} getRe
@returns {*|number}