When I do solve(ax^3+bx^2+c*x+d=0,x) in wxMaxima, I get a big answer. I made use of substitutions to make the calculations more practical:
$$A=\left(27a^2d^2+4b^3d-18abcd+4ac^3-b^2c^2\right)^{1\!/2}$$ $$B={\left(\frac{A}{2\!\cdot\!3^{3/2}a^2}-\frac{27a^2d-9abc+2b^3}{54a^3}\right)}^{1\!/3}$$ $$C=\frac{3ac-b^2}{9a^2B}$$ $$D=\frac12(C-B)-\frac{b}{3a}$$ $$E=\frac{\sqrt3}{2}(C+B)$$ $$x_1=B-C-\frac{b}{3a}$$ $$x_2=D+Ei$$ $$x_3=D-Ei$$
Some questions:
1) Is it possible to make a more clever choice of substitutions in this example, so the resulting number of operations is reduced?
2) Is there a general procedure or heuristic for minimizing the number of operations with substitutions? (Is this a branch of mathematics?)
I think maxima just uses the general formula for cubic equations. See here for example.