Como bien mencionas con Ruffini puedes obtener las raíces racionales. En general no es posible encontrar las raíces irracionales de un polinomio genérico. Para los de polinomio de grado 2 tenemos la cuadrática. Para los polinomios de grado 3 y de grado 4 también existen unas fórmulas. A partir de ahí no se puede saber más nada (hay un teorema que demuestra que no es posible tener fórmulas cerradas usando operaciones "sencillas" para polinomio de grado 5 o mayor). En tu caso tienes un error en el h(x), ya que sería -4x en vez de 2x. Puedes resolverla usando la fórmula que mencioné, aquí te dejo una página pero puedes buscar algún video https://es.wikipedia.org/wiki/Ecuaci%C3%B3n_de_tercer_grado .
No se tampoco en que clase estás pero otra opción quizás sería usar algún método como por ejm el de Newton para hallar los ceros calculando la derivada. Aunque es cierto que habría que evaluar en unos puntos para poder usar el teorema de valor intermedio y saber más o menos donde se encuentran los ceros (si quieres un poco más de precisión pues hacer la gráfica del polinomio aproximadamente usando cosas de derivadas). De hecho ni siquiera seria necesario esto ya que como explicaré abajo solo necesitas un cero, así que puedes seleccionar "al azar" un valor de tu polinomio y aplicar Newton para hallar una raiz cualquiera
Con este último método pues tampoco necesitarias calcular todos los ceros, con uno te vale, como el resultado siempre será aproximado(porque no son raices racionales y no vas a obtener una forma cerrada del numero irracional que es raiz) lo que puedes hacer es tomar el valor con una precisión lo suficientemente buena, con eso puedes tener una raiz que y tendrías entonces h(x) aprox (x-c)*g(x). Y podrías hacer g(x) approx h(x)/(x-c) que te daría aproximadamente el polinomio de segundo orden al que le puedes aplicar la cuadrática (OJO, como la raiz c es aproximada, vas a tener un resto distinto de cero, pero si es pequeño pues se desprecia y ya está). Y con esto tendrías las tres raices