twoBasesOneRoot() random() < 0.75 VALS.root isOdd( EXP_D ) && ( random() < 0.75 ) VALS.base_1 VALS.base_2 EXP_NEG ? BASE_D : BASE_N EXP_NEG ? BASE_N : BASE_D BASE_NEG round( pow( EXP_NEG ? BASE_D : BASE_N, 1 / EXP_D_ORIG ) ) round( pow( EXP_NEG ? BASE_N : BASE_D, 1 / EXP_D_ORIG ) ) function(){for(var e,r=min(maxReasonableExp(ROOT_N_ORIG),maxReasonableExp(ROOT_D_ORIG));void 0===e||e%EXP_D_ORIG===0;)e=randRange(2,r);return e}() getGCD( EXP_N_ORIG, EXP_D_ORIG ) EXP_N_ORIG / GCD EXP_D_ORIG / GCD round( pow( EXP_NEG ? BASE_D : BASE_N, 1 / EXP_D ) ) round( pow( EXP_NEG ? BASE_N : BASE_D, 1 / EXP_D ) ) ROOT_NEG && isOdd( EXP_N ) round( pow( ROOT_N, EXP_N ) ) round( pow( ROOT_D, EXP_N ) )

\Large fracParens( BASE_N, BASE_D )^{fracSmall( ( EXP_NEG ? -1 : 1 ) * EXP_N, EXP_D )}

SOL_N / SOL_D

= fracParens( BASEF_N, BASEF_D )^{fracSmall( EXP_N, EXP_D )}

= \left(fracParens( BASEF_N, BASEF_D )^{fracSmall( 1, EXP_D )}\right)^{EXP_N}

Para simplificar fracParens( BASEF_N, BASEF_D )^{fracSmall( 1, EXP_D )}, averigua que sucede en el espacio en blanco:
\left(? \right)^{abs( EXP_D )}=frac( BASEF_N, BASEF_D )

Para simplificar fracParens( BASEF_N, BASEF_D )^{fracSmall( 1, EXP_D )}, averigua lo que sucede en el espacio en blanco:
\left(\color{blue}{frac( ROOT_N, ROOT_D )}\right)^{abs( EXP_D )}=frac( BASEF_N, BASEF_D )

así \quadfracParens( BASEF_N, BASEF_D )^{fracSmall( 1, EXP_D )}=frac( ROOT_N, ROOT_D )

So fracParens( BASEF_N, BASEF_D )^{fracSmall( EXP_N, EXP_D )}=\left(fracParens( BASEF_N, BASEF_D )^{fracSmall( 1, EXP_D )}\right)^{EXP_N}=fracParens( ROOT_N, ROOT_D )^{EXP_N}

= fraction( ROOT_N, ROOT_D, true, true, false, true )^{EXP_N}

= v