# Ecuación de 2º grado

ec2g<-function(a, b, c) {

  disc<- b^2 - 4 * a * c
    
    if (disc < 0 || a == 0) return(NaN) # Sin solución real
    x <- c(0, 0)
    x[1] <- (-b-sqrt(disc)) / (2 * a)
    x[2] <- (-b+sqrt(disc))/ (2 * a)
    return(x)
  }

# resec2g llama a ec2g y muestra los resultados
resec2g <- function(a, b, c) {
  x <- ec2g(a, b, c) 
  
  if (length(x) == 1) {
    cat("La ecuación no tiene solución\n")
    return(invisible(NaN))
  }
  
  cat("X1=",x[1],"\nX2=",x[2])
}

Compara la salida de las dos funciones

ec2g(1,1,1)
## [1] NaN
resec2g(1,1,1)
## La ecuación no tiene solución
ec2g(1,1,-1)
## [1] -1.618  0.618
resec2g(1,1,-1)
## X1= -1.618 
## X2= 0.618