CJam (59 byte)
{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}
Questo è un blocco (funzione) anonimo che accetta un numero intero o doppio nello stack e produce un array con tre doppie. Ha due casi internamente per gestire tutti gli input non negativi, poiché con un solo caso si spezzerebbe su uno 0.25o l'altro 4. Si rompe ancora per gli input -12e -1.3333333333333333, ma le specifiche consentono che ...
La demo online la esegue, quindi aggiunge i valori, stampa tutti e quattro e li moltiplica per mostrare che ottiene il valore originale (errore di arrotondamento del modulo).
Sfondo matematico
w = - x - y- zx + y+ z+ w = 0- x yzw = ax yzw + a = 0
Elkies offre quattro famiglie di soluzioni. Eulero:
Xyzw====6 a s t3( a t4- 2 s4)2( 4 a t4+ s4) ( 2 a2t8+ 10 a s4t4- s8)3 s5( 4 a t4+ s4)22 t ( a t4- 2 s4) ( 2 a2t8+ 10 a s4t4- s8)2 ( 2 a2t8+ 10 a s4t4- s8)3 s3t ( 4 a t4+ s4)- ( 2 a2t8+ 10 a s4t4- s8)6 s3t ( a t4- 2s4)
Uno relativo a Eulero:
Xyzw====( 8 s8+ a2) ( 8 s8- 88 a s4- a2)12 s3( s4- a ) ( 8 s8+ 20 a s4- a2)( 8 s8+ a2) ( 8 s8- 88 a s4- a2)12 s3( 8 s4+ a ) ( 8 s8+ 20 a s4- a2)192 a s5( s4- a )2( 8 s4+ a )2( 8 s8+ a2) ( 8 s8- 88 a s4- a2) ( 8 s8+ 20 a s4- a2)- 3 secondi ( 8 secondi8+ 20 a s4- a2)34 ( s4- a ) ( 8 s4+ a ) ( 8 s8+ a2) ( 8 s8- 88 a s4- a2)
Uno più semplice:
Xyzw====( s4- 4 a )22 s3( s4+ 12 a )2 a ( 3 s4+ 4 a )2S3( s4- 4 a ) ( s4+ 12 a )S5+ 12 a s2 ( 3 s4+ 4 a )- 2 s5( s4+ 12 a )( s4- 4 a ) ( 3 s4+ 4 a )
E uno relativo a quello:
Xyzw====S5( s4- 3 a )32 ( s4+ a ) ( s12+ 12 a s8- 3 a2S4+ 2 a3)S12+ 12 a s8- 3 a2S4+ 2 a32 s3( s4- 3 a ) ( 3 s4- a )2 a ( s4+ a )2( 3 s4- a )2S3( s4- 3 a ) ( s12+ 12 a s8- 3 a2S4+ 2 a3)- 2 s ( s12+ 12 a s8- 3 a2S4+ 2 a3)( s4- 3 a ) ( s4+ a ) ( 3 s4- a )
p s4- qun'pqun'un's = 1s = 2