
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0)) (t_1 (+ t_0 7.0)) (t_2 (+ t_1 0.5)))
(*
(/ PI (sin (* PI z)))
(*
(* (* (sqrt (* PI 2.0)) (pow t_2 (+ t_0 0.5))) (exp (- t_2)))
(+
(+
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (+ t_0 3.0)))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0)))
(/ 9.984369578019572e-6 t_1))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = t_1 + 0.5;
return (((double) M_PI) / sin((((double) M_PI) * z))) * (((sqrt((((double) M_PI) * 2.0)) * pow(t_2, (t_0 + 0.5))) * exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
public static double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = t_1 + 0.5;
return (Math.PI / Math.sin((Math.PI * z))) * (((Math.sqrt((Math.PI * 2.0)) * Math.pow(t_2, (t_0 + 0.5))) * Math.exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
def code(z): t_0 = (1.0 - z) - 1.0 t_1 = t_0 + 7.0 t_2 = t_1 + 0.5 return (math.pi / math.sin((math.pi * z))) * (((math.sqrt((math.pi * 2.0)) * math.pow(t_2, (t_0 + 0.5))) * math.exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))))
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(t_0 + 7.0) t_2 = Float64(t_1 + 0.5) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (t_2 ^ Float64(t_0 + 0.5))) * exp(Float64(-t_2))) * Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(t_0 + 3.0))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) + Float64(9.984369578019572e-6 / t_1)) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
function tmp = code(z) t_0 = (1.0 - z) - 1.0; t_1 = t_0 + 7.0; t_2 = t_1 + 0.5; tmp = (pi / sin((pi * z))) * (((sqrt((pi * 2.0)) * (t_2 ^ (t_0 + 0.5))) * exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0)))); end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + 0.5), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$2, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$2)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(t$95$0 + 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := t\_0 + 7\\
t_2 := t\_1 + 0.5\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {t\_2}^{\left(t\_0 + 0.5\right)}\right) \cdot e^{-t\_2}\right) \cdot \left(\left(\left(\left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{t\_0 + 3}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\right) + \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\right) + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 8 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0)) (t_1 (+ t_0 7.0)) (t_2 (+ t_1 0.5)))
(*
(/ PI (sin (* PI z)))
(*
(* (* (sqrt (* PI 2.0)) (pow t_2 (+ t_0 0.5))) (exp (- t_2)))
(+
(+
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (+ t_0 3.0)))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0)))
(/ 9.984369578019572e-6 t_1))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = t_1 + 0.5;
return (((double) M_PI) / sin((((double) M_PI) * z))) * (((sqrt((((double) M_PI) * 2.0)) * pow(t_2, (t_0 + 0.5))) * exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
public static double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = t_1 + 0.5;
return (Math.PI / Math.sin((Math.PI * z))) * (((Math.sqrt((Math.PI * 2.0)) * Math.pow(t_2, (t_0 + 0.5))) * Math.exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
def code(z): t_0 = (1.0 - z) - 1.0 t_1 = t_0 + 7.0 t_2 = t_1 + 0.5 return (math.pi / math.sin((math.pi * z))) * (((math.sqrt((math.pi * 2.0)) * math.pow(t_2, (t_0 + 0.5))) * math.exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0))))
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(t_0 + 7.0) t_2 = Float64(t_1 + 0.5) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (t_2 ^ Float64(t_0 + 0.5))) * exp(Float64(-t_2))) * Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(t_0 + 3.0))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) + Float64(9.984369578019572e-6 / t_1)) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
function tmp = code(z) t_0 = (1.0 - z) - 1.0; t_1 = t_0 + 7.0; t_2 = t_1 + 0.5; tmp = (pi / sin((pi * z))) * (((sqrt((pi * 2.0)) * (t_2 ^ (t_0 + 0.5))) * exp(-t_2)) * ((((((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / (t_0 + 3.0))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0))) + (9.984369578019572e-6 / t_1)) + (1.5056327351493116e-7 / (t_0 + 8.0)))); end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + 0.5), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$2, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$2)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(t$95$0 + 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := t\_0 + 7\\
t_2 := t\_1 + 0.5\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {t\_2}^{\left(t\_0 + 0.5\right)}\right) \cdot e^{-t\_2}\right) \cdot \left(\left(\left(\left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{t\_0 + 3}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\right) + \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\right) + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0))
(t_1 (+ t_0 7.0))
(t_2
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (/ (- (pow t_0 2.0) 9.0) (- t_0 3.0))))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0))))
(t_3 (+ t_1 0.5))
(t_4 (/ 9.984369578019572e-6 t_1)))
(*
(/ PI (sin (* PI z)))
(*
(* (* (* (sqrt PI) (sqrt 2.0)) (pow t_3 (+ t_0 0.5))) (exp (- t_3)))
(+
(/
(+ (pow t_2 3.0) (pow t_4 3.0))
(fma t_2 t_2 (- (* t_4 t_4) (* t_2 t_4))))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = (((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / ((pow(t_0, 2.0) - 9.0) / (t_0 - 3.0)))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0));
double t_3 = t_1 + 0.5;
double t_4 = 9.984369578019572e-6 / t_1;
return (((double) M_PI) / sin((((double) M_PI) * z))) * ((((sqrt(((double) M_PI)) * sqrt(2.0)) * pow(t_3, (t_0 + 0.5))) * exp(-t_3)) * (((pow(t_2, 3.0) + pow(t_4, 3.0)) / fma(t_2, t_2, ((t_4 * t_4) - (t_2 * t_4)))) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(t_0 + 7.0) t_2 = Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(Float64((t_0 ^ 2.0) - 9.0) / Float64(t_0 - 3.0)))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) t_3 = Float64(t_1 + 0.5) t_4 = Float64(9.984369578019572e-6 / t_1) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(Float64(sqrt(pi) * sqrt(2.0)) * (t_3 ^ Float64(t_0 + 0.5))) * exp(Float64(-t_3))) * Float64(Float64(Float64((t_2 ^ 3.0) + (t_4 ^ 3.0)) / fma(t_2, t_2, Float64(Float64(t_4 * t_4) - Float64(t_2 * t_4)))) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(N[Power[t$95$0, 2.0], $MachinePrecision] - 9.0), $MachinePrecision] / N[(t$95$0 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$1 + 0.5), $MachinePrecision]}, Block[{t$95$4 = N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[Sqrt[Pi], $MachinePrecision] * N[Sqrt[2.0], $MachinePrecision]), $MachinePrecision] * N[Power[t$95$3, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$3)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Power[t$95$2, 3.0], $MachinePrecision] + N[Power[t$95$4, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$2 * t$95$2 + N[(N[(t$95$4 * t$95$4), $MachinePrecision] - N[(t$95$2 * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := t\_0 + 7\\
t_2 := \left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{\frac{{t\_0}^{2} - 9}{t\_0 - 3}}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\\
t_3 := t\_1 + 0.5\\
t_4 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\left(\sqrt{\pi} \cdot \sqrt{2}\right) \cdot {t\_3}^{\left(t\_0 + 0.5\right)}\right) \cdot e^{-t\_3}\right) \cdot \left(\frac{{t\_2}^{3} + {t\_4}^{3}}{\mathsf{fma}\left(t\_2, t\_2, t\_4 \cdot t\_4 - t\_2 \cdot t\_4\right)} + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
lift-+.f64N/A
flip-+N/A
lower-/.f64N/A
lower--.f64N/A
lower-*.f64N/A
metadata-evalN/A
lower--.f6496.6
Applied rewrites96.6%
Applied rewrites97.7%
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-*.f64N/A
sqrt-prodN/A
lower-*.f64N/A
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-sqrt.f6498.5
Applied rewrites98.5%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0))
(t_1 (+ t_0 7.0))
(t_2
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (/ (- (pow t_0 2.0) 9.0) (- t_0 3.0))))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0))))
(t_3 (/ 9.984369578019572e-6 t_1)))
(*
(/ PI (sin (* PI z)))
(*
(*
(* (* (sqrt PI) (sqrt 2.0)) (pow (+ t_1 0.5) (+ t_0 0.5)))
(+ (exp -7.5) (* z (+ (exp -7.5) (* 0.5 (* z (exp -7.5)))))))
(+
(/
(+ (pow t_2 3.0) (pow t_3 3.0))
(fma t_2 t_2 (- (* t_3 t_3) (* t_2 t_3))))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = (((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / ((pow(t_0, 2.0) - 9.0) / (t_0 - 3.0)))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0));
double t_3 = 9.984369578019572e-6 / t_1;
return (((double) M_PI) / sin((((double) M_PI) * z))) * ((((sqrt(((double) M_PI)) * sqrt(2.0)) * pow((t_1 + 0.5), (t_0 + 0.5))) * (exp(-7.5) + (z * (exp(-7.5) + (0.5 * (z * exp(-7.5))))))) * (((pow(t_2, 3.0) + pow(t_3, 3.0)) / fma(t_2, t_2, ((t_3 * t_3) - (t_2 * t_3)))) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(t_0 + 7.0) t_2 = Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(Float64((t_0 ^ 2.0) - 9.0) / Float64(t_0 - 3.0)))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) t_3 = Float64(9.984369578019572e-6 / t_1) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(Float64(sqrt(pi) * sqrt(2.0)) * (Float64(t_1 + 0.5) ^ Float64(t_0 + 0.5))) * Float64(exp(-7.5) + Float64(z * Float64(exp(-7.5) + Float64(0.5 * Float64(z * exp(-7.5))))))) * Float64(Float64(Float64((t_2 ^ 3.0) + (t_3 ^ 3.0)) / fma(t_2, t_2, Float64(Float64(t_3 * t_3) - Float64(t_2 * t_3)))) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(N[Power[t$95$0, 2.0], $MachinePrecision] - 9.0), $MachinePrecision] / N[(t$95$0 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[Sqrt[Pi], $MachinePrecision] * N[Sqrt[2.0], $MachinePrecision]), $MachinePrecision] * N[Power[N[(t$95$1 + 0.5), $MachinePrecision], N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[Exp[-7.5], $MachinePrecision] + N[(z * N[(N[Exp[-7.5], $MachinePrecision] + N[(0.5 * N[(z * N[Exp[-7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Power[t$95$2, 3.0], $MachinePrecision] + N[Power[t$95$3, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$2 * t$95$2 + N[(N[(t$95$3 * t$95$3), $MachinePrecision] - N[(t$95$2 * t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := t\_0 + 7\\
t_2 := \left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{\frac{{t\_0}^{2} - 9}{t\_0 - 3}}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\\
t_3 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\left(\sqrt{\pi} \cdot \sqrt{2}\right) \cdot {\left(t\_1 + 0.5\right)}^{\left(t\_0 + 0.5\right)}\right) \cdot \left(e^{-7.5} + z \cdot \left(e^{-7.5} + 0.5 \cdot \left(z \cdot e^{-7.5}\right)\right)\right)\right) \cdot \left(\frac{{t\_2}^{3} + {t\_3}^{3}}{\mathsf{fma}\left(t\_2, t\_2, t\_3 \cdot t\_3 - t\_2 \cdot t\_3\right)} + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
lift-+.f64N/A
flip-+N/A
lower-/.f64N/A
lower--.f64N/A
lower-*.f64N/A
metadata-evalN/A
lower--.f6496.6
Applied rewrites96.6%
Applied rewrites97.7%
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-*.f64N/A
sqrt-prodN/A
lower-*.f64N/A
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-sqrt.f6498.5
Applied rewrites98.5%
Taylor expanded in z around 0
lower-+.f64N/A
lift-exp.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lift-exp.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lift-exp.f6498.0
Applied rewrites98.0%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0))
(t_1 (pow t_0 2.0))
(t_2 (+ t_0 7.0))
(t_3 (+ t_2 0.5))
(t_4
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (/ (- t_1 9.0) (- t_0 3.0))))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0))))
(t_5 (/ 9.984369578019572e-6 t_2)))
(*
(/ PI (sin (* PI z)))
(*
(*
(*
(sqrt (* PI 2.0))
(pow t_3 (/ (+ (pow t_0 3.0) 0.125) (+ t_1 (- 0.25 (* t_0 0.5))))))
(exp (- t_3)))
(+
(/
(+ (pow t_4 3.0) (pow t_5 3.0))
(fma t_4 t_4 (- (* t_5 t_5) (* t_4 t_5))))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = pow(t_0, 2.0);
double t_2 = t_0 + 7.0;
double t_3 = t_2 + 0.5;
double t_4 = (((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / ((t_1 - 9.0) / (t_0 - 3.0)))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0));
double t_5 = 9.984369578019572e-6 / t_2;
return (((double) M_PI) / sin((((double) M_PI) * z))) * (((sqrt((((double) M_PI) * 2.0)) * pow(t_3, ((pow(t_0, 3.0) + 0.125) / (t_1 + (0.25 - (t_0 * 0.5)))))) * exp(-t_3)) * (((pow(t_4, 3.0) + pow(t_5, 3.0)) / fma(t_4, t_4, ((t_5 * t_5) - (t_4 * t_5)))) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = t_0 ^ 2.0 t_2 = Float64(t_0 + 7.0) t_3 = Float64(t_2 + 0.5) t_4 = Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(Float64(t_1 - 9.0) / Float64(t_0 - 3.0)))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) t_5 = Float64(9.984369578019572e-6 / t_2) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (t_3 ^ Float64(Float64((t_0 ^ 3.0) + 0.125) / Float64(t_1 + Float64(0.25 - Float64(t_0 * 0.5)))))) * exp(Float64(-t_3))) * Float64(Float64(Float64((t_4 ^ 3.0) + (t_5 ^ 3.0)) / fma(t_4, t_4, Float64(Float64(t_5 * t_5) - Float64(t_4 * t_5)))) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[Power[t$95$0, 2.0], $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + 0.5), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(t$95$1 - 9.0), $MachinePrecision] / N[(t$95$0 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(9.984369578019572e-6 / t$95$2), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$3, N[(N[(N[Power[t$95$0, 3.0], $MachinePrecision] + 0.125), $MachinePrecision] / N[(t$95$1 + N[(0.25 - N[(t$95$0 * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$3)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Power[t$95$4, 3.0], $MachinePrecision] + N[Power[t$95$5, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$4 * t$95$4 + N[(N[(t$95$5 * t$95$5), $MachinePrecision] - N[(t$95$4 * t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := {t\_0}^{2}\\
t_2 := t\_0 + 7\\
t_3 := t\_2 + 0.5\\
t_4 := \left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{\frac{t\_1 - 9}{t\_0 - 3}}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\\
t_5 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_2}\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {t\_3}^{\left(\frac{{t\_0}^{3} + 0.125}{t\_1 + \left(0.25 - t\_0 \cdot 0.5\right)}\right)}\right) \cdot e^{-t\_3}\right) \cdot \left(\frac{{t\_4}^{3} + {t\_5}^{3}}{\mathsf{fma}\left(t\_4, t\_4, t\_5 \cdot t\_5 - t\_4 \cdot t\_5\right)} + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
lift-+.f64N/A
flip-+N/A
lower-/.f64N/A
lower--.f64N/A
lower-*.f64N/A
metadata-evalN/A
lower--.f6496.6
Applied rewrites96.6%
Applied rewrites97.7%
lift-+.f64N/A
flip3-+N/A
lower-/.f64N/A
lower-+.f64N/A
lower-pow.f64N/A
metadata-evalN/A
unpow2N/A
lift-pow.f64N/A
lower-+.f64N/A
lower--.f64N/A
metadata-evalN/A
lower-*.f6497.8
Applied rewrites97.8%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0))
(t_1
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (/ (- (pow t_0 2.0) 9.0) (- t_0 3.0))))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0))))
(t_2 (+ t_0 7.0))
(t_3 (+ t_2 0.5))
(t_4 (/ 9.984369578019572e-6 t_2)))
(*
(/ PI (sin (* PI z)))
(*
(* (* (sqrt (* PI 2.0)) (pow t_3 (+ t_0 0.5))) (exp (- t_3)))
(+
(/
(+ (pow t_1 3.0) (pow t_4 3.0))
(fma t_1 t_1 (- (* t_4 t_4) (* t_1 t_4))))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = (((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / ((pow(t_0, 2.0) - 9.0) / (t_0 - 3.0)))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0));
double t_2 = t_0 + 7.0;
double t_3 = t_2 + 0.5;
double t_4 = 9.984369578019572e-6 / t_2;
return (((double) M_PI) / sin((((double) M_PI) * z))) * (((sqrt((((double) M_PI) * 2.0)) * pow(t_3, (t_0 + 0.5))) * exp(-t_3)) * (((pow(t_1, 3.0) + pow(t_4, 3.0)) / fma(t_1, t_1, ((t_4 * t_4) - (t_1 * t_4)))) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(Float64((t_0 ^ 2.0) - 9.0) / Float64(t_0 - 3.0)))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) t_2 = Float64(t_0 + 7.0) t_3 = Float64(t_2 + 0.5) t_4 = Float64(9.984369578019572e-6 / t_2) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (t_3 ^ Float64(t_0 + 0.5))) * exp(Float64(-t_3))) * Float64(Float64(Float64((t_1 ^ 3.0) + (t_4 ^ 3.0)) / fma(t_1, t_1, Float64(Float64(t_4 * t_4) - Float64(t_1 * t_4)))) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(N[Power[t$95$0, 2.0], $MachinePrecision] - 9.0), $MachinePrecision] / N[(t$95$0 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + 0.5), $MachinePrecision]}, Block[{t$95$4 = N[(9.984369578019572e-6 / t$95$2), $MachinePrecision]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$3, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$3)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Power[t$95$1, 3.0], $MachinePrecision] + N[Power[t$95$4, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 * t$95$1 + N[(N[(t$95$4 * t$95$4), $MachinePrecision] - N[(t$95$1 * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := \left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{\frac{{t\_0}^{2} - 9}{t\_0 - 3}}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\\
t_2 := t\_0 + 7\\
t_3 := t\_2 + 0.5\\
t_4 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_2}\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {t\_3}^{\left(t\_0 + 0.5\right)}\right) \cdot e^{-t\_3}\right) \cdot \left(\frac{{t\_1}^{3} + {t\_4}^{3}}{\mathsf{fma}\left(t\_1, t\_1, t\_4 \cdot t\_4 - t\_1 \cdot t\_4\right)} + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
lift-+.f64N/A
flip-+N/A
lower-/.f64N/A
lower--.f64N/A
lower-*.f64N/A
metadata-evalN/A
lower--.f6496.6
Applied rewrites96.6%
Applied rewrites97.7%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0))
(t_1 (+ t_0 7.0))
(t_2
(+
(+
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (+ t_0 1.0)))
(/ -1259.1392167224028 (+ t_0 2.0)))
(/ 771.3234287776531 (/ (- (pow t_0 2.0) 9.0) (- t_0 3.0))))
(/ -176.6150291621406 (+ t_0 4.0)))
(/ 12.507343278686905 (+ t_0 5.0)))
(/ -0.13857109526572012 (+ t_0 6.0))))
(t_3 (/ 9.984369578019572e-6 t_1))
(t_4
(fma
-0.027777777777777776
(pow PI 4.0)
(* 0.008333333333333333 (pow PI 4.0))))
(t_5 (+ t_1 0.5)))
(*
(/
(+
1.0
(*
(* z z)
(-
(*
(* z z)
(-
(*
(* (- z) z)
(fma
-0.0001984126984126984
(pow PI 6.0)
(fma
0.001388888888888889
(pow PI 6.0)
(* 0.16666666666666666 (* (* PI PI) t_4)))))
t_4))
(* -0.16666666666666666 (* PI PI)))))
z)
(*
(* (* (* (sqrt PI) (sqrt 2.0)) (pow t_5 (+ t_0 0.5))) (exp (- t_5)))
(+
(/
(+ (pow t_2 3.0) (pow t_3 3.0))
(fma t_2 t_2 (- (* t_3 t_3) (* t_2 t_3))))
(/ 1.5056327351493116e-7 (+ t_0 8.0)))))))
double code(double z) {
double t_0 = (1.0 - z) - 1.0;
double t_1 = t_0 + 7.0;
double t_2 = (((((0.9999999999998099 + (676.5203681218851 / (t_0 + 1.0))) + (-1259.1392167224028 / (t_0 + 2.0))) + (771.3234287776531 / ((pow(t_0, 2.0) - 9.0) / (t_0 - 3.0)))) + (-176.6150291621406 / (t_0 + 4.0))) + (12.507343278686905 / (t_0 + 5.0))) + (-0.13857109526572012 / (t_0 + 6.0));
double t_3 = 9.984369578019572e-6 / t_1;
double t_4 = fma(-0.027777777777777776, pow(((double) M_PI), 4.0), (0.008333333333333333 * pow(((double) M_PI), 4.0)));
double t_5 = t_1 + 0.5;
return ((1.0 + ((z * z) * (((z * z) * (((-z * z) * fma(-0.0001984126984126984, pow(((double) M_PI), 6.0), fma(0.001388888888888889, pow(((double) M_PI), 6.0), (0.16666666666666666 * ((((double) M_PI) * ((double) M_PI)) * t_4))))) - t_4)) - (-0.16666666666666666 * (((double) M_PI) * ((double) M_PI)))))) / z) * ((((sqrt(((double) M_PI)) * sqrt(2.0)) * pow(t_5, (t_0 + 0.5))) * exp(-t_5)) * (((pow(t_2, 3.0) + pow(t_3, 3.0)) / fma(t_2, t_2, ((t_3 * t_3) - (t_2 * t_3)))) + (1.5056327351493116e-7 / (t_0 + 8.0))));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - 1.0) t_1 = Float64(t_0 + 7.0) t_2 = Float64(Float64(Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(t_0 + 1.0))) + Float64(-1259.1392167224028 / Float64(t_0 + 2.0))) + Float64(771.3234287776531 / Float64(Float64((t_0 ^ 2.0) - 9.0) / Float64(t_0 - 3.0)))) + Float64(-176.6150291621406 / Float64(t_0 + 4.0))) + Float64(12.507343278686905 / Float64(t_0 + 5.0))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) t_3 = Float64(9.984369578019572e-6 / t_1) t_4 = fma(-0.027777777777777776, (pi ^ 4.0), Float64(0.008333333333333333 * (pi ^ 4.0))) t_5 = Float64(t_1 + 0.5) return Float64(Float64(Float64(1.0 + Float64(Float64(z * z) * Float64(Float64(Float64(z * z) * Float64(Float64(Float64(Float64(-z) * z) * fma(-0.0001984126984126984, (pi ^ 6.0), fma(0.001388888888888889, (pi ^ 6.0), Float64(0.16666666666666666 * Float64(Float64(pi * pi) * t_4))))) - t_4)) - Float64(-0.16666666666666666 * Float64(pi * pi))))) / z) * Float64(Float64(Float64(Float64(sqrt(pi) * sqrt(2.0)) * (t_5 ^ Float64(t_0 + 0.5))) * exp(Float64(-t_5))) * Float64(Float64(Float64((t_2 ^ 3.0) + (t_3 ^ 3.0)) / fma(t_2, t_2, Float64(Float64(t_3 * t_3) - Float64(t_2 * t_3)))) + Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 7.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(N[Power[t$95$0, 2.0], $MachinePrecision] - 9.0), $MachinePrecision] / N[(t$95$0 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(t$95$0 + 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(12.507343278686905 / N[(t$95$0 + 5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]}, Block[{t$95$4 = N[(-0.027777777777777776 * N[Power[Pi, 4.0], $MachinePrecision] + N[(0.008333333333333333 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$1 + 0.5), $MachinePrecision]}, N[(N[(N[(1.0 + N[(N[(z * z), $MachinePrecision] * N[(N[(N[(z * z), $MachinePrecision] * N[(N[(N[((-z) * z), $MachinePrecision] * N[(-0.0001984126984126984 * N[Power[Pi, 6.0], $MachinePrecision] + N[(0.001388888888888889 * N[Power[Pi, 6.0], $MachinePrecision] + N[(0.16666666666666666 * N[(N[(Pi * Pi), $MachinePrecision] * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$4), $MachinePrecision]), $MachinePrecision] - N[(-0.16666666666666666 * N[(Pi * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] * N[(N[(N[(N[(N[Sqrt[Pi], $MachinePrecision] * N[Sqrt[2.0], $MachinePrecision]), $MachinePrecision] * N[Power[t$95$5, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[(-t$95$5)], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Power[t$95$2, 3.0], $MachinePrecision] + N[Power[t$95$3, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$2 * t$95$2 + N[(N[(t$95$3 * t$95$3), $MachinePrecision] - N[(t$95$2 * t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - 1\\
t_1 := t\_0 + 7\\
t_2 := \left(\left(\left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{t\_0 + 1}\right) + \frac{-1259.1392167224028}{t\_0 + 2}\right) + \frac{771.3234287776531}{\frac{{t\_0}^{2} - 9}{t\_0 - 3}}\right) + \frac{-176.6150291621406}{t\_0 + 4}\right) + \frac{12.507343278686905}{t\_0 + 5}\right) + \frac{-0.13857109526572012}{t\_0 + 6}\\
t_3 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\\
t_4 := \mathsf{fma}\left(-0.027777777777777776, {\pi}^{4}, 0.008333333333333333 \cdot {\pi}^{4}\right)\\
t_5 := t\_1 + 0.5\\
\frac{1 + \left(z \cdot z\right) \cdot \left(\left(z \cdot z\right) \cdot \left(\left(\left(-z\right) \cdot z\right) \cdot \mathsf{fma}\left(-0.0001984126984126984, {\pi}^{6}, \mathsf{fma}\left(0.001388888888888889, {\pi}^{6}, 0.16666666666666666 \cdot \left(\left(\pi \cdot \pi\right) \cdot t\_4\right)\right)\right) - t\_4\right) - -0.16666666666666666 \cdot \left(\pi \cdot \pi\right)\right)}{z} \cdot \left(\left(\left(\left(\sqrt{\pi} \cdot \sqrt{2}\right) \cdot {t\_5}^{\left(t\_0 + 0.5\right)}\right) \cdot e^{-t\_5}\right) \cdot \left(\frac{{t\_2}^{3} + {t\_3}^{3}}{\mathsf{fma}\left(t\_2, t\_2, t\_3 \cdot t\_3 - t\_2 \cdot t\_3\right)} + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
lift-+.f64N/A
flip-+N/A
lower-/.f64N/A
lower--.f64N/A
lower-*.f64N/A
metadata-evalN/A
lower--.f6496.6
Applied rewrites96.6%
Applied rewrites97.7%
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-*.f64N/A
sqrt-prodN/A
lower-*.f64N/A
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-sqrt.f6498.5
Applied rewrites98.5%
Taylor expanded in z around 0
Applied rewrites97.7%
Final simplification97.7%
(FPCore (z)
:precision binary64
(let* ((t_0 (* 436.8961725563396 (sqrt 7.5)))
(t_1 (* (exp -7.5) (sqrt 15.0)))
(t_2 (/ t_1 PI))
(t_3 (* 263.3831869810514 (sqrt 7.5)))
(t_4 (- (log 0.13333333333333333) 0.06666666666666667))
(t_5 (* (sqrt 2.0) (fma t_3 t_4 t_0))))
(/
(fma
(* 263.3831869810514 (sqrt PI))
t_1
(*
z
(fma
(pow PI 1.5)
(fma 263.3831869810514 t_2 (/ (* (exp -7.5) t_5) PI))
(*
(*
z
(+
(fma
131.6915934905257
t_2
(/
(*
(exp -7.5)
(fma
(sqrt 2.0)
(fma
t_3
(+ 0.1288888888888889 (* 0.5 (pow t_4 2.0)))
(fma t_0 t_4 (* 545.0353078428827 (sqrt 7.5))))
t_5))
PI))
(* 43.89719783017524 (* (* PI (exp -7.5)) (sqrt 15.0)))))
(pow PI 1.5)))))
z)))
double code(double z) {
double t_0 = 436.8961725563396 * sqrt(7.5);
double t_1 = exp(-7.5) * sqrt(15.0);
double t_2 = t_1 / ((double) M_PI);
double t_3 = 263.3831869810514 * sqrt(7.5);
double t_4 = log(0.13333333333333333) - 0.06666666666666667;
double t_5 = sqrt(2.0) * fma(t_3, t_4, t_0);
return fma((263.3831869810514 * sqrt(((double) M_PI))), t_1, (z * fma(pow(((double) M_PI), 1.5), fma(263.3831869810514, t_2, ((exp(-7.5) * t_5) / ((double) M_PI))), ((z * (fma(131.6915934905257, t_2, ((exp(-7.5) * fma(sqrt(2.0), fma(t_3, (0.1288888888888889 + (0.5 * pow(t_4, 2.0))), fma(t_0, t_4, (545.0353078428827 * sqrt(7.5)))), t_5)) / ((double) M_PI))) + (43.89719783017524 * ((((double) M_PI) * exp(-7.5)) * sqrt(15.0))))) * pow(((double) M_PI), 1.5))))) / z;
}
function code(z) t_0 = Float64(436.8961725563396 * sqrt(7.5)) t_1 = Float64(exp(-7.5) * sqrt(15.0)) t_2 = Float64(t_1 / pi) t_3 = Float64(263.3831869810514 * sqrt(7.5)) t_4 = Float64(log(0.13333333333333333) - 0.06666666666666667) t_5 = Float64(sqrt(2.0) * fma(t_3, t_4, t_0)) return Float64(fma(Float64(263.3831869810514 * sqrt(pi)), t_1, Float64(z * fma((pi ^ 1.5), fma(263.3831869810514, t_2, Float64(Float64(exp(-7.5) * t_5) / pi)), Float64(Float64(z * Float64(fma(131.6915934905257, t_2, Float64(Float64(exp(-7.5) * fma(sqrt(2.0), fma(t_3, Float64(0.1288888888888889 + Float64(0.5 * (t_4 ^ 2.0))), fma(t_0, t_4, Float64(545.0353078428827 * sqrt(7.5)))), t_5)) / pi)) + Float64(43.89719783017524 * Float64(Float64(pi * exp(-7.5)) * sqrt(15.0))))) * (pi ^ 1.5))))) / z) end
code[z_] := Block[{t$95$0 = N[(436.8961725563396 * N[Sqrt[7.5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Exp[-7.5], $MachinePrecision] * N[Sqrt[15.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 / Pi), $MachinePrecision]}, Block[{t$95$3 = N[(263.3831869810514 * N[Sqrt[7.5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[Log[0.13333333333333333], $MachinePrecision] - 0.06666666666666667), $MachinePrecision]}, Block[{t$95$5 = N[(N[Sqrt[2.0], $MachinePrecision] * N[(t$95$3 * t$95$4 + t$95$0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(263.3831869810514 * N[Sqrt[Pi], $MachinePrecision]), $MachinePrecision] * t$95$1 + N[(z * N[(N[Power[Pi, 1.5], $MachinePrecision] * N[(263.3831869810514 * t$95$2 + N[(N[(N[Exp[-7.5], $MachinePrecision] * t$95$5), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision] + N[(N[(z * N[(N[(131.6915934905257 * t$95$2 + N[(N[(N[Exp[-7.5], $MachinePrecision] * N[(N[Sqrt[2.0], $MachinePrecision] * N[(t$95$3 * N[(0.1288888888888889 + N[(0.5 * N[Power[t$95$4, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$0 * t$95$4 + N[(545.0353078428827 * N[Sqrt[7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision] + N[(43.89719783017524 * N[(N[(Pi * N[Exp[-7.5], $MachinePrecision]), $MachinePrecision] * N[Sqrt[15.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Power[Pi, 1.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 436.8961725563396 \cdot \sqrt{7.5}\\
t_1 := e^{-7.5} \cdot \sqrt{15}\\
t_2 := \frac{t\_1}{\pi}\\
t_3 := 263.3831869810514 \cdot \sqrt{7.5}\\
t_4 := \log 0.13333333333333333 - 0.06666666666666667\\
t_5 := \sqrt{2} \cdot \mathsf{fma}\left(t\_3, t\_4, t\_0\right)\\
\frac{\mathsf{fma}\left(263.3831869810514 \cdot \sqrt{\pi}, t\_1, z \cdot \mathsf{fma}\left({\pi}^{1.5}, \mathsf{fma}\left(263.3831869810514, t\_2, \frac{e^{-7.5} \cdot t\_5}{\pi}\right), \left(z \cdot \left(\mathsf{fma}\left(131.6915934905257, t\_2, \frac{e^{-7.5} \cdot \mathsf{fma}\left(\sqrt{2}, \mathsf{fma}\left(t\_3, 0.1288888888888889 + 0.5 \cdot {t\_4}^{2}, \mathsf{fma}\left(t\_0, t\_4, 545.0353078428827 \cdot \sqrt{7.5}\right)\right), t\_5\right)}{\pi}\right) + 43.89719783017524 \cdot \left(\left(\pi \cdot e^{-7.5}\right) \cdot \sqrt{15}\right)\right)\right) \cdot {\pi}^{1.5}\right)\right)}{z}
\end{array}
\end{array}
Initial program 96.6%
Taylor expanded in z around 0
Applied rewrites96.2%
(FPCore (z) :precision binary64 (* (* 263.3831869810514 (/ (* (exp -7.5) (sqrt 15.0)) z)) (sqrt PI)))
double code(double z) {
return (263.3831869810514 * ((exp(-7.5) * sqrt(15.0)) / z)) * sqrt(((double) M_PI));
}
public static double code(double z) {
return (263.3831869810514 * ((Math.exp(-7.5) * Math.sqrt(15.0)) / z)) * Math.sqrt(Math.PI);
}
def code(z): return (263.3831869810514 * ((math.exp(-7.5) * math.sqrt(15.0)) / z)) * math.sqrt(math.pi)
function code(z) return Float64(Float64(263.3831869810514 * Float64(Float64(exp(-7.5) * sqrt(15.0)) / z)) * sqrt(pi)) end
function tmp = code(z) tmp = (263.3831869810514 * ((exp(-7.5) * sqrt(15.0)) / z)) * sqrt(pi); end
code[z_] := N[(N[(263.3831869810514 * N[(N[(N[Exp[-7.5], $MachinePrecision] * N[Sqrt[15.0], $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]), $MachinePrecision] * N[Sqrt[Pi], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\left(263.3831869810514 \cdot \frac{e^{-7.5} \cdot \sqrt{15}}{z}\right) \cdot \sqrt{\pi}
\end{array}
Initial program 96.6%
Taylor expanded in z around 0
associate-*r*N/A
lower-*.f64N/A
Applied rewrites95.2%
(FPCore (z)
:precision binary64
(let* ((t_0 (* (exp -7.5) (sqrt 15.0)))
(t_1 (- (log 0.13333333333333333) 0.06666666666666667))
(t_2 (/ t_0 PI))
(t_3 (* (sqrt 7.5) t_1))
(t_4
(*
(sqrt 2.0)
(fma 263.3831869810514 t_3 (* 436.8961725563396 (sqrt 7.5))))))
(*
z
(fma
263.3831869810514
(* (* (/ (exp -7.5) z) (/ (sqrt 15.0) z)) (sqrt PI))
(fma
(pow PI 1.5)
(fma
43.89719783017524
(* PI t_0)
(fma
131.6915934905257
t_2
(/
(*
(exp -7.5)
(fma
(sqrt 2.0)
(fma
263.3831869810514
(* (sqrt 7.5) (+ 0.1288888888888889 (* 0.5 (pow t_1 2.0))))
(fma 436.8961725563396 t_3 (* 545.0353078428827 (sqrt 7.5))))
t_4))
PI)))
(*
(/ (fma 263.3831869810514 t_2 (/ (* (exp -7.5) t_4) PI)) z)
(pow PI 1.5)))))))
double code(double z) {
double t_0 = exp(-7.5) * sqrt(15.0);
double t_1 = log(0.13333333333333333) - 0.06666666666666667;
double t_2 = t_0 / ((double) M_PI);
double t_3 = sqrt(7.5) * t_1;
double t_4 = sqrt(2.0) * fma(263.3831869810514, t_3, (436.8961725563396 * sqrt(7.5)));
return z * fma(263.3831869810514, (((exp(-7.5) / z) * (sqrt(15.0) / z)) * sqrt(((double) M_PI))), fma(pow(((double) M_PI), 1.5), fma(43.89719783017524, (((double) M_PI) * t_0), fma(131.6915934905257, t_2, ((exp(-7.5) * fma(sqrt(2.0), fma(263.3831869810514, (sqrt(7.5) * (0.1288888888888889 + (0.5 * pow(t_1, 2.0)))), fma(436.8961725563396, t_3, (545.0353078428827 * sqrt(7.5)))), t_4)) / ((double) M_PI)))), ((fma(263.3831869810514, t_2, ((exp(-7.5) * t_4) / ((double) M_PI))) / z) * pow(((double) M_PI), 1.5))));
}
function code(z) t_0 = Float64(exp(-7.5) * sqrt(15.0)) t_1 = Float64(log(0.13333333333333333) - 0.06666666666666667) t_2 = Float64(t_0 / pi) t_3 = Float64(sqrt(7.5) * t_1) t_4 = Float64(sqrt(2.0) * fma(263.3831869810514, t_3, Float64(436.8961725563396 * sqrt(7.5)))) return Float64(z * fma(263.3831869810514, Float64(Float64(Float64(exp(-7.5) / z) * Float64(sqrt(15.0) / z)) * sqrt(pi)), fma((pi ^ 1.5), fma(43.89719783017524, Float64(pi * t_0), fma(131.6915934905257, t_2, Float64(Float64(exp(-7.5) * fma(sqrt(2.0), fma(263.3831869810514, Float64(sqrt(7.5) * Float64(0.1288888888888889 + Float64(0.5 * (t_1 ^ 2.0)))), fma(436.8961725563396, t_3, Float64(545.0353078428827 * sqrt(7.5)))), t_4)) / pi))), Float64(Float64(fma(263.3831869810514, t_2, Float64(Float64(exp(-7.5) * t_4) / pi)) / z) * (pi ^ 1.5))))) end
code[z_] := Block[{t$95$0 = N[(N[Exp[-7.5], $MachinePrecision] * N[Sqrt[15.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Log[0.13333333333333333], $MachinePrecision] - 0.06666666666666667), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 / Pi), $MachinePrecision]}, Block[{t$95$3 = N[(N[Sqrt[7.5], $MachinePrecision] * t$95$1), $MachinePrecision]}, Block[{t$95$4 = N[(N[Sqrt[2.0], $MachinePrecision] * N[(263.3831869810514 * t$95$3 + N[(436.8961725563396 * N[Sqrt[7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(z * N[(263.3831869810514 * N[(N[(N[(N[Exp[-7.5], $MachinePrecision] / z), $MachinePrecision] * N[(N[Sqrt[15.0], $MachinePrecision] / z), $MachinePrecision]), $MachinePrecision] * N[Sqrt[Pi], $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 1.5], $MachinePrecision] * N[(43.89719783017524 * N[(Pi * t$95$0), $MachinePrecision] + N[(131.6915934905257 * t$95$2 + N[(N[(N[Exp[-7.5], $MachinePrecision] * N[(N[Sqrt[2.0], $MachinePrecision] * N[(263.3831869810514 * N[(N[Sqrt[7.5], $MachinePrecision] * N[(0.1288888888888889 + N[(0.5 * N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(436.8961725563396 * t$95$3 + N[(545.0353078428827 * N[Sqrt[7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$4), $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(263.3831869810514 * t$95$2 + N[(N[(N[Exp[-7.5], $MachinePrecision] * t$95$4), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] * N[Power[Pi, 1.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{-7.5} \cdot \sqrt{15}\\
t_1 := \log 0.13333333333333333 - 0.06666666666666667\\
t_2 := \frac{t\_0}{\pi}\\
t_3 := \sqrt{7.5} \cdot t\_1\\
t_4 := \sqrt{2} \cdot \mathsf{fma}\left(263.3831869810514, t\_3, 436.8961725563396 \cdot \sqrt{7.5}\right)\\
z \cdot \mathsf{fma}\left(263.3831869810514, \left(\frac{e^{-7.5}}{z} \cdot \frac{\sqrt{15}}{z}\right) \cdot \sqrt{\pi}, \mathsf{fma}\left({\pi}^{1.5}, \mathsf{fma}\left(43.89719783017524, \pi \cdot t\_0, \mathsf{fma}\left(131.6915934905257, t\_2, \frac{e^{-7.5} \cdot \mathsf{fma}\left(\sqrt{2}, \mathsf{fma}\left(263.3831869810514, \sqrt{7.5} \cdot \left(0.1288888888888889 + 0.5 \cdot {t\_1}^{2}\right), \mathsf{fma}\left(436.8961725563396, t\_3, 545.0353078428827 \cdot \sqrt{7.5}\right)\right), t\_4\right)}{\pi}\right)\right), \frac{\mathsf{fma}\left(263.3831869810514, t\_2, \frac{e^{-7.5} \cdot t\_4}{\pi}\right)}{z} \cdot {\pi}^{1.5}\right)\right)
\end{array}
\end{array}
Initial program 96.6%
Taylor expanded in z around 0
Applied rewrites96.2%
Taylor expanded in z around inf
Applied rewrites50.6%
Applied rewrites50.6%
herbie shell --seed 2025057
(FPCore (z)
:name "Jmat.Real.gamma, branch z less than 0.5"
:precision binary64
:pre (<= z 0.5)
(* (/ PI (sin (* PI z))) (* (* (* (sqrt (* PI 2.0)) (pow (+ (+ (- (- 1.0 z) 1.0) 7.0) 0.5) (+ (- (- 1.0 z) 1.0) 0.5))) (exp (- (+ (+ (- (- 1.0 z) 1.0) 7.0) 0.5)))) (+ (+ (+ (+ (+ (+ (+ (+ 0.9999999999998099 (/ 676.5203681218851 (+ (- (- 1.0 z) 1.0) 1.0))) (/ -1259.1392167224028 (+ (- (- 1.0 z) 1.0) 2.0))) (/ 771.3234287776531 (+ (- (- 1.0 z) 1.0) 3.0))) (/ -176.6150291621406 (+ (- (- 1.0 z) 1.0) 4.0))) (/ 12.507343278686905 (+ (- (- 1.0 z) 1.0) 5.0))) (/ -0.13857109526572012 (+ (- (- 1.0 z) 1.0) 6.0))) (/ 9.984369578019572e-6 (+ (- (- 1.0 z) 1.0) 7.0))) (/ 1.5056327351493116e-7 (+ (- (- 1.0 z) 1.0) 8.0))))))