
(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 (+ t_1 0.5))
(t_3 (/ PI (sin (* PI z))))
(t_4
(+
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (- 1.0 z)))
(/ -1259.1392167224028 (- (- 1.0 z) -1.0)))
(/ 771.3234287776531 (- (- 1.0 z) -2.0)))
(/ -176.6150291621406 (- (- 1.0 z) -3.0))))
(t_5 (* (sqrt (* PI 2.0)) (pow t_2 (+ t_0 0.5))))
(t_6 (/ 1.5056327351493116e-7 (+ t_0 8.0)))
(t_7 (/ -0.13857109526572012 (+ t_0 6.0)))
(t_8 (/ 12.507343278686905 (- (- 1.0 z) -4.0)))
(t_9 (* t_5 (exp (* -1.0 t_2))))
(t_10 (/ 9.984369578019572e-6 t_1)))
(if (<=
(*
t_3
(*
t_9
(+
(+
(+
(+
(+
(+
(+
(+ 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)))
t_7)
t_10)
t_6)))
1e+285)
(*
t_3
(*
t_9
(+
(+
(/
(+ (pow t_4 3.0) (pow t_8 3.0))
(fma t_4 t_4 (- (* t_8 t_8) (* t_4 t_8))))
(+
(/ -0.13857109526572012 (- (- 1.0 z) -5.0))
(/ 9.984369578019572e-6 (- (- 1.0 z) -6.0))))
t_6)))
(*
t_3
(*
(* t_5 (+ (exp -7.5) (fma (exp -7.5) z (* (* 0.5 (* z (exp -7.5))) z))))
(+
(+
(+
(+
263.4062807184368
(* z (+ 436.9000215473151 (* 545.0359493463282 z))))
t_7)
t_10)
t_6))))))
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;
double t_3 = ((double) M_PI) / sin((((double) M_PI) * z));
double t_4 = (((0.9999999999998099 + (676.5203681218851 / (1.0 - z))) + (-1259.1392167224028 / ((1.0 - z) - -1.0))) + (771.3234287776531 / ((1.0 - z) - -2.0))) + (-176.6150291621406 / ((1.0 - z) - -3.0));
double t_5 = sqrt((((double) M_PI) * 2.0)) * pow(t_2, (t_0 + 0.5));
double t_6 = 1.5056327351493116e-7 / (t_0 + 8.0);
double t_7 = -0.13857109526572012 / (t_0 + 6.0);
double t_8 = 12.507343278686905 / ((1.0 - z) - -4.0);
double t_9 = t_5 * exp((-1.0 * t_2));
double t_10 = 9.984369578019572e-6 / t_1;
double tmp;
if ((t_3 * (t_9 * ((((((((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))) + t_7) + t_10) + t_6))) <= 1e+285) {
tmp = t_3 * (t_9 * ((((pow(t_4, 3.0) + pow(t_8, 3.0)) / fma(t_4, t_4, ((t_8 * t_8) - (t_4 * t_8)))) + ((-0.13857109526572012 / ((1.0 - z) - -5.0)) + (9.984369578019572e-6 / ((1.0 - z) - -6.0)))) + t_6));
} else {
tmp = t_3 * ((t_5 * (exp(-7.5) + fma(exp(-7.5), z, ((0.5 * (z * exp(-7.5))) * z)))) * ((((263.4062807184368 + (z * (436.9000215473151 + (545.0359493463282 * z)))) + t_7) + t_10) + t_6));
}
return tmp;
}
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) t_3 = Float64(pi / sin(Float64(pi * z))) t_4 = Float64(Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(1.0 - z))) + Float64(-1259.1392167224028 / Float64(Float64(1.0 - z) - -1.0))) + Float64(771.3234287776531 / Float64(Float64(1.0 - z) - -2.0))) + Float64(-176.6150291621406 / Float64(Float64(1.0 - z) - -3.0))) t_5 = Float64(sqrt(Float64(pi * 2.0)) * (t_2 ^ Float64(t_0 + 0.5))) t_6 = Float64(1.5056327351493116e-7 / Float64(t_0 + 8.0)) t_7 = Float64(-0.13857109526572012 / Float64(t_0 + 6.0)) t_8 = Float64(12.507343278686905 / Float64(Float64(1.0 - z) - -4.0)) t_9 = Float64(t_5 * exp(Float64(-1.0 * t_2))) t_10 = Float64(9.984369578019572e-6 / t_1) tmp = 0.0 if (Float64(t_3 * Float64(t_9 * 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))) + t_7) + t_10) + t_6))) <= 1e+285) tmp = Float64(t_3 * Float64(t_9 * Float64(Float64(Float64(Float64((t_4 ^ 3.0) + (t_8 ^ 3.0)) / fma(t_4, t_4, Float64(Float64(t_8 * t_8) - Float64(t_4 * t_8)))) + Float64(Float64(-0.13857109526572012 / Float64(Float64(1.0 - z) - -5.0)) + Float64(9.984369578019572e-6 / Float64(Float64(1.0 - z) - -6.0)))) + t_6))); else tmp = Float64(t_3 * Float64(Float64(t_5 * Float64(exp(-7.5) + fma(exp(-7.5), z, Float64(Float64(0.5 * Float64(z * exp(-7.5))) * z)))) * Float64(Float64(Float64(Float64(263.4062807184368 + Float64(z * Float64(436.9000215473151 + Float64(545.0359493463282 * z)))) + t_7) + t_10) + t_6))); end return tmp 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]}, Block[{t$95$3 = N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(N[(1.0 - z), $MachinePrecision] - -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(1.0 - z), $MachinePrecision] - -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-176.6150291621406 / N[(N[(1.0 - z), $MachinePrecision] - -3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$2, N[(t$95$0 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(1.5056327351493116e-7 / N[(t$95$0 + 8.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(-0.13857109526572012 / N[(t$95$0 + 6.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(12.507343278686905 / N[(N[(1.0 - z), $MachinePrecision] - -4.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(t$95$5 * N[Exp[N[(-1.0 * t$95$2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(9.984369578019572e-6 / t$95$1), $MachinePrecision]}, If[LessEqual[N[(t$95$3 * N[(t$95$9 * 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] + t$95$7), $MachinePrecision] + t$95$10), $MachinePrecision] + t$95$6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1e+285], N[(t$95$3 * N[(t$95$9 * N[(N[(N[(N[(N[Power[t$95$4, 3.0], $MachinePrecision] + N[Power[t$95$8, 3.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$4 * t$95$4 + N[(N[(t$95$8 * t$95$8), $MachinePrecision] - N[(t$95$4 * t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(-0.13857109526572012 / N[(N[(1.0 - z), $MachinePrecision] - -5.0), $MachinePrecision]), $MachinePrecision] + N[(9.984369578019572e-6 / N[(N[(1.0 - z), $MachinePrecision] - -6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$3 * N[(N[(t$95$5 * N[(N[Exp[-7.5], $MachinePrecision] + N[(N[Exp[-7.5], $MachinePrecision] * z + N[(N[(0.5 * N[(z * N[Exp[-7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(263.4062807184368 + N[(z * N[(436.9000215473151 + N[(545.0359493463282 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$7), $MachinePrecision] + t$95$10), $MachinePrecision] + t$95$6), $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\\
t_3 := \frac{\pi}{\sin \left(\pi \cdot z\right)}\\
t_4 := \left(\left(\left(0.9999999999998099 + \frac{676.5203681218851}{1 - z}\right) + \frac{-1259.1392167224028}{\left(1 - z\right) - -1}\right) + \frac{771.3234287776531}{\left(1 - z\right) - -2}\right) + \frac{-176.6150291621406}{\left(1 - z\right) - -3}\\
t_5 := \sqrt{\pi \cdot 2} \cdot {t\_2}^{\left(t\_0 + 0.5\right)}\\
t_6 := \frac{1.5056327351493116 \cdot 10^{-7}}{t\_0 + 8}\\
t_7 := \frac{-0.13857109526572012}{t\_0 + 6}\\
t_8 := \frac{12.507343278686905}{\left(1 - z\right) - -4}\\
t_9 := t\_5 \cdot e^{-1 \cdot t\_2}\\
t_10 := \frac{9.984369578019572 \cdot 10^{-6}}{t\_1}\\
\mathbf{if}\;t\_3 \cdot \left(t\_9 \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) + t\_7\right) + t\_10\right) + t\_6\right)\right) \leq 10^{+285}:\\
\;\;\;\;t\_3 \cdot \left(t\_9 \cdot \left(\left(\frac{{t\_4}^{3} + {t\_8}^{3}}{\mathsf{fma}\left(t\_4, t\_4, t\_8 \cdot t\_8 - t\_4 \cdot t\_8\right)} + \left(\frac{-0.13857109526572012}{\left(1 - z\right) - -5} + \frac{9.984369578019572 \cdot 10^{-6}}{\left(1 - z\right) - -6}\right)\right) + t\_6\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_3 \cdot \left(\left(t\_5 \cdot \left(e^{-7.5} + \mathsf{fma}\left(e^{-7.5}, z, \left(0.5 \cdot \left(z \cdot e^{-7.5}\right)\right) \cdot z\right)\right)\right) \cdot \left(\left(\left(\left(263.4062807184368 + z \cdot \left(436.9000215473151 + 545.0359493463282 \cdot z\right)\right) + t\_7\right) + t\_10\right) + t\_6\right)\right)\\
\end{array}
\end{array}
if (*.f64 (/.f64 (PI.f64) (sin.f64 (*.f64 (PI.f64) z))) (*.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 (PI.f64) #s(literal 2 binary64))) (pow.f64 (+.f64 (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)) #s(literal 1/2 binary64)) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 1/2 binary64)))) (exp.f64 (neg.f64 (+.f64 (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)) #s(literal 1/2 binary64))))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 #s(literal 9999999999998099/10000000000000000 binary64) (/.f64 #s(literal 6765203681218851/10000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 1 binary64)))) (/.f64 #s(literal -3147848041806007/2500000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 2 binary64)))) (/.f64 #s(literal 7713234287776531/10000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 3 binary64)))) (/.f64 #s(literal -883075145810703/5000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 4 binary64)))) (/.f64 #s(literal 2501468655737381/200000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 5 binary64)))) (/.f64 #s(literal -3464277381643003/25000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 6 binary64)))) (/.f64 #s(literal 2496092394504893/250000000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)))) (/.f64 #s(literal 3764081837873279/25000000000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 8 binary64)))))) < 9.9999999999999998e284Initial program 97.3%
Applied rewrites98.4%
Applied rewrites99.4%
if 9.9999999999999998e284 < (*.f64 (/.f64 (PI.f64) (sin.f64 (*.f64 (PI.f64) z))) (*.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 (PI.f64) #s(literal 2 binary64))) (pow.f64 (+.f64 (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)) #s(literal 1/2 binary64)) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 1/2 binary64)))) (exp.f64 (neg.f64 (+.f64 (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)) #s(literal 1/2 binary64))))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 #s(literal 9999999999998099/10000000000000000 binary64) (/.f64 #s(literal 6765203681218851/10000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 1 binary64)))) (/.f64 #s(literal -3147848041806007/2500000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 2 binary64)))) (/.f64 #s(literal 7713234287776531/10000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 3 binary64)))) (/.f64 #s(literal -883075145810703/5000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 4 binary64)))) (/.f64 #s(literal 2501468655737381/200000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 5 binary64)))) (/.f64 #s(literal -3464277381643003/25000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 6 binary64)))) (/.f64 #s(literal 2496092394504893/250000000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 7 binary64)))) (/.f64 #s(literal 3764081837873279/25000000000000000000000 binary64) (+.f64 (-.f64 (-.f64 #s(literal 1 binary64) z) #s(literal 1 binary64)) #s(literal 8 binary64)))))) Initial program 39.1%
Taylor expanded in z around 0
lower-+.f64N/A
lower-exp.f64N/A
distribute-rgt-inN/A
lower-fma.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-exp.f6499.1
Applied rewrites99.1%
Taylor expanded in z around 0
lower-+.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower-*.f6499.7
Applied rewrites99.7%
Final simplification99.4%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0)) (t_1 (+ t_0 7.0)))
(*
(/ PI (sin (* PI z)))
(*
(*
(* (* (pow PI 0.5) (pow 2.0 0.5)) (pow (+ t_1 0.5) (+ t_0 0.5)))
(+ (exp -7.5) (fma (exp -7.5) z (* (* 0.5 (* z (exp -7.5))) z))))
(+
(+
(+
(+
263.4062807184368
(* z (+ 436.9000215473151 (* 545.0359493463282 z))))
(/ -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;
return (((double) M_PI) / sin((((double) M_PI) * z))) * ((((pow(((double) M_PI), 0.5) * pow(2.0, 0.5)) * pow((t_1 + 0.5), (t_0 + 0.5))) * (exp(-7.5) + fma(exp(-7.5), z, ((0.5 * (z * exp(-7.5))) * z)))) * ((((263.4062807184368 + (z * (436.9000215473151 + (545.0359493463282 * z)))) + (-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) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(Float64((pi ^ 0.5) * (2.0 ^ 0.5)) * (Float64(t_1 + 0.5) ^ Float64(t_0 + 0.5))) * Float64(exp(-7.5) + fma(exp(-7.5), z, Float64(Float64(0.5 * Float64(z * exp(-7.5))) * z)))) * Float64(Float64(Float64(Float64(263.4062807184368 + Float64(z * Float64(436.9000215473151 + Float64(545.0359493463282 * z)))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) + Float64(9.984369578019572e-6 / t_1)) + 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]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[Power[Pi, 0.5], $MachinePrecision] * N[Power[2.0, 0.5], $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[(N[Exp[-7.5], $MachinePrecision] * z + N[(N[(0.5 * N[(z * N[Exp[-7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(263.4062807184368 + N[(z * N[(436.9000215473151 + N[(545.0359493463282 * z), $MachinePrecision]), $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\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\left({\pi}^{0.5} \cdot {2}^{0.5}\right) \cdot {\left(t\_1 + 0.5\right)}^{\left(t\_0 + 0.5\right)}\right) \cdot \left(e^{-7.5} + \mathsf{fma}\left(e^{-7.5}, z, \left(0.5 \cdot \left(z \cdot e^{-7.5}\right)\right) \cdot z\right)\right)\right) \cdot \left(\left(\left(\left(263.4062807184368 + z \cdot \left(436.9000215473151 + 545.0359493463282 \cdot z\right)\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}
Initial program 95.0%
Taylor expanded in z around 0
lower-+.f64N/A
lower-exp.f64N/A
distribute-rgt-inN/A
lower-fma.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-exp.f6496.6
Applied rewrites96.6%
Taylor expanded in z around 0
lower-+.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower-*.f6497.5
Applied rewrites97.5%
lift-sqrt.f64N/A
lift-PI.f64N/A
lift-*.f64N/A
sqrt-prodN/A
lower-*.f64N/A
pow1/2N/A
lift-pow.f64N/A
lift-PI.f64N/A
pow1/2N/A
lift-pow.f6498.4
Applied rewrites98.4%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) 1.0)) (t_1 (+ t_0 7.0)))
(*
(/ PI (sin (* PI z)))
(*
(*
(* (sqrt (* PI 2.0)) (pow (+ t_1 0.5) (+ t_0 0.5)))
(+ (exp -7.5) (fma (exp -7.5) z (* (* 0.5 (* z (exp -7.5))) z))))
(+
(+
(+
(+
263.4062807184368
(* z (+ 436.9000215473151 (* 545.0359493463282 z))))
(/ -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;
return (((double) M_PI) / sin((((double) M_PI) * z))) * (((sqrt((((double) M_PI) * 2.0)) * pow((t_1 + 0.5), (t_0 + 0.5))) * (exp(-7.5) + fma(exp(-7.5), z, ((0.5 * (z * exp(-7.5))) * z)))) * ((((263.4062807184368 + (z * (436.9000215473151 + (545.0359493463282 * z)))) + (-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) return Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (Float64(t_1 + 0.5) ^ Float64(t_0 + 0.5))) * Float64(exp(-7.5) + fma(exp(-7.5), z, Float64(Float64(0.5 * Float64(z * exp(-7.5))) * z)))) * Float64(Float64(Float64(Float64(263.4062807184368 + Float64(z * Float64(436.9000215473151 + Float64(545.0359493463282 * z)))) + Float64(-0.13857109526572012 / Float64(t_0 + 6.0))) + Float64(9.984369578019572e-6 / t_1)) + 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]}, N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 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[(N[Exp[-7.5], $MachinePrecision] * z + N[(N[(0.5 * N[(z * N[Exp[-7.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(263.4062807184368 + N[(z * N[(436.9000215473151 + N[(545.0359493463282 * z), $MachinePrecision]), $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\\
\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {\left(t\_1 + 0.5\right)}^{\left(t\_0 + 0.5\right)}\right) \cdot \left(e^{-7.5} + \mathsf{fma}\left(e^{-7.5}, z, \left(0.5 \cdot \left(z \cdot e^{-7.5}\right)\right) \cdot z\right)\right)\right) \cdot \left(\left(\left(\left(263.4062807184368 + z \cdot \left(436.9000215473151 + 545.0359493463282 \cdot z\right)\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}
Initial program 95.0%
Taylor expanded in z around 0
lower-+.f64N/A
lower-exp.f64N/A
distribute-rgt-inN/A
lower-fma.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-exp.f6496.6
Applied rewrites96.6%
Taylor expanded in z around 0
lower-+.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower-*.f6497.5
Applied rewrites97.5%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (- 1.0 z) -6.0))
(t_1 (+ t_0 0.5))
(t_2
(+
(+
(+ 0.9999999999998099 (/ 676.5203681218851 (- 1.0 z)))
(/ -1259.1392167224028 (- (- 1.0 z) -1.0)))
(/ 771.3234287776531 (- (- 1.0 z) -2.0))))
(t_3 (/ -176.6150291621406 (- (- 1.0 z) -3.0))))
(*
(*
(/ PI (sin (* PI z)))
(*
(* (pow (* PI 2.0) 0.5) (pow t_1 (- (- 1.0 z) 0.5)))
(/ 1.0 (exp t_1))))
(+
(+
(+
(+
(/
(+ (pow t_2 3.0) (pow t_3 3.0))
(fma t_2 t_2 (- (* t_3 t_3) (* t_2 t_3))))
(/ 12.507343278686905 (- (- 1.0 z) -4.0)))
(/ -0.13857109526572012 (- (- 1.0 z) -5.0)))
(/ 9.984369578019572e-6 t_0))
(/ 1.5056327351493116e-7 (- (- 1.0 z) -7.0))))))
double code(double z) {
double t_0 = (1.0 - z) - -6.0;
double t_1 = t_0 + 0.5;
double t_2 = ((0.9999999999998099 + (676.5203681218851 / (1.0 - z))) + (-1259.1392167224028 / ((1.0 - z) - -1.0))) + (771.3234287776531 / ((1.0 - z) - -2.0));
double t_3 = -176.6150291621406 / ((1.0 - z) - -3.0);
return ((((double) M_PI) / sin((((double) M_PI) * z))) * ((pow((((double) M_PI) * 2.0), 0.5) * pow(t_1, ((1.0 - z) - 0.5))) * (1.0 / exp(t_1)))) * ((((((pow(t_2, 3.0) + pow(t_3, 3.0)) / fma(t_2, t_2, ((t_3 * t_3) - (t_2 * t_3)))) + (12.507343278686905 / ((1.0 - z) - -4.0))) + (-0.13857109526572012 / ((1.0 - z) - -5.0))) + (9.984369578019572e-6 / t_0)) + (1.5056327351493116e-7 / ((1.0 - z) - -7.0)));
}
function code(z) t_0 = Float64(Float64(1.0 - z) - -6.0) t_1 = Float64(t_0 + 0.5) t_2 = Float64(Float64(Float64(0.9999999999998099 + Float64(676.5203681218851 / Float64(1.0 - z))) + Float64(-1259.1392167224028 / Float64(Float64(1.0 - z) - -1.0))) + Float64(771.3234287776531 / Float64(Float64(1.0 - z) - -2.0))) t_3 = Float64(-176.6150291621406 / Float64(Float64(1.0 - z) - -3.0)) return Float64(Float64(Float64(pi / sin(Float64(pi * z))) * Float64(Float64((Float64(pi * 2.0) ^ 0.5) * (t_1 ^ Float64(Float64(1.0 - z) - 0.5))) * Float64(1.0 / exp(t_1)))) * Float64(Float64(Float64(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(12.507343278686905 / Float64(Float64(1.0 - z) - -4.0))) + Float64(-0.13857109526572012 / Float64(Float64(1.0 - z) - -5.0))) + Float64(9.984369578019572e-6 / t_0)) + Float64(1.5056327351493116e-7 / Float64(Float64(1.0 - z) - -7.0)))) end
code[z_] := Block[{t$95$0 = N[(N[(1.0 - z), $MachinePrecision] - -6.0), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + 0.5), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(0.9999999999998099 + N[(676.5203681218851 / N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1259.1392167224028 / N[(N[(1.0 - z), $MachinePrecision] - -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(771.3234287776531 / N[(N[(1.0 - z), $MachinePrecision] - -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(-176.6150291621406 / N[(N[(1.0 - z), $MachinePrecision] - -3.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(Pi / N[Sin[N[(Pi * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[Power[N[(Pi * 2.0), $MachinePrecision], 0.5], $MachinePrecision] * N[Power[t$95$1, N[(N[(1.0 - z), $MachinePrecision] - 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[Exp[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(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[(12.507343278686905 / N[(N[(1.0 - z), $MachinePrecision] - -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.13857109526572012 / N[(N[(1.0 - z), $MachinePrecision] - -5.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(9.984369578019572e-6 / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(N[(1.0 - z), $MachinePrecision] - -7.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(1 - z\right) - -6\\
t_1 := t\_0 + 0.5\\
t_2 := \left(\left(0.9999999999998099 + \frac{676.5203681218851}{1 - z}\right) + \frac{-1259.1392167224028}{\left(1 - z\right) - -1}\right) + \frac{771.3234287776531}{\left(1 - z\right) - -2}\\
t_3 := \frac{-176.6150291621406}{\left(1 - z\right) - -3}\\
\left(\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left({\left(\pi \cdot 2\right)}^{0.5} \cdot {t\_1}^{\left(\left(1 - z\right) - 0.5\right)}\right) \cdot \frac{1}{e^{t\_1}}\right)\right) \cdot \left(\left(\left(\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{12.507343278686905}{\left(1 - z\right) - -4}\right) + \frac{-0.13857109526572012}{\left(1 - z\right) - -5}\right) + \frac{9.984369578019572 \cdot 10^{-6}}{t\_0}\right) + \frac{1.5056327351493116 \cdot 10^{-7}}{\left(1 - z\right) - -7}\right)
\end{array}
\end{array}
Initial program 95.0%
Applied rewrites95.2%
Applied rewrites96.4%
Final simplification96.4%
(FPCore (z)
:precision binary64
(let* ((t_0
(fma
-0.027777777777777776
(pow PI 4.0)
(* 0.008333333333333333 (pow PI 4.0))))
(t_1 (- (- 1.0 z) 1.0))
(t_2 (+ (+ t_1 7.0) 0.5)))
(*
(/
(+
1.0
(*
(* z z)
(-
(*
(* (* -1.0 z) z)
(+
(*
(* z z)
(fma
-0.0001984126984126984
(pow PI 6.0)
(fma
0.001388888888888889
(pow PI 6.0)
(* 0.16666666666666666 (* (* PI PI) t_0)))))
t_0))
(* -0.16666666666666666 (* PI PI)))))
z)
(*
(* (* (sqrt (* PI 2.0)) (pow t_2 (+ t_1 0.5))) (exp (* -1.0 t_2)))
(+
(+
(+
263.4062807184368
(*
z
(+
436.9000215473151
(* z (+ 545.0359493463282 (* 606.6767878347069 z))))))
(+
(/ -0.13857109526572012 (- (- 1.0 z) -5.0))
(/ 9.984369578019572e-6 (- (- 1.0 z) -6.0))))
(/ 1.5056327351493116e-7 (+ t_1 8.0)))))))
double code(double z) {
double t_0 = fma(-0.027777777777777776, pow(((double) M_PI), 4.0), (0.008333333333333333 * pow(((double) M_PI), 4.0)));
double t_1 = (1.0 - z) - 1.0;
double t_2 = (t_1 + 7.0) + 0.5;
return ((1.0 + ((z * z) * ((((-1.0 * 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_0))))) + t_0)) - (-0.16666666666666666 * (((double) M_PI) * ((double) M_PI)))))) / z) * (((sqrt((((double) M_PI) * 2.0)) * pow(t_2, (t_1 + 0.5))) * exp((-1.0 * t_2))) * (((263.4062807184368 + (z * (436.9000215473151 + (z * (545.0359493463282 + (606.6767878347069 * z)))))) + ((-0.13857109526572012 / ((1.0 - z) - -5.0)) + (9.984369578019572e-6 / ((1.0 - z) - -6.0)))) + (1.5056327351493116e-7 / (t_1 + 8.0))));
}
function code(z) t_0 = fma(-0.027777777777777776, (pi ^ 4.0), Float64(0.008333333333333333 * (pi ^ 4.0))) t_1 = Float64(Float64(1.0 - z) - 1.0) t_2 = Float64(Float64(t_1 + 7.0) + 0.5) return Float64(Float64(Float64(1.0 + Float64(Float64(z * z) * Float64(Float64(Float64(Float64(-1.0 * z) * z) * 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_0))))) + t_0)) - Float64(-0.16666666666666666 * Float64(pi * pi))))) / z) * Float64(Float64(Float64(sqrt(Float64(pi * 2.0)) * (t_2 ^ Float64(t_1 + 0.5))) * exp(Float64(-1.0 * t_2))) * Float64(Float64(Float64(263.4062807184368 + Float64(z * Float64(436.9000215473151 + Float64(z * Float64(545.0359493463282 + Float64(606.6767878347069 * z)))))) + Float64(Float64(-0.13857109526572012 / Float64(Float64(1.0 - z) - -5.0)) + Float64(9.984369578019572e-6 / Float64(Float64(1.0 - z) - -6.0)))) + Float64(1.5056327351493116e-7 / Float64(t_1 + 8.0))))) end
code[z_] := Block[{t$95$0 = N[(-0.027777777777777776 * N[Power[Pi, 4.0], $MachinePrecision] + N[(0.008333333333333333 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(1.0 - z), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(t$95$1 + 7.0), $MachinePrecision] + 0.5), $MachinePrecision]}, N[(N[(N[(1.0 + N[(N[(z * z), $MachinePrecision] * N[(N[(N[(N[(-1.0 * z), $MachinePrecision] * 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$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision] - N[(-0.16666666666666666 * N[(Pi * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(Pi * 2.0), $MachinePrecision]], $MachinePrecision] * N[Power[t$95$2, N[(t$95$1 + 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Exp[N[(-1.0 * t$95$2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(N[(263.4062807184368 + N[(z * N[(436.9000215473151 + N[(z * N[(545.0359493463282 + N[(606.6767878347069 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(-0.13857109526572012 / N[(N[(1.0 - z), $MachinePrecision] - -5.0), $MachinePrecision]), $MachinePrecision] + N[(9.984369578019572e-6 / N[(N[(1.0 - z), $MachinePrecision] - -6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.5056327351493116e-7 / N[(t$95$1 + 8.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{fma}\left(-0.027777777777777776, {\pi}^{4}, 0.008333333333333333 \cdot {\pi}^{4}\right)\\
t_1 := \left(1 - z\right) - 1\\
t_2 := \left(t\_1 + 7\right) + 0.5\\
\frac{1 + \left(z \cdot z\right) \cdot \left(\left(\left(-1 \cdot z\right) \cdot z\right) \cdot \left(\left(z \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\_0\right)\right)\right) + t\_0\right) - -0.16666666666666666 \cdot \left(\pi \cdot \pi\right)\right)}{z} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {t\_2}^{\left(t\_1 + 0.5\right)}\right) \cdot e^{-1 \cdot t\_2}\right) \cdot \left(\left(\left(263.4062807184368 + z \cdot \left(436.9000215473151 + z \cdot \left(545.0359493463282 + 606.6767878347069 \cdot z\right)\right)\right) + \left(\frac{-0.13857109526572012}{\left(1 - z\right) - -5} + \frac{9.984369578019572 \cdot 10^{-6}}{\left(1 - z\right) - -6}\right)\right) + \frac{1.5056327351493116 \cdot 10^{-7}}{t\_1 + 8}\right)\right)
\end{array}
\end{array}
Initial program 95.0%
Applied rewrites96.1%
Taylor expanded in z around 0
lower-+.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower-*.f6495.9
Applied rewrites95.9%
Taylor expanded in z around 0
Applied rewrites96.1%
Final simplification96.1%
(FPCore (z)
:precision binary64
(let* ((t_0 (- (* -1.0 (log 7.5)) 0.06666666666666667))
(t_1 (* (exp -7.5) (sqrt 15.0)))
(t_2 (/ t_1 PI))
(t_3 (* 436.8961725563396 (pow 7.5 0.5)))
(t_4 (* 545.0353078428827 (pow 7.5 0.5)))
(t_5 (* 263.3831869810514 (pow 7.5 0.5)))
(t_6 (pow (pow PI 3.0) 0.5))
(t_7 (+ 0.1288888888888889 (* 0.5 (pow t_0 2.0))))
(t_8 (* (pow 2.0 0.5) (fma t_5 t_7 (fma t_3 t_0 t_4))))
(t_9 (* (exp -7.5) (* (pow 2.0 0.5) (fma t_5 t_0 t_3))))
(t_10 (/ t_9 PI))
(t_11 (fma 263.3831869810514 t_2 t_10)))
(/
(fma
(* 263.3831869810514 (pow PI 0.5))
t_1
(*
z
(fma
z
(fma
t_6
(fma
131.6915934905257
t_2
(- (/ (fma (exp -7.5) t_8 t_9) PI) (* (* -43.89719783017524 PI) t_1)))
(*
(*
z
(-
(fma
0.5
t_10
(fma
43.89719783017524
t_2
(/
(fma
(exp -7.5)
(*
(pow 2.0 0.5)
(fma
t_5
(+
0.008493827160493827
(fma
0.1288888888888889
t_0
(* 0.16666666666666666 (pow t_0 3.0))))
(fma
t_3
t_7
(fma t_4 t_0 (* 606.6766809167608 (pow 7.5 0.5))))))
(* (exp -7.5) t_8))
PI)))
(* (* -0.16666666666666666 (* PI PI)) t_11)))
t_6))
(* t_6 t_11))))
z)))
double code(double z) {
double t_0 = (-1.0 * log(7.5)) - 0.06666666666666667;
double t_1 = exp(-7.5) * sqrt(15.0);
double t_2 = t_1 / ((double) M_PI);
double t_3 = 436.8961725563396 * pow(7.5, 0.5);
double t_4 = 545.0353078428827 * pow(7.5, 0.5);
double t_5 = 263.3831869810514 * pow(7.5, 0.5);
double t_6 = pow(pow(((double) M_PI), 3.0), 0.5);
double t_7 = 0.1288888888888889 + (0.5 * pow(t_0, 2.0));
double t_8 = pow(2.0, 0.5) * fma(t_5, t_7, fma(t_3, t_0, t_4));
double t_9 = exp(-7.5) * (pow(2.0, 0.5) * fma(t_5, t_0, t_3));
double t_10 = t_9 / ((double) M_PI);
double t_11 = fma(263.3831869810514, t_2, t_10);
return fma((263.3831869810514 * pow(((double) M_PI), 0.5)), t_1, (z * fma(z, fma(t_6, fma(131.6915934905257, t_2, ((fma(exp(-7.5), t_8, t_9) / ((double) M_PI)) - ((-43.89719783017524 * ((double) M_PI)) * t_1))), ((z * (fma(0.5, t_10, fma(43.89719783017524, t_2, (fma(exp(-7.5), (pow(2.0, 0.5) * fma(t_5, (0.008493827160493827 + fma(0.1288888888888889, t_0, (0.16666666666666666 * pow(t_0, 3.0)))), fma(t_3, t_7, fma(t_4, t_0, (606.6766809167608 * pow(7.5, 0.5)))))), (exp(-7.5) * t_8)) / ((double) M_PI)))) - ((-0.16666666666666666 * (((double) M_PI) * ((double) M_PI))) * t_11))) * t_6)), (t_6 * t_11)))) / z;
}
function code(z) t_0 = Float64(Float64(-1.0 * log(7.5)) - 0.06666666666666667) t_1 = Float64(exp(-7.5) * sqrt(15.0)) t_2 = Float64(t_1 / pi) t_3 = Float64(436.8961725563396 * (7.5 ^ 0.5)) t_4 = Float64(545.0353078428827 * (7.5 ^ 0.5)) t_5 = Float64(263.3831869810514 * (7.5 ^ 0.5)) t_6 = (pi ^ 3.0) ^ 0.5 t_7 = Float64(0.1288888888888889 + Float64(0.5 * (t_0 ^ 2.0))) t_8 = Float64((2.0 ^ 0.5) * fma(t_5, t_7, fma(t_3, t_0, t_4))) t_9 = Float64(exp(-7.5) * Float64((2.0 ^ 0.5) * fma(t_5, t_0, t_3))) t_10 = Float64(t_9 / pi) t_11 = fma(263.3831869810514, t_2, t_10) return Float64(fma(Float64(263.3831869810514 * (pi ^ 0.5)), t_1, Float64(z * fma(z, fma(t_6, fma(131.6915934905257, t_2, Float64(Float64(fma(exp(-7.5), t_8, t_9) / pi) - Float64(Float64(-43.89719783017524 * pi) * t_1))), Float64(Float64(z * Float64(fma(0.5, t_10, fma(43.89719783017524, t_2, Float64(fma(exp(-7.5), Float64((2.0 ^ 0.5) * fma(t_5, Float64(0.008493827160493827 + fma(0.1288888888888889, t_0, Float64(0.16666666666666666 * (t_0 ^ 3.0)))), fma(t_3, t_7, fma(t_4, t_0, Float64(606.6766809167608 * (7.5 ^ 0.5)))))), Float64(exp(-7.5) * t_8)) / pi))) - Float64(Float64(-0.16666666666666666 * Float64(pi * pi)) * t_11))) * t_6)), Float64(t_6 * t_11)))) / z) end
code[z_] := Block[{t$95$0 = N[(N[(-1.0 * N[Log[7.5], $MachinePrecision]), $MachinePrecision] - 0.06666666666666667), $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[(436.8961725563396 * N[Power[7.5, 0.5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(545.0353078428827 * N[Power[7.5, 0.5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(263.3831869810514 * N[Power[7.5, 0.5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[Power[N[Power[Pi, 3.0], $MachinePrecision], 0.5], $MachinePrecision]}, Block[{t$95$7 = N[(0.1288888888888889 + N[(0.5 * N[Power[t$95$0, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(N[Power[2.0, 0.5], $MachinePrecision] * N[(t$95$5 * t$95$7 + N[(t$95$3 * t$95$0 + t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(N[Exp[-7.5], $MachinePrecision] * N[(N[Power[2.0, 0.5], $MachinePrecision] * N[(t$95$5 * t$95$0 + t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(t$95$9 / Pi), $MachinePrecision]}, Block[{t$95$11 = N[(263.3831869810514 * t$95$2 + t$95$10), $MachinePrecision]}, N[(N[(N[(263.3831869810514 * N[Power[Pi, 0.5], $MachinePrecision]), $MachinePrecision] * t$95$1 + N[(z * N[(z * N[(t$95$6 * N[(131.6915934905257 * t$95$2 + N[(N[(N[(N[Exp[-7.5], $MachinePrecision] * t$95$8 + t$95$9), $MachinePrecision] / Pi), $MachinePrecision] - N[(N[(-43.89719783017524 * Pi), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(z * N[(N[(0.5 * t$95$10 + N[(43.89719783017524 * t$95$2 + N[(N[(N[Exp[-7.5], $MachinePrecision] * N[(N[Power[2.0, 0.5], $MachinePrecision] * N[(t$95$5 * N[(0.008493827160493827 + N[(0.1288888888888889 * t$95$0 + N[(0.16666666666666666 * N[Power[t$95$0, 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$3 * t$95$7 + N[(t$95$4 * t$95$0 + N[(606.6766809167608 * N[Power[7.5, 0.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Exp[-7.5], $MachinePrecision] * t$95$8), $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(-0.16666666666666666 * N[(Pi * Pi), $MachinePrecision]), $MachinePrecision] * t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision]), $MachinePrecision] + N[(t$95$6 * t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := -1 \cdot \log 7.5 - 0.06666666666666667\\
t_1 := e^{-7.5} \cdot \sqrt{15}\\
t_2 := \frac{t\_1}{\pi}\\
t_3 := 436.8961725563396 \cdot {7.5}^{0.5}\\
t_4 := 545.0353078428827 \cdot {7.5}^{0.5}\\
t_5 := 263.3831869810514 \cdot {7.5}^{0.5}\\
t_6 := {\left({\pi}^{3}\right)}^{0.5}\\
t_7 := 0.1288888888888889 + 0.5 \cdot {t\_0}^{2}\\
t_8 := {2}^{0.5} \cdot \mathsf{fma}\left(t\_5, t\_7, \mathsf{fma}\left(t\_3, t\_0, t\_4\right)\right)\\
t_9 := e^{-7.5} \cdot \left({2}^{0.5} \cdot \mathsf{fma}\left(t\_5, t\_0, t\_3\right)\right)\\
t_10 := \frac{t\_9}{\pi}\\
t_11 := \mathsf{fma}\left(263.3831869810514, t\_2, t\_10\right)\\
\frac{\mathsf{fma}\left(263.3831869810514 \cdot {\pi}^{0.5}, t\_1, z \cdot \mathsf{fma}\left(z, \mathsf{fma}\left(t\_6, \mathsf{fma}\left(131.6915934905257, t\_2, \frac{\mathsf{fma}\left(e^{-7.5}, t\_8, t\_9\right)}{\pi} - \left(-43.89719783017524 \cdot \pi\right) \cdot t\_1\right), \left(z \cdot \left(\mathsf{fma}\left(0.5, t\_10, \mathsf{fma}\left(43.89719783017524, t\_2, \frac{\mathsf{fma}\left(e^{-7.5}, {2}^{0.5} \cdot \mathsf{fma}\left(t\_5, 0.008493827160493827 + \mathsf{fma}\left(0.1288888888888889, t\_0, 0.16666666666666666 \cdot {t\_0}^{3}\right), \mathsf{fma}\left(t\_3, t\_7, \mathsf{fma}\left(t\_4, t\_0, 606.6766809167608 \cdot {7.5}^{0.5}\right)\right)\right), e^{-7.5} \cdot t\_8\right)}{\pi}\right)\right) - \left(-0.16666666666666666 \cdot \left(\pi \cdot \pi\right)\right) \cdot t\_11\right)\right) \cdot t\_6\right), t\_6 \cdot t\_11\right)\right)}{z}
\end{array}
\end{array}
Initial program 95.0%
Taylor expanded in z around 0
Applied rewrites95.1%
(FPCore (z) :precision binary64 (* (* 263.3831869810514 (/ (* (exp -7.5) (sqrt 15.0)) z)) (exp (* (log PI) 0.5))))
double code(double z) {
return (263.3831869810514 * ((exp(-7.5) * sqrt(15.0)) / z)) * exp((log(((double) M_PI)) * 0.5));
}
public static double code(double z) {
return (263.3831869810514 * ((Math.exp(-7.5) * Math.sqrt(15.0)) / z)) * Math.exp((Math.log(Math.PI) * 0.5));
}
def code(z): return (263.3831869810514 * ((math.exp(-7.5) * math.sqrt(15.0)) / z)) * math.exp((math.log(math.pi) * 0.5))
function code(z) return Float64(Float64(263.3831869810514 * Float64(Float64(exp(-7.5) * sqrt(15.0)) / z)) * exp(Float64(log(pi) * 0.5))) end
function tmp = code(z) tmp = (263.3831869810514 * ((exp(-7.5) * sqrt(15.0)) / z)) * exp((log(pi) * 0.5)); end
code[z_] := N[(N[(263.3831869810514 * N[(N[(N[Exp[-7.5], $MachinePrecision] * N[Sqrt[15.0], $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]), $MachinePrecision] * N[Exp[N[(N[Log[Pi], $MachinePrecision] * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\left(263.3831869810514 \cdot \frac{e^{-7.5} \cdot \sqrt{15}}{z}\right) \cdot e^{\log \pi \cdot 0.5}
\end{array}
Initial program 95.0%
Taylor expanded in z around 0
associate-*r*N/A
lower-*.f64N/A
Applied rewrites93.8%
lift-PI.f64N/A
lift-pow.f64N/A
pow-to-expN/A
lower-exp.f64N/A
lower-*.f64N/A
lower-log.f64N/A
lift-PI.f6494.1
Applied rewrites94.1%
(FPCore (z)
:precision binary64
(let* ((t_0 (* (log PI) 0.5)))
(*
263.3831869810514
(* (/ (* (exp -7.5) (pow 15.0 0.5)) z) (+ (cosh t_0) (sinh t_0))))))
double code(double z) {
double t_0 = log(((double) M_PI)) * 0.5;
return 263.3831869810514 * (((exp(-7.5) * pow(15.0, 0.5)) / z) * (cosh(t_0) + sinh(t_0)));
}
public static double code(double z) {
double t_0 = Math.log(Math.PI) * 0.5;
return 263.3831869810514 * (((Math.exp(-7.5) * Math.pow(15.0, 0.5)) / z) * (Math.cosh(t_0) + Math.sinh(t_0)));
}
def code(z): t_0 = math.log(math.pi) * 0.5 return 263.3831869810514 * (((math.exp(-7.5) * math.pow(15.0, 0.5)) / z) * (math.cosh(t_0) + math.sinh(t_0)))
function code(z) t_0 = Float64(log(pi) * 0.5) return Float64(263.3831869810514 * Float64(Float64(Float64(exp(-7.5) * (15.0 ^ 0.5)) / z) * Float64(cosh(t_0) + sinh(t_0)))) end
function tmp = code(z) t_0 = log(pi) * 0.5; tmp = 263.3831869810514 * (((exp(-7.5) * (15.0 ^ 0.5)) / z) * (cosh(t_0) + sinh(t_0))); end
code[z_] := Block[{t$95$0 = N[(N[Log[Pi], $MachinePrecision] * 0.5), $MachinePrecision]}, N[(263.3831869810514 * N[(N[(N[(N[Exp[-7.5], $MachinePrecision] * N[Power[15.0, 0.5], $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] * N[(N[Cosh[t$95$0], $MachinePrecision] + N[Sinh[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \pi \cdot 0.5\\
263.3831869810514 \cdot \left(\frac{e^{-7.5} \cdot {15}^{0.5}}{z} \cdot \left(\cosh t\_0 + \sinh t\_0\right)\right)
\end{array}
\end{array}
Initial program 95.0%
Taylor expanded in z around 0
lower-+.f64N/A
lower-exp.f64N/A
distribute-rgt-inN/A
lower-fma.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-exp.f6496.6
Applied rewrites96.6%
Taylor expanded in z around 0
sqrt-unprodN/A
metadata-evalN/A
Applied rewrites93.8%
lift-PI.f64N/A
lift-pow.f64N/A
pow-to-expN/A
lift-log.f64N/A
lift-PI.f64N/A
lift-*.f64N/A
sinh-+-cosh-revN/A
lower-+.f64N/A
lower-cosh.f64N/A
lower-sinh.f6494.1
Applied rewrites94.1%
herbie shell --seed 2025065
(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))))))