whole_func_string: function grayInverse (g) { // : Int -> Int
      var m = bitwise.bitPrecision(g), inverse = g, j = 1
      while (j < m) {
          inverse = inverse ^ (g >> j)
          j++
      }
      return inverse
  }
func_code_string: function grayInverse (g) { // : Int -> Int
      var m = bitwise.bitPrecision(g), inverse = g, j = 1
      while (j < m) {
          inverse = inverse ^ (g >> j)
          j++
      }
      return inverse
  }
func_documentation_string: returns a non-negative int 'inverse' such that graycode(inverse) = g