
(FPCore (z0) :precision binary64 (sin (* (- 0.5 (+ z0 z0)) PI)))
double code(double z0) {
return sin(((0.5 - (z0 + z0)) * ((double) M_PI)));
}
public static double code(double z0) {
return Math.sin(((0.5 - (z0 + z0)) * Math.PI));
}
def code(z0): return math.sin(((0.5 - (z0 + z0)) * math.pi))
function code(z0) return sin(Float64(Float64(0.5 - Float64(z0 + z0)) * pi)) end
function tmp = code(z0) tmp = sin(((0.5 - (z0 + z0)) * pi)); end
code[z0_] := N[Sin[N[(N[(0.5 - N[(z0 + z0), $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]
\sin \left(\left(0.5 - \left(z0 + z0\right)\right) \cdot \pi\right)
Herbie found 8 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (sin (* (- 0.5 (+ z0 z0)) PI)))
double code(double z0) {
return sin(((0.5 - (z0 + z0)) * ((double) M_PI)));
}
public static double code(double z0) {
return Math.sin(((0.5 - (z0 + z0)) * Math.PI));
}
def code(z0): return math.sin(((0.5 - (z0 + z0)) * math.pi))
function code(z0) return sin(Float64(Float64(0.5 - Float64(z0 + z0)) * pi)) end
function tmp = code(z0) tmp = sin(((0.5 - (z0 + z0)) * pi)); end
code[z0_] := N[Sin[N[(N[(0.5 - N[(z0 + z0), $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]
\sin \left(\left(0.5 - \left(z0 + z0\right)\right) \cdot \pi\right)
(FPCore (z0)
:precision binary64
(let* ((t_0 (- 0.5 (fabs z0)))
(t_1
(*
(+
(sin (* PI (* (- 1.0 (/ (fabs z0) t_0)) t_0)))
(cos (* (+ (fabs z0) (fabs z0)) PI)))
0.5))
(t_2 (* (cos (* PI 0.5)) (sin (* (* -2.0 (fabs z0)) PI)))))
(if (<= (fabs z0) 85000.0)
(/
(+ (pow t_1 3.0) (pow t_2 3.0))
(+ (* t_1 t_1) (- (* t_2 t_2) (* t_1 t_2))))
(sin (* 0.5 PI)))))double code(double z0) {
double t_0 = 0.5 - fabs(z0);
double t_1 = (sin((((double) M_PI) * ((1.0 - (fabs(z0) / t_0)) * t_0))) + cos(((fabs(z0) + fabs(z0)) * ((double) M_PI)))) * 0.5;
double t_2 = cos((((double) M_PI) * 0.5)) * sin(((-2.0 * fabs(z0)) * ((double) M_PI)));
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = (pow(t_1, 3.0) + pow(t_2, 3.0)) / ((t_1 * t_1) + ((t_2 * t_2) - (t_1 * t_2)));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double t_0 = 0.5 - Math.abs(z0);
double t_1 = (Math.sin((Math.PI * ((1.0 - (Math.abs(z0) / t_0)) * t_0))) + Math.cos(((Math.abs(z0) + Math.abs(z0)) * Math.PI))) * 0.5;
double t_2 = Math.cos((Math.PI * 0.5)) * Math.sin(((-2.0 * Math.abs(z0)) * Math.PI));
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = (Math.pow(t_1, 3.0) + Math.pow(t_2, 3.0)) / ((t_1 * t_1) + ((t_2 * t_2) - (t_1 * t_2)));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): t_0 = 0.5 - math.fabs(z0) t_1 = (math.sin((math.pi * ((1.0 - (math.fabs(z0) / t_0)) * t_0))) + math.cos(((math.fabs(z0) + math.fabs(z0)) * math.pi))) * 0.5 t_2 = math.cos((math.pi * 0.5)) * math.sin(((-2.0 * math.fabs(z0)) * math.pi)) tmp = 0 if math.fabs(z0) <= 85000.0: tmp = (math.pow(t_1, 3.0) + math.pow(t_2, 3.0)) / ((t_1 * t_1) + ((t_2 * t_2) - (t_1 * t_2))) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) t_0 = Float64(0.5 - abs(z0)) t_1 = Float64(Float64(sin(Float64(pi * Float64(Float64(1.0 - Float64(abs(z0) / t_0)) * t_0))) + cos(Float64(Float64(abs(z0) + abs(z0)) * pi))) * 0.5) t_2 = Float64(cos(Float64(pi * 0.5)) * sin(Float64(Float64(-2.0 * abs(z0)) * pi))) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = Float64(Float64((t_1 ^ 3.0) + (t_2 ^ 3.0)) / Float64(Float64(t_1 * t_1) + Float64(Float64(t_2 * t_2) - Float64(t_1 * t_2)))); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) t_0 = 0.5 - abs(z0); t_1 = (sin((pi * ((1.0 - (abs(z0) / t_0)) * t_0))) + cos(((abs(z0) + abs(z0)) * pi))) * 0.5; t_2 = cos((pi * 0.5)) * sin(((-2.0 * abs(z0)) * pi)); tmp = 0.0; if (abs(z0) <= 85000.0) tmp = ((t_1 ^ 3.0) + (t_2 ^ 3.0)) / ((t_1 * t_1) + ((t_2 * t_2) - (t_1 * t_2))); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(0.5 - N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[Sin[N[(Pi * N[(N[(1.0 - N[(N[Abs[z0], $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[Cos[N[(N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]}, Block[{t$95$2 = N[(N[Cos[N[(Pi * 0.5), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(N[(-2.0 * N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[(N[(N[Power[t$95$1, 3.0], $MachinePrecision] + N[Power[t$95$2, 3.0], $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$1 * t$95$1), $MachinePrecision] + N[(N[(t$95$2 * t$95$2), $MachinePrecision] - N[(t$95$1 * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.5 - \left|z0\right|\\
t_1 := \left(\sin \left(\pi \cdot \left(\left(1 - \frac{\left|z0\right|}{t\_0}\right) \cdot t\_0\right)\right) + \cos \left(\left(\left|z0\right| + \left|z0\right|\right) \cdot \pi\right)\right) \cdot 0.5\\
t_2 := \cos \left(\pi \cdot 0.5\right) \cdot \sin \left(\left(-2 \cdot \left|z0\right|\right) \cdot \pi\right)\\
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\frac{{t\_1}^{3} + {t\_2}^{3}}{t\_1 \cdot t\_1 + \left(t\_2 \cdot t\_2 - t\_1 \cdot t\_2\right)}\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
distribute-lft-inN/A
sin-sumN/A
flip3-+N/A
Applied rewrites57.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift--.f64N/A
sub-to-multN/A
lower-unsound-*.f64N/A
lower-unsound--.f64N/A
lower-unsound-/.f6456.8%
Applied rewrites56.8%
lift--.f64N/A
sub-to-multN/A
lower-unsound-*.f64N/A
lower-unsound--.f64N/A
lower-unsound-/.f6456.8%
Applied rewrites56.8%
lift--.f64N/A
sub-to-multN/A
lower-unsound-*.f64N/A
lower-unsound--.f64N/A
lower-unsound-/.f6456.8%
Applied rewrites56.8%
lift--.f64N/A
sub-to-multN/A
lower-unsound-*.f64N/A
lower-unsound--.f64N/A
lower-unsound-/.f6456.8%
Applied rewrites56.8%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0)
:precision binary64
(let* ((t_0 (* (cos (* PI 0.5)) (sin (* (* -2.0 (fabs z0)) PI))))
(t_1
(*
(+
(sin (* PI (- (- 0.5 (fabs z0)) (fabs z0))))
(cos (* (+ (fabs z0) (fabs z0)) PI)))
0.5)))
(if (<= (fabs z0) 85000.0)
(/
(+ (pow t_1 3.0) (pow t_0 3.0))
(+ (* t_1 t_1) (- (* t_0 t_0) (* t_1 t_0))))
(sin (* 0.5 PI)))))double code(double z0) {
double t_0 = cos((((double) M_PI) * 0.5)) * sin(((-2.0 * fabs(z0)) * ((double) M_PI)));
double t_1 = (sin((((double) M_PI) * ((0.5 - fabs(z0)) - fabs(z0)))) + cos(((fabs(z0) + fabs(z0)) * ((double) M_PI)))) * 0.5;
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = (pow(t_1, 3.0) + pow(t_0, 3.0)) / ((t_1 * t_1) + ((t_0 * t_0) - (t_1 * t_0)));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double t_0 = Math.cos((Math.PI * 0.5)) * Math.sin(((-2.0 * Math.abs(z0)) * Math.PI));
double t_1 = (Math.sin((Math.PI * ((0.5 - Math.abs(z0)) - Math.abs(z0)))) + Math.cos(((Math.abs(z0) + Math.abs(z0)) * Math.PI))) * 0.5;
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = (Math.pow(t_1, 3.0) + Math.pow(t_0, 3.0)) / ((t_1 * t_1) + ((t_0 * t_0) - (t_1 * t_0)));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): t_0 = math.cos((math.pi * 0.5)) * math.sin(((-2.0 * math.fabs(z0)) * math.pi)) t_1 = (math.sin((math.pi * ((0.5 - math.fabs(z0)) - math.fabs(z0)))) + math.cos(((math.fabs(z0) + math.fabs(z0)) * math.pi))) * 0.5 tmp = 0 if math.fabs(z0) <= 85000.0: tmp = (math.pow(t_1, 3.0) + math.pow(t_0, 3.0)) / ((t_1 * t_1) + ((t_0 * t_0) - (t_1 * t_0))) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) t_0 = Float64(cos(Float64(pi * 0.5)) * sin(Float64(Float64(-2.0 * abs(z0)) * pi))) t_1 = Float64(Float64(sin(Float64(pi * Float64(Float64(0.5 - abs(z0)) - abs(z0)))) + cos(Float64(Float64(abs(z0) + abs(z0)) * pi))) * 0.5) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = Float64(Float64((t_1 ^ 3.0) + (t_0 ^ 3.0)) / Float64(Float64(t_1 * t_1) + Float64(Float64(t_0 * t_0) - Float64(t_1 * t_0)))); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) t_0 = cos((pi * 0.5)) * sin(((-2.0 * abs(z0)) * pi)); t_1 = (sin((pi * ((0.5 - abs(z0)) - abs(z0)))) + cos(((abs(z0) + abs(z0)) * pi))) * 0.5; tmp = 0.0; if (abs(z0) <= 85000.0) tmp = ((t_1 ^ 3.0) + (t_0 ^ 3.0)) / ((t_1 * t_1) + ((t_0 * t_0) - (t_1 * t_0))); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(N[Cos[N[(Pi * 0.5), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(N[(-2.0 * N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[Sin[N[(Pi * N[(N[(0.5 - N[Abs[z0], $MachinePrecision]), $MachinePrecision] - N[Abs[z0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[Cos[N[(N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]}, If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[(N[(N[Power[t$95$1, 3.0], $MachinePrecision] + N[Power[t$95$0, 3.0], $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$1 * t$95$1), $MachinePrecision] + N[(N[(t$95$0 * t$95$0), $MachinePrecision] - N[(t$95$1 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_0 := \cos \left(\pi \cdot 0.5\right) \cdot \sin \left(\left(-2 \cdot \left|z0\right|\right) \cdot \pi\right)\\
t_1 := \left(\sin \left(\pi \cdot \left(\left(0.5 - \left|z0\right|\right) - \left|z0\right|\right)\right) + \cos \left(\left(\left|z0\right| + \left|z0\right|\right) \cdot \pi\right)\right) \cdot 0.5\\
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\frac{{t\_1}^{3} + {t\_0}^{3}}{t\_1 \cdot t\_1 + \left(t\_0 \cdot t\_0 - t\_1 \cdot t\_0\right)}\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
distribute-lft-inN/A
sin-sumN/A
flip3-+N/A
Applied rewrites57.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0)
:precision binary64
(let* ((t_0 (+ (fabs z0) (fabs z0))) (t_1 (* t_0 PI)))
(if (<= (fabs z0) 85000.0)
(/
(+
(+
(sin (* (- (- 0.5 (fabs z0)) (fabs z0)) PI))
(sin (* PI (+ 0.5 t_0))))
(+ (cos t_1) (sin (- (+ t_1 (* 0.5 PI))))))
2.0)
(sin (* 0.5 PI)))))double code(double z0) {
double t_0 = fabs(z0) + fabs(z0);
double t_1 = t_0 * ((double) M_PI);
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = ((sin((((0.5 - fabs(z0)) - fabs(z0)) * ((double) M_PI))) + sin((((double) M_PI) * (0.5 + t_0)))) + (cos(t_1) + sin(-(t_1 + (0.5 * ((double) M_PI)))))) / 2.0;
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double t_0 = Math.abs(z0) + Math.abs(z0);
double t_1 = t_0 * Math.PI;
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = ((Math.sin((((0.5 - Math.abs(z0)) - Math.abs(z0)) * Math.PI)) + Math.sin((Math.PI * (0.5 + t_0)))) + (Math.cos(t_1) + Math.sin(-(t_1 + (0.5 * Math.PI))))) / 2.0;
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): t_0 = math.fabs(z0) + math.fabs(z0) t_1 = t_0 * math.pi tmp = 0 if math.fabs(z0) <= 85000.0: tmp = ((math.sin((((0.5 - math.fabs(z0)) - math.fabs(z0)) * math.pi)) + math.sin((math.pi * (0.5 + t_0)))) + (math.cos(t_1) + math.sin(-(t_1 + (0.5 * math.pi))))) / 2.0 else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) t_0 = Float64(abs(z0) + abs(z0)) t_1 = Float64(t_0 * pi) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = Float64(Float64(Float64(sin(Float64(Float64(Float64(0.5 - abs(z0)) - abs(z0)) * pi)) + sin(Float64(pi * Float64(0.5 + t_0)))) + Float64(cos(t_1) + sin(Float64(-Float64(t_1 + Float64(0.5 * pi)))))) / 2.0); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) t_0 = abs(z0) + abs(z0); t_1 = t_0 * pi; tmp = 0.0; if (abs(z0) <= 85000.0) tmp = ((sin((((0.5 - abs(z0)) - abs(z0)) * pi)) + sin((pi * (0.5 + t_0)))) + (cos(t_1) + sin(-(t_1 + (0.5 * pi))))) / 2.0; else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * Pi), $MachinePrecision]}, If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[(N[(N[(N[Sin[N[(N[(N[(0.5 - N[Abs[z0], $MachinePrecision]), $MachinePrecision] - N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] + N[Sin[N[(Pi * N[(0.5 + t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] + N[(N[Cos[t$95$1], $MachinePrecision] + N[Sin[(-N[(t$95$1 + N[(0.5 * Pi), $MachinePrecision]), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_0 := \left|z0\right| + \left|z0\right|\\
t_1 := t\_0 \cdot \pi\\
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\frac{\left(\sin \left(\left(\left(0.5 - \left|z0\right|\right) - \left|z0\right|\right) \cdot \pi\right) + \sin \left(\pi \cdot \left(0.5 + t\_0\right)\right)\right) + \left(\cos t\_1 + \sin \left(-\left(t\_1 + 0.5 \cdot \pi\right)\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
distribute-lft-inN/A
sin-sumN/A
flip3-+N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
Applied rewrites53.6%
lift-neg.f64N/A
lift-cos.f64N/A
sin-+PI/2-revN/A
sin-neg-revN/A
lower-sin.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flip-revN/A
metadata-evalN/A
lift-*.f64N/A
lower-+.f6456.8%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6456.8%
Applied rewrites56.8%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0)
:precision binary64
(let* ((t_0 (+ (fabs z0) (fabs z0))))
(if (<= (fabs z0) 85000.0)
(-
(*
(+
(sin (* (- (- 0.5 (fabs z0)) (fabs z0)) PI))
(cos (* t_0 PI)))
0.5)
(* (sin (* (- PI) t_0)) (cos (* -0.5 PI))))
(sin (* 0.5 PI)))))double code(double z0) {
double t_0 = fabs(z0) + fabs(z0);
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = ((sin((((0.5 - fabs(z0)) - fabs(z0)) * ((double) M_PI))) + cos((t_0 * ((double) M_PI)))) * 0.5) - (sin((-((double) M_PI) * t_0)) * cos((-0.5 * ((double) M_PI))));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double t_0 = Math.abs(z0) + Math.abs(z0);
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = ((Math.sin((((0.5 - Math.abs(z0)) - Math.abs(z0)) * Math.PI)) + Math.cos((t_0 * Math.PI))) * 0.5) - (Math.sin((-Math.PI * t_0)) * Math.cos((-0.5 * Math.PI)));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): t_0 = math.fabs(z0) + math.fabs(z0) tmp = 0 if math.fabs(z0) <= 85000.0: tmp = ((math.sin((((0.5 - math.fabs(z0)) - math.fabs(z0)) * math.pi)) + math.cos((t_0 * math.pi))) * 0.5) - (math.sin((-math.pi * t_0)) * math.cos((-0.5 * math.pi))) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) t_0 = Float64(abs(z0) + abs(z0)) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = Float64(Float64(Float64(sin(Float64(Float64(Float64(0.5 - abs(z0)) - abs(z0)) * pi)) + cos(Float64(t_0 * pi))) * 0.5) - Float64(sin(Float64(Float64(-pi) * t_0)) * cos(Float64(-0.5 * pi)))); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) t_0 = abs(z0) + abs(z0); tmp = 0.0; if (abs(z0) <= 85000.0) tmp = ((sin((((0.5 - abs(z0)) - abs(z0)) * pi)) + cos((t_0 * pi))) * 0.5) - (sin((-pi * t_0)) * cos((-0.5 * pi))); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[(N[(N[(N[Sin[N[(N[(N[(0.5 - N[Abs[z0], $MachinePrecision]), $MachinePrecision] - N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] + N[Cos[N[(t$95$0 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - N[(N[Sin[N[((-Pi) * t$95$0), $MachinePrecision]], $MachinePrecision] * N[Cos[N[(-0.5 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
t_0 := \left|z0\right| + \left|z0\right|\\
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\left(\sin \left(\left(\left(0.5 - \left|z0\right|\right) - \left|z0\right|\right) \cdot \pi\right) + \cos \left(t\_0 \cdot \pi\right)\right) \cdot 0.5 - \sin \left(\left(-\pi\right) \cdot t\_0\right) \cdot \cos \left(-0.5 \cdot \pi\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
distribute-lft-inN/A
sin-sumN/A
flip3-+N/A
Applied rewrites57.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.5%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
lift-*.f64N/A
lift-sin.f64N/A
lift-cos.f64N/A
sin-cos-multN/A
mult-flipN/A
metadata-evalN/A
lower-*.f64N/A
Applied rewrites56.8%
Applied rewrites56.8%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0)
:precision binary64
(let* ((t_0 (* 2.0 (fabs z0))))
(if (<= (fabs z0) 85000.0)
(* 0.5 (+ (sin (* PI (+ 0.5 t_0))) (sin (* PI (- 0.5 t_0)))))
(sin (* 0.5 PI)))))double code(double z0) {
double t_0 = 2.0 * fabs(z0);
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = 0.5 * (sin((((double) M_PI) * (0.5 + t_0))) + sin((((double) M_PI) * (0.5 - t_0))));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double t_0 = 2.0 * Math.abs(z0);
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = 0.5 * (Math.sin((Math.PI * (0.5 + t_0))) + Math.sin((Math.PI * (0.5 - t_0))));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): t_0 = 2.0 * math.fabs(z0) tmp = 0 if math.fabs(z0) <= 85000.0: tmp = 0.5 * (math.sin((math.pi * (0.5 + t_0))) + math.sin((math.pi * (0.5 - t_0)))) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) t_0 = Float64(2.0 * abs(z0)) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = Float64(0.5 * Float64(sin(Float64(pi * Float64(0.5 + t_0))) + sin(Float64(pi * Float64(0.5 - t_0))))); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) t_0 = 2.0 * abs(z0); tmp = 0.0; if (abs(z0) <= 85000.0) tmp = 0.5 * (sin((pi * (0.5 + t_0))) + sin((pi * (0.5 - t_0)))); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(2.0 * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[(0.5 * N[(N[Sin[N[(Pi * N[(0.5 + t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[Sin[N[(Pi * N[(0.5 - t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
t_0 := 2 \cdot \left|z0\right|\\
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;0.5 \cdot \left(\sin \left(\pi \cdot \left(0.5 + t\_0\right)\right) + \sin \left(\pi \cdot \left(0.5 - t\_0\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
distribute-lft-inN/A
sin-sumN/A
flip3-+N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
distribute-lft-neg-outN/A
count-2N/A
lift-+.f64N/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
cos-PI/2N/A
sin-PIN/A
lift-PI.f64N/A
Applied rewrites57.5%
Applied rewrites53.6%
Taylor expanded in z0 around inf
lower-*.f64N/A
lower-+.f64N/A
lower-sin.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower-+.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f64N/A
lower-*.f6453.6%
Applied rewrites53.6%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0) :precision binary64 (if (<= (fabs z0) 85000.0) (sin (* (- 0.5 (+ (fabs z0) (fabs z0))) PI)) (sin (* 0.5 PI))))
double code(double z0) {
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = sin(((0.5 - (fabs(z0) + fabs(z0))) * ((double) M_PI)));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = Math.sin(((0.5 - (Math.abs(z0) + Math.abs(z0))) * Math.PI));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): tmp = 0 if math.fabs(z0) <= 85000.0: tmp = math.sin(((0.5 - (math.fabs(z0) + math.fabs(z0))) * math.pi)) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = sin(Float64(Float64(0.5 - Float64(abs(z0) + abs(z0))) * pi)); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) tmp = 0.0; if (abs(z0) <= 85000.0) tmp = sin(((0.5 - (abs(z0) + abs(z0))) * pi)); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[Sin[N[(N[(0.5 - N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\sin \left(\left(0.5 - \left(\left|z0\right| + \left|z0\right|\right)\right) \cdot \pi\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0) :precision binary64 (if (<= (fabs z0) 85000.0) (cos (* (+ (fabs z0) (fabs z0)) PI)) (sin (* 0.5 PI))))
double code(double z0) {
double tmp;
if (fabs(z0) <= 85000.0) {
tmp = cos(((fabs(z0) + fabs(z0)) * ((double) M_PI)));
} else {
tmp = sin((0.5 * ((double) M_PI)));
}
return tmp;
}
public static double code(double z0) {
double tmp;
if (Math.abs(z0) <= 85000.0) {
tmp = Math.cos(((Math.abs(z0) + Math.abs(z0)) * Math.PI));
} else {
tmp = Math.sin((0.5 * Math.PI));
}
return tmp;
}
def code(z0): tmp = 0 if math.fabs(z0) <= 85000.0: tmp = math.cos(((math.fabs(z0) + math.fabs(z0)) * math.pi)) else: tmp = math.sin((0.5 * math.pi)) return tmp
function code(z0) tmp = 0.0 if (abs(z0) <= 85000.0) tmp = cos(Float64(Float64(abs(z0) + abs(z0)) * pi)); else tmp = sin(Float64(0.5 * pi)); end return tmp end
function tmp_2 = code(z0) tmp = 0.0; if (abs(z0) <= 85000.0) tmp = cos(((abs(z0) + abs(z0)) * pi)); else tmp = sin((0.5 * pi)); end tmp_2 = tmp; end
code[z0_] := If[LessEqual[N[Abs[z0], $MachinePrecision], 85000.0], N[Cos[N[(N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision], N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\left|z0\right| \leq 85000:\\
\;\;\;\;\cos \left(\left(\left|z0\right| + \left|z0\right|\right) \cdot \pi\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(0.5 \cdot \pi\right)\\
\end{array}
if z0 < 85000Initial program 57.5%
lift-sin.f64N/A
lift-*.f64N/A
lift--.f64N/A
sub-negate-revN/A
distribute-lft-neg-outN/A
sin-negN/A
sin-+PI-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lower-+.f64N/A
lower-*.f64N/A
lower--.f6457.5%
Applied rewrites57.5%
lift-sin.f64N/A
lift-+.f64N/A
lift-*.f64N/A
distribute-lft1-inN/A
*-commutativeN/A
lift--.f64N/A
sub-flipN/A
associate-+l+N/A
metadata-evalN/A
metadata-evalN/A
distribute-lft-outN/A
lift-*.f64N/A
metadata-evalN/A
mult-flipN/A
lift-PI.f64N/A
sin-+PI/2-revN/A
lift-cos.f6457.5%
lift-*.f64N/A
*-commutativeN/A
Applied rewrites57.5%
if 85000 < z0 Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
(FPCore (z0) :precision binary64 (sin (* 0.5 PI)))
double code(double z0) {
return sin((0.5 * ((double) M_PI)));
}
public static double code(double z0) {
return Math.sin((0.5 * Math.PI));
}
def code(z0): return math.sin((0.5 * math.pi))
function code(z0) return sin(Float64(0.5 * pi)) end
function tmp = code(z0) tmp = sin((0.5 * pi)); end
code[z0_] := N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]
\sin \left(0.5 \cdot \pi\right)
Initial program 57.5%
Taylor expanded in z0 around 0
Applied rewrites97.2%
herbie shell --seed 2025250
(FPCore (z0)
:name "(sin (* (- 1/2 (+ z0 z0)) PI))"
:precision binary64
(sin (* (- 0.5 (+ z0 z0)) PI)))