ised: 72 46 caracteres
Esto es casi un ajuste perfecto ... hay un "lenguaje" que parece estar destinado precisamente al golf matemático: ised . Su sintaxis ofuscada lo convierte en un código muy corto (sin variables con nombre, solo ranuras de memoria de enteros y muchos operadores versátiles de caracteres únicos). Al definir la función gamma usando una integral, obtuve 80 caracteres aparentemente aleatorios
@4{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}@6{:@{$4::@5avg${0,1}>$2}$5:}@0,0@1,99;$6:::.
Aquí, la ranura de memoria $ 4 es una función factorial, se espera que la ranura de memoria $ 6 de función de bisección y la ranura de memoria $ 2 se configuren como entrada (antes de obtener este código). Las ranuras $ 0 y $ 1 son los límites de bisección. Ejemplo de llamada (suponiendo que el código anterior esté en el archivo inversefactorial.ised
)
bash> ised '@2{556}' --f inversefactorial.ised
556
5.86118
¡Por supuesto, podrías usar el incorporado! operador, en cuyo caso obtienes 45 caracteres
@6{:@{{@5avg${0,1}}!>$2}$5:}@0,0@1,99;$6:::.
Cuidado, la precedencia del operador es extraña a veces.
Editar: recordado en línea las funciones en lugar de guardarlas. ¡Derrota a Mathematica con 72 personajes!
@0,0@1,99;{:@{{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}::@5avg${0,1}>$2}$5:}:::.
Y usando el! Construido obtienes 41.
Un año de actualización atrasada:
Me acabo de dar cuenta de que esto era muy ineficiente. Golfed-down a 60 caracteres:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}@:exp-$3>$2}$5:}:::.
Si se usa utf-8 (Mathematica también lo hace), llegamos a 57:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}·exp-$3>$2}$5:}∙.
Una reescritura un poco diferente puede reducirlo a 46 (o 27 si se usa incorporado):
{:x_S{.5@3[.,.1,99]^avgx·exp-$3*.1<$2}:}∙∓99_0
Los dos últimos caracteres se pueden eliminar si está de acuerdo con que la respuesta se imprima dos veces.