docs: def fraction_correct_fuzzy_linear_create_vector(z, z_cutoff, z_fuzzy_range):
      '''A helper function for fraction_correct_fuzzy_linear.'''
      assert(z_fuzzy_range * 2 < z_cutoff)
  
      if (z == None or numpy.isnan(z)): # todo: and ignore_null_values: # If we are missing values then we either discount the case or consider it as incorrect depending on ignore_null_values
          return None
      elif (z >= z_cutoff + z_fuzzy_range): # positive e.g. z >= 1.1
          return [0, 0, 1]
      elif (z <= -z_cutoff - z_fuzzy_range):  # negative e.g. z <= -1.1
          return [1, 0, 0]
      elif (-z_cutoff + z_fuzzy_range <= z <= z_cutoff - z_fuzzy_range): # neutral e.g. -0.9 <= z <= 0.9
          return [0, 1, 0]
      elif (-z_cutoff - z_fuzzy_range < z < -z_cutoff + z_fuzzy_range): # negative/neutral e.g. -1.1 < z < 0.9
          neutrality = (z + z_cutoff + z_fuzzy_range) / (z_fuzzy_range * 2)
          zvec = [1 - neutrality, neutrality, 0]
      elif (z_cutoff - z_fuzzy_range < z < z_cutoff + z_fuzzy_range): # neutral/positive e.g. 0.9 < z < 1.1
          positivity = (z - z_cutoff + z_fuzzy_range) / (z_fuzzy_range * 2)
          zvec = [0, 1 - positivity, positivity]
      else:
          raise Exception('Logical error.')
      # normalize the vector
      length = math.sqrt(numpy.dot(zvec, zvec))
      return numpy.divide(zvec, length)