code: func (b *builtinCotSig) evalReal(row chunk.Row) (float64, bool, error) {
  	val, isNull, err := b.args[0].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, err
  	}
  
  	tan := math.Tan(val)
  	if tan != 0 {
  		cot := 1 / tan
  		if !math.IsInf(cot, 0) && !math.IsNaN(cot) {
  			return cot, false, nil
  		}
  	}
  	return 0, false, types.ErrOverflow.GenWithStackByArgs("DOUBLE", fmt.Sprintf("cot(%s)", strconv.FormatFloat(val, 'f', -1, 64)))
  }
docs: // evalReal evals a builtinCotSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_cot