Four-angles formula:
$\cos{4\theta}=1-8\cos^2\theta+8\cos^4\theta$.
Quartic equation:
$p = q x + r x^2 + s x^3 + t x^4$
Let the cubic resolvent is
$p^3 (s^3 - 4 r s t + 8 q t^2) = p^2 t (-q s^2 + 4 q r t + 8 p s t)V + p t^2 (q^2 s + 4 p r s - 8 p q t)V^2 + t^3 (q^3 + 4 p q r + 8 p^2 s)V^3$
Trigonometric solution:
$U = 1/(2 p^2 (3 s^2 - 8 r t) + 4 p t (q s + 16 p t) V + 2 t^2 (3 q^2 + 8 p r) V^2)$
$L_0 = p^4 (3 s^4 - 16 r s^2 t + 64 q s t^2 + 256 p t^3)$
$L_1 = 4 p^3 t (q s^3 - 8 q r s t - 32 p s^2 t + 48 q^2 t^2 + 128 p r t^2)$
$L_2 = 2 p^2 t^2 (-7 q^2 s^2 - 24 p r s^2 + 24 q^2 r t + 128 p r^2 t - 128 p q s t - 256 p^2 t^2)$
$L_3 = 4 p t^3 (q^3 s + 8 p q r s + 48 p^2 s^2 - 32 p q^2 t - 128 p^2 r t)$
$L_4 = t^4 (3 q^4 + 16 p q^2 r + 64 p^2 q s + 256 p^3 t)$
$W = L_0 + L_1 V + L_2 V^2 + L_3 V^3 + L_4 V^4$
$S_2 = \cos{((\arccos{(1 + 8 W U^2)} + 2 \pi j)/4)}$
$j=0,1,2,3$
$S = (-p s + q t V) U^{1/2}$
$T = p t U^{2/3}$
$z = (S_2 - S)/(4 T)$
$M = z U^{1/6}$
$x = (-M \pm (M^2 - 4 V)^{1/2})/2$
But this solution gives eight roots, four true and four excess.
Wolfram-code for verifing:
{{p, q, r, s, t} = RandomInteger[{-1000, 1000}, 5];
Eq = -p + q x + r x^2 + s x^3 + t x^4;
Print["\nEquation: 0 = ", Eq, "\n\nSolution by CAS:"];
Print[x /. (Eq // NSolve) // Sort, "\n"];
Print["Solution by formula:"];
{f, a, b, c} = {p^3 (s^3 - 4 r s t + 8 q t^2),
p^2 t (-q s^2 + 4 q r t + 8 p s t),
p t^2 (q^2 s + 4 p r s - 8 p q t), t^3 (q^3 + 4 p q r + 8 p^2 s)};
{k, m, n} = {a b + 9 c f, b^2 - 3 a c, a^2 + 3 b f};
If[m == 0 && n == 0,
Print["Formula does not work with double/triple roots"]; Goto[end]];
If[m == 0, V = (-k + Sqrt[k^2 - 4 m n])/(2 n); S = 1; T = V];
If[n == 0 || (m != 0 && n != 0), V = (-k + Sqrt[k^2 - 4 m n])/(2 m);
S = V; T = 1];
F = f - a - b - c;
A = (a + 2 b + 3 c) S + (2 a + b - 3 f) T;
B = (b + 3 c) S^2 + 2 (a + b) S T + (a - 3 f) T^2;
Q = c S^3 + b S^2 T + a S T^2 - f T^3;
If[Q == 0, Print["Formula does not work with double/triple roots"];
Goto[end]];
G = -2 B^3 + 9 A B Q + 27 Q^2 F;
H = {G^(1/3), -(-1)^(1/3) G^(1/3), (-1)^(2/3) G^(1/3)};
y = (H[[1]] - B)/(3 Q); V = (1 + S y)/(1 + T y);
U = 1/(2 p^2 (3 s^2 - 8 r t) + 4 p t (q s + 16 p t) V + 2 t^2 (3 q^2 + 8 p r) V^2);
L0 = p^4 (3 s^4 - 16 r s^2 t + 64 q s t^2 + 256 p t^3);
L1 = 4 p^3 t (q s^3 - 8 q r s t - 32 p s^2 t + 48 q^2 t^2 + 128 p r t^2);
L2 = 2 p^2 t^2 (-7 q^2 s^2 - 24 p r s^2 + 24 q^2 r t + 128 p r^2 t - 128 p q s t - 256 p^2 t^2);
L3 = 4 p t^3 (q^3 s + 8 p q r s + 48 p^2 s^2 - 32 p q^2 t - 128 p^2 r t);
L4 = t^4 (3 q^4 + 16 p q^2 r + 64 p^2 q s + 256 p^3 t);
W = L0 + L1 V + L2 V^2 + L3 V^3 + L4 V^4;
S2 = Table[Cos[1/4 (ArcCos[1 + 8 W U^2] + 2 \[Pi] j)], {j, 0, 3}];
S = (-p s + q t V) U^(1/2); T = p t U^(2/3);
z = (S2 - S)/(4 T); M = z U^(1/6);
X = {(-M - (M^2 - 4 V)^(1/2))/2, (-M + (M^2 - 4 V)^(1/2))/2};
(*Print[X//N];*)
Do[If[Re[N[X[[i, 1]] + X[[j, 2]] + X[[k, 3]] + X[[l, 4]], 10]] == N[-s/t, 10],
Print[{X[[i, 1]], X[[j, 2]], X[[k, 3]], X[[l, 4]]} // N // Sort]; Break[]
], {i, 2}, {j, 2}, {k, 2}, {l, 2}];
Label[end];
};