Java 8, 84 bytes
(a,b,c,d)->(a=Math.sqrt(2*(a+Math.sqrt(a*a+b*b+c*c+d*d))))/2+" "+b/a+" "+c/a+" "+d/a
Port of @xnor's Python 2 answer.
Explanation:
(a,b,c,d)-> // Method with four double parameters and String return-type
(a= // Change `a` to:
Math.sqrt( // The square root of:
2* // Two times:
(a+ // `a` plus,
Math.sqrt( // the square-root of:
a*a // `a` squared,
+b*b // `b` squared,
+c*c // `c` squared,
+d*d)))) // And `d` squared summed together
/2 // Then return this modified `a` divided by 2
+" "+b/a // `b` divided by the modified `a`
+" "+c/a // `c` divided by the modified `a`
+" "+d/a // And `d` divided by the modified `a`, with space delimiters