
(FPCore (x y z t) :precision binary64 :pre TRUE (+ (+ (+ (- (sqrt (+ x 1.0)) (sqrt x)) (- (sqrt (+ y 1.0)) (sqrt y))) (- (sqrt (+ z 1.0)) (sqrt z))) (- (sqrt (+ t 1.0)) (sqrt t))))
double code(double x, double y, double z, double t) {
return (((sqrt((x + 1.0)) - sqrt(x)) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((z + 1.0)) - sqrt(z))) + (sqrt((t + 1.0)) - sqrt(t));
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = (((sqrt((x + 1.0d0)) - sqrt(x)) + (sqrt((y + 1.0d0)) - sqrt(y))) + (sqrt((z + 1.0d0)) - sqrt(z))) + (sqrt((t + 1.0d0)) - sqrt(t))
end function
public static double code(double x, double y, double z, double t) {
return (((Math.sqrt((x + 1.0)) - Math.sqrt(x)) + (Math.sqrt((y + 1.0)) - Math.sqrt(y))) + (Math.sqrt((z + 1.0)) - Math.sqrt(z))) + (Math.sqrt((t + 1.0)) - Math.sqrt(t));
}
def code(x, y, z, t): return (((math.sqrt((x + 1.0)) - math.sqrt(x)) + (math.sqrt((y + 1.0)) - math.sqrt(y))) + (math.sqrt((z + 1.0)) - math.sqrt(z))) + (math.sqrt((t + 1.0)) - math.sqrt(t))
function code(x, y, z, t) return Float64(Float64(Float64(Float64(sqrt(Float64(x + 1.0)) - sqrt(x)) + Float64(sqrt(Float64(y + 1.0)) - sqrt(y))) + Float64(sqrt(Float64(z + 1.0)) - sqrt(z))) + Float64(sqrt(Float64(t + 1.0)) - sqrt(t))) end
function tmp = code(x, y, z, t) tmp = (((sqrt((x + 1.0)) - sqrt(x)) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((z + 1.0)) - sqrt(z))) + (sqrt((t + 1.0)) - sqrt(t)); end
code[x_, y_, z_, t_] := N[(N[(N[(N[(N[Sqrt[N[(x + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[x], $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(y + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(z + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = ((((sqrt((x + (1)))) - (sqrt(x))) + ((sqrt((y + (1)))) - (sqrt(y)))) + ((sqrt((z + (1)))) - (sqrt(z)))) + ((sqrt((t + (1)))) - (sqrt(t))) END code
\left(\left(\left(\sqrt{x + 1} - \sqrt{x}\right) + \left(\sqrt{y + 1} - \sqrt{y}\right)\right) + \left(\sqrt{z + 1} - \sqrt{z}\right)\right) + \left(\sqrt{t + 1} - \sqrt{t}\right)
Herbie found 33 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t) :precision binary64 :pre TRUE (+ (+ (+ (- (sqrt (+ x 1.0)) (sqrt x)) (- (sqrt (+ y 1.0)) (sqrt y))) (- (sqrt (+ z 1.0)) (sqrt z))) (- (sqrt (+ t 1.0)) (sqrt t))))
double code(double x, double y, double z, double t) {
return (((sqrt((x + 1.0)) - sqrt(x)) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((z + 1.0)) - sqrt(z))) + (sqrt((t + 1.0)) - sqrt(t));
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = (((sqrt((x + 1.0d0)) - sqrt(x)) + (sqrt((y + 1.0d0)) - sqrt(y))) + (sqrt((z + 1.0d0)) - sqrt(z))) + (sqrt((t + 1.0d0)) - sqrt(t))
end function
public static double code(double x, double y, double z, double t) {
return (((Math.sqrt((x + 1.0)) - Math.sqrt(x)) + (Math.sqrt((y + 1.0)) - Math.sqrt(y))) + (Math.sqrt((z + 1.0)) - Math.sqrt(z))) + (Math.sqrt((t + 1.0)) - Math.sqrt(t));
}
def code(x, y, z, t): return (((math.sqrt((x + 1.0)) - math.sqrt(x)) + (math.sqrt((y + 1.0)) - math.sqrt(y))) + (math.sqrt((z + 1.0)) - math.sqrt(z))) + (math.sqrt((t + 1.0)) - math.sqrt(t))
function code(x, y, z, t) return Float64(Float64(Float64(Float64(sqrt(Float64(x + 1.0)) - sqrt(x)) + Float64(sqrt(Float64(y + 1.0)) - sqrt(y))) + Float64(sqrt(Float64(z + 1.0)) - sqrt(z))) + Float64(sqrt(Float64(t + 1.0)) - sqrt(t))) end
function tmp = code(x, y, z, t) tmp = (((sqrt((x + 1.0)) - sqrt(x)) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((z + 1.0)) - sqrt(z))) + (sqrt((t + 1.0)) - sqrt(t)); end
code[x_, y_, z_, t_] := N[(N[(N[(N[(N[Sqrt[N[(x + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[x], $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(y + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(z + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = ((((sqrt((x + (1)))) - (sqrt(x))) + ((sqrt((y + (1)))) - (sqrt(y)))) + ((sqrt((z + (1)))) - (sqrt(z)))) + ((sqrt((t + (1)))) - (sqrt(t))) END code
\left(\left(\left(\sqrt{x + 1} - \sqrt{x}\right) + \left(\sqrt{y + 1} - \sqrt{y}\right)\right) + \left(\sqrt{z + 1} - \sqrt{z}\right)\right) + \left(\sqrt{t + 1} - \sqrt{t}\right)
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmin (fmin x y) z))
(t_3 (fmax t_2 t))
(t_4 (fmin t_2 t))
(t_5 (sqrt t_4))
(t_6 (fmax (fmax x y) t_1))
(t_7 (fmin (fmax x y) t_1))
(t_8 (fmin t_7 t_3))
(t_9 (- (sqrt (+ t_8 1.0)) (sqrt t_8)))
(t_10 (fmax t_7 t_3))
(t_11 (fmin t_6 t_10))
(t_12 (sqrt t_11))
(t_13 (fmax t_6 t_10))
(t_14 (- (sqrt (+ t_13 1.0)) (sqrt t_13)))
(t_15 (sqrt (+ t_11 1.0))))
(if (<= t_9 5e-5)
(+
(+
(fma
0.5
(/ 1.0 (* t_8 (sqrt (/ 1.0 t_8))))
(/ 1.0 (+ t_5 (sqrt (+ 1.0 t_4)))))
(- t_15 t_12))
t_14)
(+
(+ (+ (- (sqrt (+ t_4 1.0)) t_5) t_9) (/ 1.0 (+ t_12 t_15)))
t_14))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmin(fmin(x, y), z);
double t_3 = fmax(t_2, t);
double t_4 = fmin(t_2, t);
double t_5 = sqrt(t_4);
double t_6 = fmax(fmax(x, y), t_1);
double t_7 = fmin(fmax(x, y), t_1);
double t_8 = fmin(t_7, t_3);
double t_9 = sqrt((t_8 + 1.0)) - sqrt(t_8);
double t_10 = fmax(t_7, t_3);
double t_11 = fmin(t_6, t_10);
double t_12 = sqrt(t_11);
double t_13 = fmax(t_6, t_10);
double t_14 = sqrt((t_13 + 1.0)) - sqrt(t_13);
double t_15 = sqrt((t_11 + 1.0));
double tmp;
if (t_9 <= 5e-5) {
tmp = (fma(0.5, (1.0 / (t_8 * sqrt((1.0 / t_8)))), (1.0 / (t_5 + sqrt((1.0 + t_4))))) + (t_15 - t_12)) + t_14;
} else {
tmp = (((sqrt((t_4 + 1.0)) - t_5) + t_9) + (1.0 / (t_12 + t_15))) + t_14;
}
return tmp;
}
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmin(fmin(x, y), z) t_3 = fmax(t_2, t) t_4 = fmin(t_2, t) t_5 = sqrt(t_4) t_6 = fmax(fmax(x, y), t_1) t_7 = fmin(fmax(x, y), t_1) t_8 = fmin(t_7, t_3) t_9 = Float64(sqrt(Float64(t_8 + 1.0)) - sqrt(t_8)) t_10 = fmax(t_7, t_3) t_11 = fmin(t_6, t_10) t_12 = sqrt(t_11) t_13 = fmax(t_6, t_10) t_14 = Float64(sqrt(Float64(t_13 + 1.0)) - sqrt(t_13)) t_15 = sqrt(Float64(t_11 + 1.0)) tmp = 0.0 if (t_9 <= 5e-5) tmp = Float64(Float64(fma(0.5, Float64(1.0 / Float64(t_8 * sqrt(Float64(1.0 / t_8)))), Float64(1.0 / Float64(t_5 + sqrt(Float64(1.0 + t_4))))) + Float64(t_15 - t_12)) + t_14); else tmp = Float64(Float64(Float64(Float64(sqrt(Float64(t_4 + 1.0)) - t_5) + t_9) + Float64(1.0 / Float64(t_12 + t_15))) + t_14); end return tmp end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$3 = N[Max[t$95$2, t], $MachinePrecision]}, Block[{t$95$4 = N[Min[t$95$2, t], $MachinePrecision]}, Block[{t$95$5 = N[Sqrt[t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$7 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$8 = N[Min[t$95$7, t$95$3], $MachinePrecision]}, Block[{t$95$9 = N[(N[Sqrt[N[(t$95$8 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$8], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[Max[t$95$7, t$95$3], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$6, t$95$10], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$13 = N[Max[t$95$6, t$95$10], $MachinePrecision]}, Block[{t$95$14 = N[(N[Sqrt[N[(t$95$13 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$13], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[t$95$9, 5e-5], N[(N[(N[(0.5 * N[(1.0 / N[(t$95$8 * N[Sqrt[N[(1.0 / t$95$8), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$5 + N[Sqrt[N[(1.0 + t$95$4), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$15 - t$95$12), $MachinePrecision]), $MachinePrecision] + t$95$14), $MachinePrecision], N[(N[(N[(N[(N[Sqrt[N[(t$95$4 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$5), $MachinePrecision] + t$95$9), $MachinePrecision] + N[(1.0 / N[(t$95$12 + t$95$15), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$14), $MachinePrecision]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 < z) THEN tmp_7 ELSE z ENDIF IN LET t_2 = tmp_5 IN LET tmp_8 = IF (t_2 > t) THEN t_2 ELSE t ENDIF IN LET t_3 = tmp_8 IN LET tmp_9 = IF (t_2 < t) THEN t_2 ELSE t ENDIF IN LET t_4 = tmp_9 IN LET t_5 = (sqrt(t_4)) IN LET tmp_12 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (tmp_12 > t_1) THEN tmp_13 ELSE t_1 ENDIF IN LET t_6 = tmp_11 IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_17 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (tmp_16 < t_1) THEN tmp_17 ELSE t_1 ENDIF IN LET t_7 = tmp_15 IN LET tmp_18 = IF (t_7 < t_3) THEN t_7 ELSE t_3 ENDIF IN LET t_8 = tmp_18 IN LET t_9 = ((sqrt((t_8 + (1)))) - (sqrt(t_8))) IN LET tmp_19 = IF (t_7 > t_3) THEN t_7 ELSE t_3 ENDIF IN LET t_10 = tmp_19 IN LET tmp_20 = IF (t_6 < t_10) THEN t_6 ELSE t_10 ENDIF IN LET t_11 = tmp_20 IN LET t_12 = (sqrt(t_11)) IN LET tmp_21 = IF (t_6 > t_10) THEN t_6 ELSE t_10 ENDIF IN LET t_13 = tmp_21 IN LET t_14 = ((sqrt((t_13 + (1)))) - (sqrt(t_13))) IN LET t_15 = (sqrt((t_11 + (1)))) IN LET tmp_22 = IF (t_9 <= (500000000000000023960868011929647991564706899225711822509765625e-67)) THEN (((((5e-1) * ((1) / (t_8 * (sqrt(((1) / t_8)))))) + ((1) / (t_5 + (sqrt(((1) + t_4)))))) + (t_15 - t_12)) + t_14) ELSE (((((sqrt((t_4 + (1)))) - t_5) + t_9) + ((1) / (t_12 + t_15))) + t_14) ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_3 := \mathsf{max}\left(t\_2, t\right)\\
t_4 := \mathsf{min}\left(t\_2, t\right)\\
t_5 := \sqrt{t\_4}\\
t_6 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_7 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_8 := \mathsf{min}\left(t\_7, t\_3\right)\\
t_9 := \sqrt{t\_8 + 1} - \sqrt{t\_8}\\
t_10 := \mathsf{max}\left(t\_7, t\_3\right)\\
t_11 := \mathsf{min}\left(t\_6, t\_10\right)\\
t_12 := \sqrt{t\_11}\\
t_13 := \mathsf{max}\left(t\_6, t\_10\right)\\
t_14 := \sqrt{t\_13 + 1} - \sqrt{t\_13}\\
t_15 := \sqrt{t\_11 + 1}\\
\mathbf{if}\;t\_9 \leq 5 \cdot 10^{-5}:\\
\;\;\;\;\left(\mathsf{fma}\left(0.5, \frac{1}{t\_8 \cdot \sqrt{\frac{1}{t\_8}}}, \frac{1}{t\_5 + \sqrt{1 + t\_4}}\right) + \left(t\_15 - t\_12\right)\right) + t\_14\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\sqrt{t\_4 + 1} - t\_5\right) + t\_9\right) + \frac{1}{t\_12 + t\_15}\right) + t\_14\\
\end{array}
if (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y)) < 5.0000000000000002e-5Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites49.2%
if 5.0000000000000002e-5 < (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y)) Initial program 92.0%
Applied rewrites93.8%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmax t_3 t))
(t_5 (fmin t_2 t_4))
(t_6 (sqrt (+ t_5 1.0)))
(t_7 (sqrt t_5))
(t_8 (fmin t_3 t))
(t_9 (sqrt t_8))
(t_10 (fmin (fmin x y) z))
(t_11 (sqrt t_10))
(t_12 (fmax t_2 t_4))
(t_13 (- (sqrt (+ t_12 1.0)) (sqrt t_12))))
(if (<= t_8 38884565.37637351)
(+
(+
(+ (- (sqrt (+ t_10 1.0)) t_11) (- (sqrt (+ t_8 1.0)) t_9))
(/ 1.0 (+ t_7 t_6)))
t_13)
(+
(+
(*
(+ (/ 1.0 (* (+ (sqrt (+ 1.0 t_10)) t_11) t_9)) (/ 0.5 t_8))
t_9)
(- t_6 t_7))
t_13))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmax(t_3, t);
double t_5 = fmin(t_2, t_4);
double t_6 = sqrt((t_5 + 1.0));
double t_7 = sqrt(t_5);
double t_8 = fmin(t_3, t);
double t_9 = sqrt(t_8);
double t_10 = fmin(fmin(x, y), z);
double t_11 = sqrt(t_10);
double t_12 = fmax(t_2, t_4);
double t_13 = sqrt((t_12 + 1.0)) - sqrt(t_12);
double tmp;
if (t_8 <= 38884565.37637351) {
tmp = (((sqrt((t_10 + 1.0)) - t_11) + (sqrt((t_8 + 1.0)) - t_9)) + (1.0 / (t_7 + t_6))) + t_13;
} else {
tmp = ((((1.0 / ((sqrt((1.0 + t_10)) + t_11) * t_9)) + (0.5 / t_8)) * t_9) + (t_6 - t_7)) + t_13;
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmax(t_3, t)
t_5 = fmin(t_2, t_4)
t_6 = sqrt((t_5 + 1.0d0))
t_7 = sqrt(t_5)
t_8 = fmin(t_3, t)
t_9 = sqrt(t_8)
t_10 = fmin(fmin(x, y), z)
t_11 = sqrt(t_10)
t_12 = fmax(t_2, t_4)
t_13 = sqrt((t_12 + 1.0d0)) - sqrt(t_12)
if (t_8 <= 38884565.37637351d0) then
tmp = (((sqrt((t_10 + 1.0d0)) - t_11) + (sqrt((t_8 + 1.0d0)) - t_9)) + (1.0d0 / (t_7 + t_6))) + t_13
else
tmp = ((((1.0d0 / ((sqrt((1.0d0 + t_10)) + t_11) * t_9)) + (0.5d0 / t_8)) * t_9) + (t_6 - t_7)) + t_13
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmax(t_3, t);
double t_5 = fmin(t_2, t_4);
double t_6 = Math.sqrt((t_5 + 1.0));
double t_7 = Math.sqrt(t_5);
double t_8 = fmin(t_3, t);
double t_9 = Math.sqrt(t_8);
double t_10 = fmin(fmin(x, y), z);
double t_11 = Math.sqrt(t_10);
double t_12 = fmax(t_2, t_4);
double t_13 = Math.sqrt((t_12 + 1.0)) - Math.sqrt(t_12);
double tmp;
if (t_8 <= 38884565.37637351) {
tmp = (((Math.sqrt((t_10 + 1.0)) - t_11) + (Math.sqrt((t_8 + 1.0)) - t_9)) + (1.0 / (t_7 + t_6))) + t_13;
} else {
tmp = ((((1.0 / ((Math.sqrt((1.0 + t_10)) + t_11) * t_9)) + (0.5 / t_8)) * t_9) + (t_6 - t_7)) + t_13;
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmax(t_3, t) t_5 = fmin(t_2, t_4) t_6 = math.sqrt((t_5 + 1.0)) t_7 = math.sqrt(t_5) t_8 = fmin(t_3, t) t_9 = math.sqrt(t_8) t_10 = fmin(fmin(x, y), z) t_11 = math.sqrt(t_10) t_12 = fmax(t_2, t_4) t_13 = math.sqrt((t_12 + 1.0)) - math.sqrt(t_12) tmp = 0 if t_8 <= 38884565.37637351: tmp = (((math.sqrt((t_10 + 1.0)) - t_11) + (math.sqrt((t_8 + 1.0)) - t_9)) + (1.0 / (t_7 + t_6))) + t_13 else: tmp = ((((1.0 / ((math.sqrt((1.0 + t_10)) + t_11) * t_9)) + (0.5 / t_8)) * t_9) + (t_6 - t_7)) + t_13 return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmax(t_3, t) t_5 = fmin(t_2, t_4) t_6 = sqrt(Float64(t_5 + 1.0)) t_7 = sqrt(t_5) t_8 = fmin(t_3, t) t_9 = sqrt(t_8) t_10 = fmin(fmin(x, y), z) t_11 = sqrt(t_10) t_12 = fmax(t_2, t_4) t_13 = Float64(sqrt(Float64(t_12 + 1.0)) - sqrt(t_12)) tmp = 0.0 if (t_8 <= 38884565.37637351) tmp = Float64(Float64(Float64(Float64(sqrt(Float64(t_10 + 1.0)) - t_11) + Float64(sqrt(Float64(t_8 + 1.0)) - t_9)) + Float64(1.0 / Float64(t_7 + t_6))) + t_13); else tmp = Float64(Float64(Float64(Float64(Float64(1.0 / Float64(Float64(sqrt(Float64(1.0 + t_10)) + t_11) * t_9)) + Float64(0.5 / t_8)) * t_9) + Float64(t_6 - t_7)) + t_13); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = max(t_3, t); t_5 = min(t_2, t_4); t_6 = sqrt((t_5 + 1.0)); t_7 = sqrt(t_5); t_8 = min(t_3, t); t_9 = sqrt(t_8); t_10 = min(min(x, y), z); t_11 = sqrt(t_10); t_12 = max(t_2, t_4); t_13 = sqrt((t_12 + 1.0)) - sqrt(t_12); tmp = 0.0; if (t_8 <= 38884565.37637351) tmp = (((sqrt((t_10 + 1.0)) - t_11) + (sqrt((t_8 + 1.0)) - t_9)) + (1.0 / (t_7 + t_6))) + t_13; else tmp = ((((1.0 / ((sqrt((1.0 + t_10)) + t_11) * t_9)) + (0.5 / t_8)) * t_9) + (t_6 - t_7)) + t_13; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Max[t$95$3, t], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$2, t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$7 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$8 = N[Min[t$95$3, t], $MachinePrecision]}, Block[{t$95$9 = N[Sqrt[t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$4], $MachinePrecision]}, Block[{t$95$13 = N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$12], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$8, 38884565.37637351], N[(N[(N[(N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision] + N[(N[Sqrt[N[(t$95$8 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$9), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$7 + t$95$6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$13), $MachinePrecision], N[(N[(N[(N[(N[(1.0 / N[(N[(N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision] + t$95$11), $MachinePrecision] * t$95$9), $MachinePrecision]), $MachinePrecision] + N[(0.5 / t$95$8), $MachinePrecision]), $MachinePrecision] * t$95$9), $MachinePrecision] + N[(t$95$6 - t$95$7), $MachinePrecision]), $MachinePrecision] + t$95$13), $MachinePrecision]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_12 = IF (t_3 > t) THEN t_3 ELSE t ENDIF IN LET t_4 = tmp_12 IN LET tmp_13 = IF (t_2 < t_4) THEN t_2 ELSE t_4 ENDIF IN LET t_5 = tmp_13 IN LET t_6 = (sqrt((t_5 + (1)))) IN LET t_7 = (sqrt(t_5)) IN LET tmp_14 = IF (t_3 < t) THEN t_3 ELSE t ENDIF IN LET t_8 = tmp_14 IN LET t_9 = (sqrt(t_8)) IN LET tmp_17 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_18 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_16 = IF (tmp_17 < z) THEN tmp_18 ELSE z ENDIF IN LET t_10 = tmp_16 IN LET t_11 = (sqrt(t_10)) IN LET tmp_19 = IF (t_2 > t_4) THEN t_2 ELSE t_4 ENDIF IN LET t_12 = tmp_19 IN LET t_13 = ((sqrt((t_12 + (1)))) - (sqrt(t_12))) IN LET tmp_20 = IF (t_8 <= (38884565376373507082462310791015625e-27)) THEN (((((sqrt((t_10 + (1)))) - t_11) + ((sqrt((t_8 + (1)))) - t_9)) + ((1) / (t_7 + t_6))) + t_13) ELSE ((((((1) / (((sqrt(((1) + t_10))) + t_11) * t_9)) + ((5e-1) / t_8)) * t_9) + (t_6 - t_7)) + t_13) ENDIF IN tmp_20 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{max}\left(t\_3, t\right)\\
t_5 := \mathsf{min}\left(t\_2, t\_4\right)\\
t_6 := \sqrt{t\_5 + 1}\\
t_7 := \sqrt{t\_5}\\
t_8 := \mathsf{min}\left(t\_3, t\right)\\
t_9 := \sqrt{t\_8}\\
t_10 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_11 := \sqrt{t\_10}\\
t_12 := \mathsf{max}\left(t\_2, t\_4\right)\\
t_13 := \sqrt{t\_12 + 1} - \sqrt{t\_12}\\
\mathbf{if}\;t\_8 \leq 38884565.37637351:\\
\;\;\;\;\left(\left(\left(\sqrt{t\_10 + 1} - t\_11\right) + \left(\sqrt{t\_8 + 1} - t\_9\right)\right) + \frac{1}{t\_7 + t\_6}\right) + t\_13\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{1}{\left(\sqrt{1 + t\_10} + t\_11\right) \cdot t\_9} + \frac{0.5}{t\_8}\right) \cdot t\_9 + \left(t\_6 - t\_7\right)\right) + t\_13\\
\end{array}
if y < 38884565.376373507Initial program 92.0%
Applied rewrites93.8%
if 38884565.376373507 < y Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites49.2%
Applied rewrites49.2%
Applied rewrites49.1%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (sqrt (+ 1.0 t_5)))
(t_8 (fmax t_4 t))
(t_9 (fmax t_3 t_8))
(t_10 (fmin t_2 t_9))
(t_11 (fmin t_3 t_8))
(t_12 (sqrt t_10))
(t_13 (sqrt t_11))
(t_14 (- (sqrt (+ t_11 1.0)) t_13))
(t_15 (- (sqrt (+ t_10 1.0)) t_12))
(t_16 (+ (+ (- (sqrt (+ t_5 1.0)) t_6) t_14) t_15))
(t_17 (fmax t_2 t_9))
(t_18 (sqrt t_17)))
(if (<= t_16 1.0)
(+ (+ (/ 1.0 (+ t_6 t_7)) t_15) (/ 0.5 t_18))
(if (<= t_16 2.999995)
(-
(+
t_7
(+ (sqrt (+ 1.0 t_11)) (/ 1.0 (+ t_12 (sqrt (+ 1.0 t_10))))))
(+ t_6 t_13))
(+
(+ (+ (- 1.0 t_6) t_14) (- 1.0 t_12))
(/ 1.0 (+ t_18 (sqrt (+ t_17 1.0)))))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = sqrt((1.0 + t_5));
double t_8 = fmax(t_4, t);
double t_9 = fmax(t_3, t_8);
double t_10 = fmin(t_2, t_9);
double t_11 = fmin(t_3, t_8);
double t_12 = sqrt(t_10);
double t_13 = sqrt(t_11);
double t_14 = sqrt((t_11 + 1.0)) - t_13;
double t_15 = sqrt((t_10 + 1.0)) - t_12;
double t_16 = ((sqrt((t_5 + 1.0)) - t_6) + t_14) + t_15;
double t_17 = fmax(t_2, t_9);
double t_18 = sqrt(t_17);
double tmp;
if (t_16 <= 1.0) {
tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_18);
} else if (t_16 <= 2.999995) {
tmp = (t_7 + (sqrt((1.0 + t_11)) + (1.0 / (t_12 + sqrt((1.0 + t_10)))))) - (t_6 + t_13);
} else {
tmp = (((1.0 - t_6) + t_14) + (1.0 - t_12)) + (1.0 / (t_18 + sqrt((t_17 + 1.0))));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_17
real(8) :: t_18
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = sqrt((1.0d0 + t_5))
t_8 = fmax(t_4, t)
t_9 = fmax(t_3, t_8)
t_10 = fmin(t_2, t_9)
t_11 = fmin(t_3, t_8)
t_12 = sqrt(t_10)
t_13 = sqrt(t_11)
t_14 = sqrt((t_11 + 1.0d0)) - t_13
t_15 = sqrt((t_10 + 1.0d0)) - t_12
t_16 = ((sqrt((t_5 + 1.0d0)) - t_6) + t_14) + t_15
t_17 = fmax(t_2, t_9)
t_18 = sqrt(t_17)
if (t_16 <= 1.0d0) then
tmp = ((1.0d0 / (t_6 + t_7)) + t_15) + (0.5d0 / t_18)
else if (t_16 <= 2.999995d0) then
tmp = (t_7 + (sqrt((1.0d0 + t_11)) + (1.0d0 / (t_12 + sqrt((1.0d0 + t_10)))))) - (t_6 + t_13)
else
tmp = (((1.0d0 - t_6) + t_14) + (1.0d0 - t_12)) + (1.0d0 / (t_18 + sqrt((t_17 + 1.0d0))))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = Math.sqrt((1.0 + t_5));
double t_8 = fmax(t_4, t);
double t_9 = fmax(t_3, t_8);
double t_10 = fmin(t_2, t_9);
double t_11 = fmin(t_3, t_8);
double t_12 = Math.sqrt(t_10);
double t_13 = Math.sqrt(t_11);
double t_14 = Math.sqrt((t_11 + 1.0)) - t_13;
double t_15 = Math.sqrt((t_10 + 1.0)) - t_12;
double t_16 = ((Math.sqrt((t_5 + 1.0)) - t_6) + t_14) + t_15;
double t_17 = fmax(t_2, t_9);
double t_18 = Math.sqrt(t_17);
double tmp;
if (t_16 <= 1.0) {
tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_18);
} else if (t_16 <= 2.999995) {
tmp = (t_7 + (Math.sqrt((1.0 + t_11)) + (1.0 / (t_12 + Math.sqrt((1.0 + t_10)))))) - (t_6 + t_13);
} else {
tmp = (((1.0 - t_6) + t_14) + (1.0 - t_12)) + (1.0 / (t_18 + Math.sqrt((t_17 + 1.0))));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = math.sqrt((1.0 + t_5)) t_8 = fmax(t_4, t) t_9 = fmax(t_3, t_8) t_10 = fmin(t_2, t_9) t_11 = fmin(t_3, t_8) t_12 = math.sqrt(t_10) t_13 = math.sqrt(t_11) t_14 = math.sqrt((t_11 + 1.0)) - t_13 t_15 = math.sqrt((t_10 + 1.0)) - t_12 t_16 = ((math.sqrt((t_5 + 1.0)) - t_6) + t_14) + t_15 t_17 = fmax(t_2, t_9) t_18 = math.sqrt(t_17) tmp = 0 if t_16 <= 1.0: tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_18) elif t_16 <= 2.999995: tmp = (t_7 + (math.sqrt((1.0 + t_11)) + (1.0 / (t_12 + math.sqrt((1.0 + t_10)))))) - (t_6 + t_13) else: tmp = (((1.0 - t_6) + t_14) + (1.0 - t_12)) + (1.0 / (t_18 + math.sqrt((t_17 + 1.0)))) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = sqrt(Float64(1.0 + t_5)) t_8 = fmax(t_4, t) t_9 = fmax(t_3, t_8) t_10 = fmin(t_2, t_9) t_11 = fmin(t_3, t_8) t_12 = sqrt(t_10) t_13 = sqrt(t_11) t_14 = Float64(sqrt(Float64(t_11 + 1.0)) - t_13) t_15 = Float64(sqrt(Float64(t_10 + 1.0)) - t_12) t_16 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + t_14) + t_15) t_17 = fmax(t_2, t_9) t_18 = sqrt(t_17) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(Float64(Float64(1.0 / Float64(t_6 + t_7)) + t_15) + Float64(0.5 / t_18)); elseif (t_16 <= 2.999995) tmp = Float64(Float64(t_7 + Float64(sqrt(Float64(1.0 + t_11)) + Float64(1.0 / Float64(t_12 + sqrt(Float64(1.0 + t_10)))))) - Float64(t_6 + t_13)); else tmp = Float64(Float64(Float64(Float64(1.0 - t_6) + t_14) + Float64(1.0 - t_12)) + Float64(1.0 / Float64(t_18 + sqrt(Float64(t_17 + 1.0))))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = sqrt((1.0 + t_5)); t_8 = max(t_4, t); t_9 = max(t_3, t_8); t_10 = min(t_2, t_9); t_11 = min(t_3, t_8); t_12 = sqrt(t_10); t_13 = sqrt(t_11); t_14 = sqrt((t_11 + 1.0)) - t_13; t_15 = sqrt((t_10 + 1.0)) - t_12; t_16 = ((sqrt((t_5 + 1.0)) - t_6) + t_14) + t_15; t_17 = max(t_2, t_9); t_18 = sqrt(t_17); tmp = 0.0; if (t_16 <= 1.0) tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_18); elseif (t_16 <= 2.999995) tmp = (t_7 + (sqrt((1.0 + t_11)) + (1.0 / (t_12 + sqrt((1.0 + t_10)))))) - (t_6 + t_13); else tmp = (((1.0 - t_6) + t_14) + (1.0 - t_12)) + (1.0 / (t_18 + sqrt((t_17 + 1.0)))); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$9 = N[Max[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$2, t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$14 = N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]}, Block[{t$95$15 = N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$12), $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + t$95$14), $MachinePrecision] + t$95$15), $MachinePrecision]}, Block[{t$95$17 = N[Max[t$95$2, t$95$9], $MachinePrecision]}, Block[{t$95$18 = N[Sqrt[t$95$17], $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(N[(N[(1.0 / N[(t$95$6 + t$95$7), $MachinePrecision]), $MachinePrecision] + t$95$15), $MachinePrecision] + N[(0.5 / t$95$18), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 2.999995], N[(N[(t$95$7 + N[(N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(t$95$12 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$13), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(1.0 - t$95$6), $MachinePrecision] + t$95$14), $MachinePrecision] + N[(1.0 - t$95$12), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$18 + N[Sqrt[N[(t$95$17 + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET t_7 = (sqrt(((1) + t_5))) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_8 = tmp_17 IN LET tmp_18 = IF (t_3 > t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_9 = tmp_18 IN LET tmp_19 = IF (t_2 < t_9) THEN t_2 ELSE t_9 ENDIF IN LET t_10 = tmp_19 IN LET tmp_20 = IF (t_3 < t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_11 = tmp_20 IN LET t_12 = (sqrt(t_10)) IN LET t_13 = (sqrt(t_11)) IN LET t_14 = ((sqrt((t_11 + (1)))) - t_13) IN LET t_15 = ((sqrt((t_10 + (1)))) - t_12) IN LET t_16 = ((((sqrt((t_5 + (1)))) - t_6) + t_14) + t_15) IN LET tmp_21 = IF (t_2 > t_9) THEN t_2 ELSE t_9 ENDIF IN LET t_17 = tmp_21 IN LET t_18 = (sqrt(t_17)) IN LET tmp_23 = IF (t_16 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((t_7 + ((sqrt(((1) + t_11))) + ((1) / (t_12 + (sqrt(((1) + t_10))))))) - (t_6 + t_13)) ELSE (((((1) - t_6) + t_14) + ((1) - t_12)) + ((1) / (t_18 + (sqrt((t_17 + (1))))))) ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN ((((1) / (t_6 + t_7)) + t_15) + ((5e-1) / t_18)) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \sqrt{1 + t\_5}\\
t_8 := \mathsf{max}\left(t\_4, t\right)\\
t_9 := \mathsf{max}\left(t\_3, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_2, t\_9\right)\\
t_11 := \mathsf{min}\left(t\_3, t\_8\right)\\
t_12 := \sqrt{t\_10}\\
t_13 := \sqrt{t\_11}\\
t_14 := \sqrt{t\_11 + 1} - t\_13\\
t_15 := \sqrt{t\_10 + 1} - t\_12\\
t_16 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + t\_14\right) + t\_15\\
t_17 := \mathsf{max}\left(t\_2, t\_9\right)\\
t_18 := \sqrt{t\_17}\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;\left(\frac{1}{t\_6 + t\_7} + t\_15\right) + \frac{0.5}{t\_18}\\
\mathbf{elif}\;t\_16 \leq 2.999995:\\
\;\;\;\;\left(t\_7 + \left(\sqrt{1 + t\_11} + \frac{1}{t\_12 + \sqrt{1 + t\_10}}\right)\right) - \left(t\_6 + t\_13\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(1 - t\_6\right) + t\_14\right) + \left(1 - t\_12\right)\right) + \frac{1}{t\_18 + \sqrt{t\_17 + 1}}\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Taylor expanded in t around inf
Applied rewrites28.6%
Taylor expanded in t around 0
Applied rewrites28.6%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in z around 0
Applied rewrites49.4%
Taylor expanded in x around 0
Applied rewrites25.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (- (sqrt (+ t_2 1.0)) (sqrt t_2)))
(t_4 (fmin (fmin x y) z))
(t_5 (fmax t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmin t_4 t))
(t_8 (sqrt t_7))
(t_9 (- (sqrt (+ t_7 1.0)) t_8))
(t_10 (fmin (fmax x y) t_1)))
(if (<= t_9 0.2)
(+ (+ (/ 1.0 (+ t_8 (sqrt (+ 1.0 t_7)))) t_3) (/ 0.5 t_6))
(+
(+ (+ t_9 (/ 1.0 (+ (sqrt t_10) (sqrt (+ t_10 1.0))))) t_3)
(- (sqrt (+ t_5 1.0)) t_6)))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = sqrt((t_2 + 1.0)) - sqrt(t_2);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmax(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmin(t_4, t);
double t_8 = sqrt(t_7);
double t_9 = sqrt((t_7 + 1.0)) - t_8;
double t_10 = fmin(fmax(x, y), t_1);
double tmp;
if (t_9 <= 0.2) {
tmp = ((1.0 / (t_8 + sqrt((1.0 + t_7)))) + t_3) + (0.5 / t_6);
} else {
tmp = ((t_9 + (1.0 / (sqrt(t_10) + sqrt((t_10 + 1.0))))) + t_3) + (sqrt((t_5 + 1.0)) - t_6);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = sqrt((t_2 + 1.0d0)) - sqrt(t_2)
t_4 = fmin(fmin(x, y), z)
t_5 = fmax(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmin(t_4, t)
t_8 = sqrt(t_7)
t_9 = sqrt((t_7 + 1.0d0)) - t_8
t_10 = fmin(fmax(x, y), t_1)
if (t_9 <= 0.2d0) then
tmp = ((1.0d0 / (t_8 + sqrt((1.0d0 + t_7)))) + t_3) + (0.5d0 / t_6)
else
tmp = ((t_9 + (1.0d0 / (sqrt(t_10) + sqrt((t_10 + 1.0d0))))) + t_3) + (sqrt((t_5 + 1.0d0)) - t_6)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = Math.sqrt((t_2 + 1.0)) - Math.sqrt(t_2);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmax(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmin(t_4, t);
double t_8 = Math.sqrt(t_7);
double t_9 = Math.sqrt((t_7 + 1.0)) - t_8;
double t_10 = fmin(fmax(x, y), t_1);
double tmp;
if (t_9 <= 0.2) {
tmp = ((1.0 / (t_8 + Math.sqrt((1.0 + t_7)))) + t_3) + (0.5 / t_6);
} else {
tmp = ((t_9 + (1.0 / (Math.sqrt(t_10) + Math.sqrt((t_10 + 1.0))))) + t_3) + (Math.sqrt((t_5 + 1.0)) - t_6);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = math.sqrt((t_2 + 1.0)) - math.sqrt(t_2) t_4 = fmin(fmin(x, y), z) t_5 = fmax(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmin(t_4, t) t_8 = math.sqrt(t_7) t_9 = math.sqrt((t_7 + 1.0)) - t_8 t_10 = fmin(fmax(x, y), t_1) tmp = 0 if t_9 <= 0.2: tmp = ((1.0 / (t_8 + math.sqrt((1.0 + t_7)))) + t_3) + (0.5 / t_6) else: tmp = ((t_9 + (1.0 / (math.sqrt(t_10) + math.sqrt((t_10 + 1.0))))) + t_3) + (math.sqrt((t_5 + 1.0)) - t_6) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = Float64(sqrt(Float64(t_2 + 1.0)) - sqrt(t_2)) t_4 = fmin(fmin(x, y), z) t_5 = fmax(t_4, t) t_6 = sqrt(t_5) t_7 = fmin(t_4, t) t_8 = sqrt(t_7) t_9 = Float64(sqrt(Float64(t_7 + 1.0)) - t_8) t_10 = fmin(fmax(x, y), t_1) tmp = 0.0 if (t_9 <= 0.2) tmp = Float64(Float64(Float64(1.0 / Float64(t_8 + sqrt(Float64(1.0 + t_7)))) + t_3) + Float64(0.5 / t_6)); else tmp = Float64(Float64(Float64(t_9 + Float64(1.0 / Float64(sqrt(t_10) + sqrt(Float64(t_10 + 1.0))))) + t_3) + Float64(sqrt(Float64(t_5 + 1.0)) - t_6)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = sqrt((t_2 + 1.0)) - sqrt(t_2); t_4 = min(min(x, y), z); t_5 = max(t_4, t); t_6 = sqrt(t_5); t_7 = min(t_4, t); t_8 = sqrt(t_7); t_9 = sqrt((t_7 + 1.0)) - t_8; t_10 = min(max(x, y), t_1); tmp = 0.0; if (t_9 <= 0.2) tmp = ((1.0 / (t_8 + sqrt((1.0 + t_7)))) + t_3) + (0.5 / t_6); else tmp = ((t_9 + (1.0 / (sqrt(t_10) + sqrt((t_10 + 1.0))))) + t_3) + (sqrt((t_5 + 1.0)) - t_6); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Sqrt[t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[(N[Sqrt[N[(t$95$7 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$8), $MachinePrecision]}, Block[{t$95$10 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, If[LessEqual[t$95$9, 0.2], N[(N[(N[(1.0 / N[(t$95$8 + N[Sqrt[N[(1.0 + t$95$7), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision] + N[(0.5 / t$95$6), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$9 + N[(1.0 / N[(N[Sqrt[t$95$10], $MachinePrecision] + N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision] + N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET t_3 = ((sqrt((t_2 + (1)))) - (sqrt(t_2))) IN LET tmp_10 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < z) THEN tmp_11 ELSE z ENDIF IN LET t_4 = tmp_9 IN LET tmp_12 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_12 IN LET t_6 = (sqrt(t_5)) IN LET tmp_13 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_13 IN LET t_8 = (sqrt(t_7)) IN LET t_9 = ((sqrt((t_7 + (1)))) - t_8) IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_17 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (tmp_16 < t_1) THEN tmp_17 ELSE t_1 ENDIF IN LET t_10 = tmp_15 IN LET tmp_18 = IF (t_9 <= (200000000000000011102230246251565404236316680908203125e-54)) THEN ((((1) / (t_8 + (sqrt(((1) + t_7))))) + t_3) + ((5e-1) / t_6)) ELSE (((t_9 + ((1) / ((sqrt(t_10)) + (sqrt((t_10 + (1))))))) + t_3) + ((sqrt((t_5 + (1)))) - t_6)) ENDIF IN tmp_18 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \sqrt{t\_2 + 1} - \sqrt{t\_2}\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{max}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{min}\left(t\_4, t\right)\\
t_8 := \sqrt{t\_7}\\
t_9 := \sqrt{t\_7 + 1} - t\_8\\
t_10 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
\mathbf{if}\;t\_9 \leq 0.2:\\
\;\;\;\;\left(\frac{1}{t\_8 + \sqrt{1 + t\_7}} + t\_3\right) + \frac{0.5}{t\_6}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t\_9 + \frac{1}{\sqrt{t\_10} + \sqrt{t\_10 + 1}}\right) + t\_3\right) + \left(\sqrt{t\_5 + 1} - t\_6\right)\\
\end{array}
if (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) < 0.20000000000000001Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Taylor expanded in t around inf
Applied rewrites28.6%
Taylor expanded in t around 0
Applied rewrites28.6%
if 0.20000000000000001 < (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) Initial program 92.0%
Applied rewrites93.9%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (sqrt (+ 1.0 t_5)))
(t_8 (fmax t_4 t))
(t_9 (fmin t_3 t_8))
(t_10 (fmax t_3 t_8))
(t_11 (fmin t_2 t_10))
(t_12 (sqrt t_11))
(t_13 (sqrt t_9))
(t_14 (+ t_6 t_13))
(t_15 (- (sqrt (+ t_11 1.0)) t_12))
(t_16
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_9 1.0)) t_13))
t_15))
(t_17 (fmax t_2 t_10))
(t_18 (+ t_17 1.0))
(t_19 (sqrt t_17)))
(if (<= t_16 1.0)
(+ (+ (/ 1.0 (+ t_6 t_7)) t_15) (/ 0.5 t_19))
(if (<= t_16 2.999995)
(-
(+
t_7
(+ (sqrt (+ 1.0 t_9)) (/ 1.0 (+ t_12 (sqrt (+ 1.0 t_11))))))
t_14)
(+
(+ (- 2.0 t_14) (- 1.0 t_12))
(/ (- t_18 t_17) (+ t_19 (sqrt t_18))))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = sqrt((1.0 + t_5));
double t_8 = fmax(t_4, t);
double t_9 = fmin(t_3, t_8);
double t_10 = fmax(t_3, t_8);
double t_11 = fmin(t_2, t_10);
double t_12 = sqrt(t_11);
double t_13 = sqrt(t_9);
double t_14 = t_6 + t_13;
double t_15 = sqrt((t_11 + 1.0)) - t_12;
double t_16 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_9 + 1.0)) - t_13)) + t_15;
double t_17 = fmax(t_2, t_10);
double t_18 = t_17 + 1.0;
double t_19 = sqrt(t_17);
double tmp;
if (t_16 <= 1.0) {
tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_19);
} else if (t_16 <= 2.999995) {
tmp = (t_7 + (sqrt((1.0 + t_9)) + (1.0 / (t_12 + sqrt((1.0 + t_11)))))) - t_14;
} else {
tmp = ((2.0 - t_14) + (1.0 - t_12)) + ((t_18 - t_17) / (t_19 + sqrt(t_18)));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_17
real(8) :: t_18
real(8) :: t_19
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = sqrt((1.0d0 + t_5))
t_8 = fmax(t_4, t)
t_9 = fmin(t_3, t_8)
t_10 = fmax(t_3, t_8)
t_11 = fmin(t_2, t_10)
t_12 = sqrt(t_11)
t_13 = sqrt(t_9)
t_14 = t_6 + t_13
t_15 = sqrt((t_11 + 1.0d0)) - t_12
t_16 = ((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_9 + 1.0d0)) - t_13)) + t_15
t_17 = fmax(t_2, t_10)
t_18 = t_17 + 1.0d0
t_19 = sqrt(t_17)
if (t_16 <= 1.0d0) then
tmp = ((1.0d0 / (t_6 + t_7)) + t_15) + (0.5d0 / t_19)
else if (t_16 <= 2.999995d0) then
tmp = (t_7 + (sqrt((1.0d0 + t_9)) + (1.0d0 / (t_12 + sqrt((1.0d0 + t_11)))))) - t_14
else
tmp = ((2.0d0 - t_14) + (1.0d0 - t_12)) + ((t_18 - t_17) / (t_19 + sqrt(t_18)))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = Math.sqrt((1.0 + t_5));
double t_8 = fmax(t_4, t);
double t_9 = fmin(t_3, t_8);
double t_10 = fmax(t_3, t_8);
double t_11 = fmin(t_2, t_10);
double t_12 = Math.sqrt(t_11);
double t_13 = Math.sqrt(t_9);
double t_14 = t_6 + t_13;
double t_15 = Math.sqrt((t_11 + 1.0)) - t_12;
double t_16 = ((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_9 + 1.0)) - t_13)) + t_15;
double t_17 = fmax(t_2, t_10);
double t_18 = t_17 + 1.0;
double t_19 = Math.sqrt(t_17);
double tmp;
if (t_16 <= 1.0) {
tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_19);
} else if (t_16 <= 2.999995) {
tmp = (t_7 + (Math.sqrt((1.0 + t_9)) + (1.0 / (t_12 + Math.sqrt((1.0 + t_11)))))) - t_14;
} else {
tmp = ((2.0 - t_14) + (1.0 - t_12)) + ((t_18 - t_17) / (t_19 + Math.sqrt(t_18)));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = math.sqrt((1.0 + t_5)) t_8 = fmax(t_4, t) t_9 = fmin(t_3, t_8) t_10 = fmax(t_3, t_8) t_11 = fmin(t_2, t_10) t_12 = math.sqrt(t_11) t_13 = math.sqrt(t_9) t_14 = t_6 + t_13 t_15 = math.sqrt((t_11 + 1.0)) - t_12 t_16 = ((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_9 + 1.0)) - t_13)) + t_15 t_17 = fmax(t_2, t_10) t_18 = t_17 + 1.0 t_19 = math.sqrt(t_17) tmp = 0 if t_16 <= 1.0: tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_19) elif t_16 <= 2.999995: tmp = (t_7 + (math.sqrt((1.0 + t_9)) + (1.0 / (t_12 + math.sqrt((1.0 + t_11)))))) - t_14 else: tmp = ((2.0 - t_14) + (1.0 - t_12)) + ((t_18 - t_17) / (t_19 + math.sqrt(t_18))) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = sqrt(Float64(1.0 + t_5)) t_8 = fmax(t_4, t) t_9 = fmin(t_3, t_8) t_10 = fmax(t_3, t_8) t_11 = fmin(t_2, t_10) t_12 = sqrt(t_11) t_13 = sqrt(t_9) t_14 = Float64(t_6 + t_13) t_15 = Float64(sqrt(Float64(t_11 + 1.0)) - t_12) t_16 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_9 + 1.0)) - t_13)) + t_15) t_17 = fmax(t_2, t_10) t_18 = Float64(t_17 + 1.0) t_19 = sqrt(t_17) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(Float64(Float64(1.0 / Float64(t_6 + t_7)) + t_15) + Float64(0.5 / t_19)); elseif (t_16 <= 2.999995) tmp = Float64(Float64(t_7 + Float64(sqrt(Float64(1.0 + t_9)) + Float64(1.0 / Float64(t_12 + sqrt(Float64(1.0 + t_11)))))) - t_14); else tmp = Float64(Float64(Float64(2.0 - t_14) + Float64(1.0 - t_12)) + Float64(Float64(t_18 - t_17) / Float64(t_19 + sqrt(t_18)))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = sqrt((1.0 + t_5)); t_8 = max(t_4, t); t_9 = min(t_3, t_8); t_10 = max(t_3, t_8); t_11 = min(t_2, t_10); t_12 = sqrt(t_11); t_13 = sqrt(t_9); t_14 = t_6 + t_13; t_15 = sqrt((t_11 + 1.0)) - t_12; t_16 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_9 + 1.0)) - t_13)) + t_15; t_17 = max(t_2, t_10); t_18 = t_17 + 1.0; t_19 = sqrt(t_17); tmp = 0.0; if (t_16 <= 1.0) tmp = ((1.0 / (t_6 + t_7)) + t_15) + (0.5 / t_19); elseif (t_16 <= 2.999995) tmp = (t_7 + (sqrt((1.0 + t_9)) + (1.0 / (t_12 + sqrt((1.0 + t_11)))))) - t_14; else tmp = ((2.0 - t_14) + (1.0 - t_12)) + ((t_18 - t_17) / (t_19 + sqrt(t_18))); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Max[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$2, t$95$10], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$14 = N[(t$95$6 + t$95$13), $MachinePrecision]}, Block[{t$95$15 = N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$12), $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision] + t$95$15), $MachinePrecision]}, Block[{t$95$17 = N[Max[t$95$2, t$95$10], $MachinePrecision]}, Block[{t$95$18 = N[(t$95$17 + 1.0), $MachinePrecision]}, Block[{t$95$19 = N[Sqrt[t$95$17], $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(N[(N[(1.0 / N[(t$95$6 + t$95$7), $MachinePrecision]), $MachinePrecision] + t$95$15), $MachinePrecision] + N[(0.5 / t$95$19), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 2.999995], N[(N[(t$95$7 + N[(N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(t$95$12 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$14), $MachinePrecision], N[(N[(N[(2.0 - t$95$14), $MachinePrecision] + N[(1.0 - t$95$12), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$18 - t$95$17), $MachinePrecision] / N[(t$95$19 + N[Sqrt[t$95$18], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET t_7 = (sqrt(((1) + t_5))) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_8 = tmp_17 IN LET tmp_18 = IF (t_3 < t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_9 = tmp_18 IN LET tmp_19 = IF (t_3 > t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_10 = tmp_19 IN LET tmp_20 = IF (t_2 < t_10) THEN t_2 ELSE t_10 ENDIF IN LET t_11 = tmp_20 IN LET t_12 = (sqrt(t_11)) IN LET t_13 = (sqrt(t_9)) IN LET t_14 = (t_6 + t_13) IN LET t_15 = ((sqrt((t_11 + (1)))) - t_12) IN LET t_16 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_9 + (1)))) - t_13)) + t_15) IN LET tmp_21 = IF (t_2 > t_10) THEN t_2 ELSE t_10 ENDIF IN LET t_17 = tmp_21 IN LET t_18 = (t_17 + (1)) IN LET t_19 = (sqrt(t_17)) IN LET tmp_23 = IF (t_16 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((t_7 + ((sqrt(((1) + t_9))) + ((1) / (t_12 + (sqrt(((1) + t_11))))))) - t_14) ELSE ((((2) - t_14) + ((1) - t_12)) + ((t_18 - t_17) / (t_19 + (sqrt(t_18))))) ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN ((((1) / (t_6 + t_7)) + t_15) + ((5e-1) / t_19)) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \sqrt{1 + t\_5}\\
t_8 := \mathsf{max}\left(t\_4, t\right)\\
t_9 := \mathsf{min}\left(t\_3, t\_8\right)\\
t_10 := \mathsf{max}\left(t\_3, t\_8\right)\\
t_11 := \mathsf{min}\left(t\_2, t\_10\right)\\
t_12 := \sqrt{t\_11}\\
t_13 := \sqrt{t\_9}\\
t_14 := t\_6 + t\_13\\
t_15 := \sqrt{t\_11 + 1} - t\_12\\
t_16 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_9 + 1} - t\_13\right)\right) + t\_15\\
t_17 := \mathsf{max}\left(t\_2, t\_10\right)\\
t_18 := t\_17 + 1\\
t_19 := \sqrt{t\_17}\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;\left(\frac{1}{t\_6 + t\_7} + t\_15\right) + \frac{0.5}{t\_19}\\
\mathbf{elif}\;t\_16 \leq 2.999995:\\
\;\;\;\;\left(t\_7 + \left(\sqrt{1 + t\_9} + \frac{1}{t\_12 + \sqrt{1 + t\_11}}\right)\right) - t\_14\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - t\_14\right) + \left(1 - t\_12\right)\right) + \frac{t\_18 - t\_17}{t\_19 + \sqrt{t\_18}}\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Taylor expanded in t around inf
Applied rewrites28.6%
Taylor expanded in t around 0
Applied rewrites28.6%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmin (fmin x y) z))
(t_2 (fmin t_1 t))
(t_3 (sqrt t_2))
(t_4 (sqrt (+ 1.0 t_2)))
(t_5 (fmax (fmin x y) z))
(t_6 (fmax (fmax x y) t_5))
(t_7 (- (sqrt (+ t_6 1.0)) (sqrt t_6)))
(t_8 (fmin (fmax x y) t_5))
(t_9 (sqrt t_8))
(t_10
(+ (- (sqrt (+ t_2 1.0)) t_3) (- (sqrt (+ t_8 1.0)) t_9)))
(t_11 (fmax t_1 t))
(t_12 (sqrt t_11))
(t_13 (- (sqrt (+ t_11 1.0)) t_12)))
(if (<= t_10 0.2)
(+ (+ (/ 1.0 (+ t_3 t_4)) t_7) (/ 0.5 t_12))
(if (<= t_10 1.999998)
(+ (- (+ t_4 (/ 1.0 (+ t_9 (sqrt (+ 1.0 t_8))))) t_3) t_13)
(+ (+ (- 2.0 (+ t_3 t_9)) t_7) t_13)))))double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmin(t_1, t);
double t_3 = sqrt(t_2);
double t_4 = sqrt((1.0 + t_2));
double t_5 = fmax(fmin(x, y), z);
double t_6 = fmax(fmax(x, y), t_5);
double t_7 = sqrt((t_6 + 1.0)) - sqrt(t_6);
double t_8 = fmin(fmax(x, y), t_5);
double t_9 = sqrt(t_8);
double t_10 = (sqrt((t_2 + 1.0)) - t_3) + (sqrt((t_8 + 1.0)) - t_9);
double t_11 = fmax(t_1, t);
double t_12 = sqrt(t_11);
double t_13 = sqrt((t_11 + 1.0)) - t_12;
double tmp;
if (t_10 <= 0.2) {
tmp = ((1.0 / (t_3 + t_4)) + t_7) + (0.5 / t_12);
} else if (t_10 <= 1.999998) {
tmp = ((t_4 + (1.0 / (t_9 + sqrt((1.0 + t_8))))) - t_3) + t_13;
} else {
tmp = ((2.0 - (t_3 + t_9)) + t_7) + t_13;
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmin(fmin(x, y), z)
t_2 = fmin(t_1, t)
t_3 = sqrt(t_2)
t_4 = sqrt((1.0d0 + t_2))
t_5 = fmax(fmin(x, y), z)
t_6 = fmax(fmax(x, y), t_5)
t_7 = sqrt((t_6 + 1.0d0)) - sqrt(t_6)
t_8 = fmin(fmax(x, y), t_5)
t_9 = sqrt(t_8)
t_10 = (sqrt((t_2 + 1.0d0)) - t_3) + (sqrt((t_8 + 1.0d0)) - t_9)
t_11 = fmax(t_1, t)
t_12 = sqrt(t_11)
t_13 = sqrt((t_11 + 1.0d0)) - t_12
if (t_10 <= 0.2d0) then
tmp = ((1.0d0 / (t_3 + t_4)) + t_7) + (0.5d0 / t_12)
else if (t_10 <= 1.999998d0) then
tmp = ((t_4 + (1.0d0 / (t_9 + sqrt((1.0d0 + t_8))))) - t_3) + t_13
else
tmp = ((2.0d0 - (t_3 + t_9)) + t_7) + t_13
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmin(t_1, t);
double t_3 = Math.sqrt(t_2);
double t_4 = Math.sqrt((1.0 + t_2));
double t_5 = fmax(fmin(x, y), z);
double t_6 = fmax(fmax(x, y), t_5);
double t_7 = Math.sqrt((t_6 + 1.0)) - Math.sqrt(t_6);
double t_8 = fmin(fmax(x, y), t_5);
double t_9 = Math.sqrt(t_8);
double t_10 = (Math.sqrt((t_2 + 1.0)) - t_3) + (Math.sqrt((t_8 + 1.0)) - t_9);
double t_11 = fmax(t_1, t);
double t_12 = Math.sqrt(t_11);
double t_13 = Math.sqrt((t_11 + 1.0)) - t_12;
double tmp;
if (t_10 <= 0.2) {
tmp = ((1.0 / (t_3 + t_4)) + t_7) + (0.5 / t_12);
} else if (t_10 <= 1.999998) {
tmp = ((t_4 + (1.0 / (t_9 + Math.sqrt((1.0 + t_8))))) - t_3) + t_13;
} else {
tmp = ((2.0 - (t_3 + t_9)) + t_7) + t_13;
}
return tmp;
}
def code(x, y, z, t): t_1 = fmin(fmin(x, y), z) t_2 = fmin(t_1, t) t_3 = math.sqrt(t_2) t_4 = math.sqrt((1.0 + t_2)) t_5 = fmax(fmin(x, y), z) t_6 = fmax(fmax(x, y), t_5) t_7 = math.sqrt((t_6 + 1.0)) - math.sqrt(t_6) t_8 = fmin(fmax(x, y), t_5) t_9 = math.sqrt(t_8) t_10 = (math.sqrt((t_2 + 1.0)) - t_3) + (math.sqrt((t_8 + 1.0)) - t_9) t_11 = fmax(t_1, t) t_12 = math.sqrt(t_11) t_13 = math.sqrt((t_11 + 1.0)) - t_12 tmp = 0 if t_10 <= 0.2: tmp = ((1.0 / (t_3 + t_4)) + t_7) + (0.5 / t_12) elif t_10 <= 1.999998: tmp = ((t_4 + (1.0 / (t_9 + math.sqrt((1.0 + t_8))))) - t_3) + t_13 else: tmp = ((2.0 - (t_3 + t_9)) + t_7) + t_13 return tmp
function code(x, y, z, t) t_1 = fmin(fmin(x, y), z) t_2 = fmin(t_1, t) t_3 = sqrt(t_2) t_4 = sqrt(Float64(1.0 + t_2)) t_5 = fmax(fmin(x, y), z) t_6 = fmax(fmax(x, y), t_5) t_7 = Float64(sqrt(Float64(t_6 + 1.0)) - sqrt(t_6)) t_8 = fmin(fmax(x, y), t_5) t_9 = sqrt(t_8) t_10 = Float64(Float64(sqrt(Float64(t_2 + 1.0)) - t_3) + Float64(sqrt(Float64(t_8 + 1.0)) - t_9)) t_11 = fmax(t_1, t) t_12 = sqrt(t_11) t_13 = Float64(sqrt(Float64(t_11 + 1.0)) - t_12) tmp = 0.0 if (t_10 <= 0.2) tmp = Float64(Float64(Float64(1.0 / Float64(t_3 + t_4)) + t_7) + Float64(0.5 / t_12)); elseif (t_10 <= 1.999998) tmp = Float64(Float64(Float64(t_4 + Float64(1.0 / Float64(t_9 + sqrt(Float64(1.0 + t_8))))) - t_3) + t_13); else tmp = Float64(Float64(Float64(2.0 - Float64(t_3 + t_9)) + t_7) + t_13); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = min(min(x, y), z); t_2 = min(t_1, t); t_3 = sqrt(t_2); t_4 = sqrt((1.0 + t_2)); t_5 = max(min(x, y), z); t_6 = max(max(x, y), t_5); t_7 = sqrt((t_6 + 1.0)) - sqrt(t_6); t_8 = min(max(x, y), t_5); t_9 = sqrt(t_8); t_10 = (sqrt((t_2 + 1.0)) - t_3) + (sqrt((t_8 + 1.0)) - t_9); t_11 = max(t_1, t); t_12 = sqrt(t_11); t_13 = sqrt((t_11 + 1.0)) - t_12; tmp = 0.0; if (t_10 <= 0.2) tmp = ((1.0 / (t_3 + t_4)) + t_7) + (0.5 / t_12); elseif (t_10 <= 1.999998) tmp = ((t_4 + (1.0 / (t_9 + sqrt((1.0 + t_8))))) - t_3) + t_13; else tmp = ((2.0 - (t_3 + t_9)) + t_7) + t_13; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Min[t$95$1, t], $MachinePrecision]}, Block[{t$95$3 = N[Sqrt[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[N[(1.0 + t$95$2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$5 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$6 = N[Max[N[Max[x, y], $MachinePrecision], t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[(N[Sqrt[N[(t$95$6 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$6], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[Min[N[Max[x, y], $MachinePrecision], t$95$5], $MachinePrecision]}, Block[{t$95$9 = N[Sqrt[t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[(N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$3), $MachinePrecision] + N[(N[Sqrt[N[(t$95$8 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$9), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$11 = N[Max[t$95$1, t], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$13 = N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$12), $MachinePrecision]}, If[LessEqual[t$95$10, 0.2], N[(N[(N[(1.0 / N[(t$95$3 + t$95$4), $MachinePrecision]), $MachinePrecision] + t$95$7), $MachinePrecision] + N[(0.5 / t$95$12), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$10, 1.999998], N[(N[(N[(t$95$4 + N[(1.0 / N[(t$95$9 + N[Sqrt[N[(1.0 + t$95$8), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$3), $MachinePrecision] + t$95$13), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$3 + t$95$9), $MachinePrecision]), $MachinePrecision] + t$95$7), $MachinePrecision] + t$95$13), $MachinePrecision]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 < z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_4 = IF (t_1 < t) THEN t_1 ELSE t ENDIF IN LET t_2 = tmp_4 IN LET t_3 = (sqrt(t_2)) IN LET t_4 = (sqrt(((1) + t_2))) IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_8 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_6 = IF (tmp_7 > z) THEN tmp_8 ELSE z ENDIF IN LET t_5 = tmp_6 IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_12 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_10 = IF (tmp_11 > t_5) THEN tmp_12 ELSE t_5 ENDIF IN LET t_6 = tmp_10 IN LET t_7 = ((sqrt((t_6 + (1)))) - (sqrt(t_6))) IN LET tmp_15 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_14 = IF (tmp_15 < t_5) THEN tmp_16 ELSE t_5 ENDIF IN LET t_8 = tmp_14 IN LET t_9 = (sqrt(t_8)) IN LET t_10 = (((sqrt((t_2 + (1)))) - t_3) + ((sqrt((t_8 + (1)))) - t_9)) IN LET tmp_17 = IF (t_1 > t) THEN t_1 ELSE t ENDIF IN LET t_11 = tmp_17 IN LET t_12 = (sqrt(t_11)) IN LET t_13 = ((sqrt((t_11 + (1)))) - t_12) IN LET tmp_19 = IF (t_10 <= (19999979999999999424886709675774909555912017822265625e-52)) THEN (((t_4 + ((1) / (t_9 + (sqrt(((1) + t_8)))))) - t_3) + t_13) ELSE ((((2) - (t_3 + t_9)) + t_7) + t_13) ENDIF IN LET tmp_18 = IF (t_10 <= (200000000000000011102230246251565404236316680908203125e-54)) THEN ((((1) / (t_3 + t_4)) + t_7) + ((5e-1) / t_12)) ELSE tmp_19 ENDIF IN tmp_18 END code
\begin{array}{l}
t_1 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{min}\left(t\_1, t\right)\\
t_3 := \sqrt{t\_2}\\
t_4 := \sqrt{1 + t\_2}\\
t_5 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_6 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_5\right)\\
t_7 := \sqrt{t\_6 + 1} - \sqrt{t\_6}\\
t_8 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_5\right)\\
t_9 := \sqrt{t\_8}\\
t_10 := \left(\sqrt{t\_2 + 1} - t\_3\right) + \left(\sqrt{t\_8 + 1} - t\_9\right)\\
t_11 := \mathsf{max}\left(t\_1, t\right)\\
t_12 := \sqrt{t\_11}\\
t_13 := \sqrt{t\_11 + 1} - t\_12\\
\mathbf{if}\;t\_10 \leq 0.2:\\
\;\;\;\;\left(\frac{1}{t\_3 + t\_4} + t\_7\right) + \frac{0.5}{t\_12}\\
\mathbf{elif}\;t\_10 \leq 1.999998:\\
\;\;\;\;\left(\left(t\_4 + \frac{1}{t\_9 + \sqrt{1 + t\_8}}\right) - t\_3\right) + t\_13\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_3 + t\_9\right)\right) + t\_7\right) + t\_13\\
\end{array}
if (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 0.20000000000000001Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Taylor expanded in t around inf
Applied rewrites28.6%
Taylor expanded in t around 0
Applied rewrites28.6%
if 0.20000000000000001 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 1.9999979999999999Initial program 92.0%
Applied rewrites93.9%
Taylor expanded in z around inf
Applied rewrites40.0%
if 1.9999979999999999 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmin (fmin x y) z))
(t_2 (fmin t_1 t))
(t_3 (sqrt t_2))
(t_4 (fmax (fmin x y) z))
(t_5 (fmax (fmax x y) t_4))
(t_6 (- (sqrt (+ t_5 1.0)) (sqrt t_5)))
(t_7 (fmin (fmax x y) t_4))
(t_8 (sqrt t_7))
(t_9 (+ (- (sqrt (+ t_2 1.0)) t_3) (- (sqrt (+ t_7 1.0)) t_8)))
(t_10 (fmax t_1 t))
(t_11 (sqrt t_10))
(t_12 (- (sqrt (+ t_10 1.0)) t_11)))
(if (<= t_9 0.9995)
(+ (+ (/ 1.0 (+ t_3 (sqrt (+ 1.0 t_2)))) t_6) (/ 0.5 t_11))
(if (<= t_9 1.999998)
(+ (- (+ 1.0 (/ 1.0 (+ t_8 (sqrt (+ 1.0 t_7))))) t_3) t_12)
(+ (+ (- 2.0 (+ t_3 t_8)) t_6) t_12)))))double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmin(t_1, t);
double t_3 = sqrt(t_2);
double t_4 = fmax(fmin(x, y), z);
double t_5 = fmax(fmax(x, y), t_4);
double t_6 = sqrt((t_5 + 1.0)) - sqrt(t_5);
double t_7 = fmin(fmax(x, y), t_4);
double t_8 = sqrt(t_7);
double t_9 = (sqrt((t_2 + 1.0)) - t_3) + (sqrt((t_7 + 1.0)) - t_8);
double t_10 = fmax(t_1, t);
double t_11 = sqrt(t_10);
double t_12 = sqrt((t_10 + 1.0)) - t_11;
double tmp;
if (t_9 <= 0.9995) {
tmp = ((1.0 / (t_3 + sqrt((1.0 + t_2)))) + t_6) + (0.5 / t_11);
} else if (t_9 <= 1.999998) {
tmp = ((1.0 + (1.0 / (t_8 + sqrt((1.0 + t_7))))) - t_3) + t_12;
} else {
tmp = ((2.0 - (t_3 + t_8)) + t_6) + t_12;
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmin(fmin(x, y), z)
t_2 = fmin(t_1, t)
t_3 = sqrt(t_2)
t_4 = fmax(fmin(x, y), z)
t_5 = fmax(fmax(x, y), t_4)
t_6 = sqrt((t_5 + 1.0d0)) - sqrt(t_5)
t_7 = fmin(fmax(x, y), t_4)
t_8 = sqrt(t_7)
t_9 = (sqrt((t_2 + 1.0d0)) - t_3) + (sqrt((t_7 + 1.0d0)) - t_8)
t_10 = fmax(t_1, t)
t_11 = sqrt(t_10)
t_12 = sqrt((t_10 + 1.0d0)) - t_11
if (t_9 <= 0.9995d0) then
tmp = ((1.0d0 / (t_3 + sqrt((1.0d0 + t_2)))) + t_6) + (0.5d0 / t_11)
else if (t_9 <= 1.999998d0) then
tmp = ((1.0d0 + (1.0d0 / (t_8 + sqrt((1.0d0 + t_7))))) - t_3) + t_12
else
tmp = ((2.0d0 - (t_3 + t_8)) + t_6) + t_12
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmin(t_1, t);
double t_3 = Math.sqrt(t_2);
double t_4 = fmax(fmin(x, y), z);
double t_5 = fmax(fmax(x, y), t_4);
double t_6 = Math.sqrt((t_5 + 1.0)) - Math.sqrt(t_5);
double t_7 = fmin(fmax(x, y), t_4);
double t_8 = Math.sqrt(t_7);
double t_9 = (Math.sqrt((t_2 + 1.0)) - t_3) + (Math.sqrt((t_7 + 1.0)) - t_8);
double t_10 = fmax(t_1, t);
double t_11 = Math.sqrt(t_10);
double t_12 = Math.sqrt((t_10 + 1.0)) - t_11;
double tmp;
if (t_9 <= 0.9995) {
tmp = ((1.0 / (t_3 + Math.sqrt((1.0 + t_2)))) + t_6) + (0.5 / t_11);
} else if (t_9 <= 1.999998) {
tmp = ((1.0 + (1.0 / (t_8 + Math.sqrt((1.0 + t_7))))) - t_3) + t_12;
} else {
tmp = ((2.0 - (t_3 + t_8)) + t_6) + t_12;
}
return tmp;
}
def code(x, y, z, t): t_1 = fmin(fmin(x, y), z) t_2 = fmin(t_1, t) t_3 = math.sqrt(t_2) t_4 = fmax(fmin(x, y), z) t_5 = fmax(fmax(x, y), t_4) t_6 = math.sqrt((t_5 + 1.0)) - math.sqrt(t_5) t_7 = fmin(fmax(x, y), t_4) t_8 = math.sqrt(t_7) t_9 = (math.sqrt((t_2 + 1.0)) - t_3) + (math.sqrt((t_7 + 1.0)) - t_8) t_10 = fmax(t_1, t) t_11 = math.sqrt(t_10) t_12 = math.sqrt((t_10 + 1.0)) - t_11 tmp = 0 if t_9 <= 0.9995: tmp = ((1.0 / (t_3 + math.sqrt((1.0 + t_2)))) + t_6) + (0.5 / t_11) elif t_9 <= 1.999998: tmp = ((1.0 + (1.0 / (t_8 + math.sqrt((1.0 + t_7))))) - t_3) + t_12 else: tmp = ((2.0 - (t_3 + t_8)) + t_6) + t_12 return tmp
function code(x, y, z, t) t_1 = fmin(fmin(x, y), z) t_2 = fmin(t_1, t) t_3 = sqrt(t_2) t_4 = fmax(fmin(x, y), z) t_5 = fmax(fmax(x, y), t_4) t_6 = Float64(sqrt(Float64(t_5 + 1.0)) - sqrt(t_5)) t_7 = fmin(fmax(x, y), t_4) t_8 = sqrt(t_7) t_9 = Float64(Float64(sqrt(Float64(t_2 + 1.0)) - t_3) + Float64(sqrt(Float64(t_7 + 1.0)) - t_8)) t_10 = fmax(t_1, t) t_11 = sqrt(t_10) t_12 = Float64(sqrt(Float64(t_10 + 1.0)) - t_11) tmp = 0.0 if (t_9 <= 0.9995) tmp = Float64(Float64(Float64(1.0 / Float64(t_3 + sqrt(Float64(1.0 + t_2)))) + t_6) + Float64(0.5 / t_11)); elseif (t_9 <= 1.999998) tmp = Float64(Float64(Float64(1.0 + Float64(1.0 / Float64(t_8 + sqrt(Float64(1.0 + t_7))))) - t_3) + t_12); else tmp = Float64(Float64(Float64(2.0 - Float64(t_3 + t_8)) + t_6) + t_12); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = min(min(x, y), z); t_2 = min(t_1, t); t_3 = sqrt(t_2); t_4 = max(min(x, y), z); t_5 = max(max(x, y), t_4); t_6 = sqrt((t_5 + 1.0)) - sqrt(t_5); t_7 = min(max(x, y), t_4); t_8 = sqrt(t_7); t_9 = (sqrt((t_2 + 1.0)) - t_3) + (sqrt((t_7 + 1.0)) - t_8); t_10 = max(t_1, t); t_11 = sqrt(t_10); t_12 = sqrt((t_10 + 1.0)) - t_11; tmp = 0.0; if (t_9 <= 0.9995) tmp = ((1.0 / (t_3 + sqrt((1.0 + t_2)))) + t_6) + (0.5 / t_11); elseif (t_9 <= 1.999998) tmp = ((1.0 + (1.0 / (t_8 + sqrt((1.0 + t_7))))) - t_3) + t_12; else tmp = ((2.0 - (t_3 + t_8)) + t_6) + t_12; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Min[t$95$1, t], $MachinePrecision]}, Block[{t$95$3 = N[Sqrt[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Max[N[Max[x, y], $MachinePrecision], t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$5], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[Min[N[Max[x, y], $MachinePrecision], t$95$4], $MachinePrecision]}, Block[{t$95$8 = N[Sqrt[t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[(N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$3), $MachinePrecision] + N[(N[Sqrt[N[(t$95$7 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$8), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[Max[t$95$1, t], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$12 = N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]}, If[LessEqual[t$95$9, 0.9995], N[(N[(N[(1.0 / N[(t$95$3 + N[Sqrt[N[(1.0 + t$95$2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$6), $MachinePrecision] + N[(0.5 / t$95$11), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$9, 1.999998], N[(N[(N[(1.0 + N[(1.0 / N[(t$95$8 + N[Sqrt[N[(1.0 + t$95$7), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$3), $MachinePrecision] + t$95$12), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$3 + t$95$8), $MachinePrecision]), $MachinePrecision] + t$95$6), $MachinePrecision] + t$95$12), $MachinePrecision]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 < z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_4 = IF (t_1 < t) THEN t_1 ELSE t ENDIF IN LET t_2 = tmp_4 IN LET t_3 = (sqrt(t_2)) IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_8 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_6 = IF (tmp_7 > z) THEN tmp_8 ELSE z ENDIF IN LET t_4 = tmp_6 IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_12 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_10 = IF (tmp_11 > t_4) THEN tmp_12 ELSE t_4 ENDIF IN LET t_5 = tmp_10 IN LET t_6 = ((sqrt((t_5 + (1)))) - (sqrt(t_5))) IN LET tmp_15 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_14 = IF (tmp_15 < t_4) THEN tmp_16 ELSE t_4 ENDIF IN LET t_7 = tmp_14 IN LET t_8 = (sqrt(t_7)) IN LET t_9 = (((sqrt((t_2 + (1)))) - t_3) + ((sqrt((t_7 + (1)))) - t_8)) IN LET tmp_17 = IF (t_1 > t) THEN t_1 ELSE t ENDIF IN LET t_10 = tmp_17 IN LET t_11 = (sqrt(t_10)) IN LET t_12 = ((sqrt((t_10 + (1)))) - t_11) IN LET tmp_19 = IF (t_9 <= (19999979999999999424886709675774909555912017822265625e-52)) THEN ((((1) + ((1) / (t_8 + (sqrt(((1) + t_7)))))) - t_3) + t_12) ELSE ((((2) - (t_3 + t_8)) + t_6) + t_12) ENDIF IN LET tmp_18 = IF (t_9 <= (9995000000000000550670620214077644050121307373046875e-52)) THEN ((((1) / (t_3 + (sqrt(((1) + t_2))))) + t_6) + ((5e-1) / t_11)) ELSE tmp_19 ENDIF IN tmp_18 END code
\begin{array}{l}
t_1 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{min}\left(t\_1, t\right)\\
t_3 := \sqrt{t\_2}\\
t_4 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_4\right)\\
t_6 := \sqrt{t\_5 + 1} - \sqrt{t\_5}\\
t_7 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_4\right)\\
t_8 := \sqrt{t\_7}\\
t_9 := \left(\sqrt{t\_2 + 1} - t\_3\right) + \left(\sqrt{t\_7 + 1} - t\_8\right)\\
t_10 := \mathsf{max}\left(t\_1, t\right)\\
t_11 := \sqrt{t\_10}\\
t_12 := \sqrt{t\_10 + 1} - t\_11\\
\mathbf{if}\;t\_9 \leq 0.9995:\\
\;\;\;\;\left(\frac{1}{t\_3 + \sqrt{1 + t\_2}} + t\_6\right) + \frac{0.5}{t\_11}\\
\mathbf{elif}\;t\_9 \leq 1.999998:\\
\;\;\;\;\left(\left(1 + \frac{1}{t\_8 + \sqrt{1 + t\_7}}\right) - t\_3\right) + t\_12\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_3 + t\_8\right)\right) + t\_6\right) + t\_12\\
\end{array}
if (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 0.99950000000000006Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Taylor expanded in t around inf
Applied rewrites28.6%
Taylor expanded in t around 0
Applied rewrites28.6%
if 0.99950000000000006 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 1.9999979999999999Initial program 92.0%
Applied rewrites93.9%
Taylor expanded in z around inf
Applied rewrites40.0%
Taylor expanded in x around 0
Applied rewrites28.9%
if 1.9999979999999999 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmin (fmin x y) z))
(t_2 (fmax t_1 t))
(t_3 (fmin t_1 t))
(t_4 (sqrt t_3))
(t_5 (fmax (fmin x y) z))
(t_6 (fmax (fmax x y) t_5))
(t_7 (fmin (fmax x y) t_5))
(t_8 (fmax t_7 t_2))
(t_9 (fmin t_6 t_8))
(t_10 (sqrt t_9))
(t_11 (sqrt (+ t_9 1.0)))
(t_12 (fmin t_7 t_2))
(t_13 (fmax t_6 t_8))
(t_14 (sqrt (+ t_13 1.0)))
(t_15 (sqrt t_13)))
(if (<= t_12 2.0660407187798852e+30)
(+
(+
(+
(- (sqrt (+ t_3 1.0)) t_4)
(- (sqrt (+ t_12 1.0)) (sqrt t_12)))
(/ 1.0 (+ t_10 t_11)))
(- t_14 t_15))
(+
(/ 1.0 (+ (sqrt (+ 1.0 t_3)) t_4))
(- (- t_11 t_10) (- t_15 t_14))))))double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmax(t_1, t);
double t_3 = fmin(t_1, t);
double t_4 = sqrt(t_3);
double t_5 = fmax(fmin(x, y), z);
double t_6 = fmax(fmax(x, y), t_5);
double t_7 = fmin(fmax(x, y), t_5);
double t_8 = fmax(t_7, t_2);
double t_9 = fmin(t_6, t_8);
double t_10 = sqrt(t_9);
double t_11 = sqrt((t_9 + 1.0));
double t_12 = fmin(t_7, t_2);
double t_13 = fmax(t_6, t_8);
double t_14 = sqrt((t_13 + 1.0));
double t_15 = sqrt(t_13);
double tmp;
if (t_12 <= 2.0660407187798852e+30) {
tmp = (((sqrt((t_3 + 1.0)) - t_4) + (sqrt((t_12 + 1.0)) - sqrt(t_12))) + (1.0 / (t_10 + t_11))) + (t_14 - t_15);
} else {
tmp = (1.0 / (sqrt((1.0 + t_3)) + t_4)) + ((t_11 - t_10) - (t_15 - t_14));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmin(fmin(x, y), z)
t_2 = fmax(t_1, t)
t_3 = fmin(t_1, t)
t_4 = sqrt(t_3)
t_5 = fmax(fmin(x, y), z)
t_6 = fmax(fmax(x, y), t_5)
t_7 = fmin(fmax(x, y), t_5)
t_8 = fmax(t_7, t_2)
t_9 = fmin(t_6, t_8)
t_10 = sqrt(t_9)
t_11 = sqrt((t_9 + 1.0d0))
t_12 = fmin(t_7, t_2)
t_13 = fmax(t_6, t_8)
t_14 = sqrt((t_13 + 1.0d0))
t_15 = sqrt(t_13)
if (t_12 <= 2.0660407187798852d+30) then
tmp = (((sqrt((t_3 + 1.0d0)) - t_4) + (sqrt((t_12 + 1.0d0)) - sqrt(t_12))) + (1.0d0 / (t_10 + t_11))) + (t_14 - t_15)
else
tmp = (1.0d0 / (sqrt((1.0d0 + t_3)) + t_4)) + ((t_11 - t_10) - (t_15 - t_14))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, y), z);
double t_2 = fmax(t_1, t);
double t_3 = fmin(t_1, t);
double t_4 = Math.sqrt(t_3);
double t_5 = fmax(fmin(x, y), z);
double t_6 = fmax(fmax(x, y), t_5);
double t_7 = fmin(fmax(x, y), t_5);
double t_8 = fmax(t_7, t_2);
double t_9 = fmin(t_6, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = Math.sqrt((t_9 + 1.0));
double t_12 = fmin(t_7, t_2);
double t_13 = fmax(t_6, t_8);
double t_14 = Math.sqrt((t_13 + 1.0));
double t_15 = Math.sqrt(t_13);
double tmp;
if (t_12 <= 2.0660407187798852e+30) {
tmp = (((Math.sqrt((t_3 + 1.0)) - t_4) + (Math.sqrt((t_12 + 1.0)) - Math.sqrt(t_12))) + (1.0 / (t_10 + t_11))) + (t_14 - t_15);
} else {
tmp = (1.0 / (Math.sqrt((1.0 + t_3)) + t_4)) + ((t_11 - t_10) - (t_15 - t_14));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmin(fmin(x, y), z) t_2 = fmax(t_1, t) t_3 = fmin(t_1, t) t_4 = math.sqrt(t_3) t_5 = fmax(fmin(x, y), z) t_6 = fmax(fmax(x, y), t_5) t_7 = fmin(fmax(x, y), t_5) t_8 = fmax(t_7, t_2) t_9 = fmin(t_6, t_8) t_10 = math.sqrt(t_9) t_11 = math.sqrt((t_9 + 1.0)) t_12 = fmin(t_7, t_2) t_13 = fmax(t_6, t_8) t_14 = math.sqrt((t_13 + 1.0)) t_15 = math.sqrt(t_13) tmp = 0 if t_12 <= 2.0660407187798852e+30: tmp = (((math.sqrt((t_3 + 1.0)) - t_4) + (math.sqrt((t_12 + 1.0)) - math.sqrt(t_12))) + (1.0 / (t_10 + t_11))) + (t_14 - t_15) else: tmp = (1.0 / (math.sqrt((1.0 + t_3)) + t_4)) + ((t_11 - t_10) - (t_15 - t_14)) return tmp
function code(x, y, z, t) t_1 = fmin(fmin(x, y), z) t_2 = fmax(t_1, t) t_3 = fmin(t_1, t) t_4 = sqrt(t_3) t_5 = fmax(fmin(x, y), z) t_6 = fmax(fmax(x, y), t_5) t_7 = fmin(fmax(x, y), t_5) t_8 = fmax(t_7, t_2) t_9 = fmin(t_6, t_8) t_10 = sqrt(t_9) t_11 = sqrt(Float64(t_9 + 1.0)) t_12 = fmin(t_7, t_2) t_13 = fmax(t_6, t_8) t_14 = sqrt(Float64(t_13 + 1.0)) t_15 = sqrt(t_13) tmp = 0.0 if (t_12 <= 2.0660407187798852e+30) tmp = Float64(Float64(Float64(Float64(sqrt(Float64(t_3 + 1.0)) - t_4) + Float64(sqrt(Float64(t_12 + 1.0)) - sqrt(t_12))) + Float64(1.0 / Float64(t_10 + t_11))) + Float64(t_14 - t_15)); else tmp = Float64(Float64(1.0 / Float64(sqrt(Float64(1.0 + t_3)) + t_4)) + Float64(Float64(t_11 - t_10) - Float64(t_15 - t_14))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = min(min(x, y), z); t_2 = max(t_1, t); t_3 = min(t_1, t); t_4 = sqrt(t_3); t_5 = max(min(x, y), z); t_6 = max(max(x, y), t_5); t_7 = min(max(x, y), t_5); t_8 = max(t_7, t_2); t_9 = min(t_6, t_8); t_10 = sqrt(t_9); t_11 = sqrt((t_9 + 1.0)); t_12 = min(t_7, t_2); t_13 = max(t_6, t_8); t_14 = sqrt((t_13 + 1.0)); t_15 = sqrt(t_13); tmp = 0.0; if (t_12 <= 2.0660407187798852e+30) tmp = (((sqrt((t_3 + 1.0)) - t_4) + (sqrt((t_12 + 1.0)) - sqrt(t_12))) + (1.0 / (t_10 + t_11))) + (t_14 - t_15); else tmp = (1.0 / (sqrt((1.0 + t_3)) + t_4)) + ((t_11 - t_10) - (t_15 - t_14)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[t$95$1, t], $MachinePrecision]}, Block[{t$95$3 = N[Min[t$95$1, t], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$6 = N[Max[N[Max[x, y], $MachinePrecision], t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Min[N[Max[x, y], $MachinePrecision], t$95$5], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$7, t$95$2], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$6, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$12 = N[Min[t$95$7, t$95$2], $MachinePrecision]}, Block[{t$95$13 = N[Max[t$95$6, t$95$8], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[N[(t$95$13 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[t$95$13], $MachinePrecision]}, If[LessEqual[t$95$12, 2.0660407187798852e+30], N[(N[(N[(N[(N[Sqrt[N[(t$95$3 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$4), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$12], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$10 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$14 - t$95$15), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / N[(N[Sqrt[N[(1.0 + t$95$3), $MachinePrecision]], $MachinePrecision] + t$95$4), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$11 - t$95$10), $MachinePrecision] - N[(t$95$15 - t$95$14), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 < z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_4 = IF (t_1 > t) THEN t_1 ELSE t ENDIF IN LET t_2 = tmp_4 IN LET tmp_5 = IF (t_1 < t) THEN t_1 ELSE t ENDIF IN LET t_3 = tmp_5 IN LET t_4 = (sqrt(t_3)) IN LET tmp_8 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (tmp_8 > z) THEN tmp_9 ELSE z ENDIF IN LET t_5 = tmp_7 IN LET tmp_12 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (tmp_12 > t_5) THEN tmp_13 ELSE t_5 ENDIF IN LET t_6 = tmp_11 IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_17 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (tmp_16 < t_5) THEN tmp_17 ELSE t_5 ENDIF IN LET t_7 = tmp_15 IN LET tmp_18 = IF (t_7 > t_2) THEN t_7 ELSE t_2 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_6 < t_8) THEN t_6 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET t_11 = (sqrt((t_9 + (1)))) IN LET tmp_20 = IF (t_7 < t_2) THEN t_7 ELSE t_2 ENDIF IN LET t_12 = tmp_20 IN LET tmp_21 = IF (t_6 > t_8) THEN t_6 ELSE t_8 ENDIF IN LET t_13 = tmp_21 IN LET t_14 = (sqrt((t_13 + (1)))) IN LET t_15 = (sqrt(t_13)) IN LET tmp_22 = IF (t_12 <= (2066040718779885161499959754752)) THEN (((((sqrt((t_3 + (1)))) - t_4) + ((sqrt((t_12 + (1)))) - (sqrt(t_12)))) + ((1) / (t_10 + t_11))) + (t_14 - t_15)) ELSE (((1) / ((sqrt(((1) + t_3))) + t_4)) + ((t_11 - t_10) - (t_15 - t_14))) ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(t\_1, t\right)\\
t_3 := \mathsf{min}\left(t\_1, t\right)\\
t_4 := \sqrt{t\_3}\\
t_5 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_6 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_5\right)\\
t_7 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_5\right)\\
t_8 := \mathsf{max}\left(t\_7, t\_2\right)\\
t_9 := \mathsf{min}\left(t\_6, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \sqrt{t\_9 + 1}\\
t_12 := \mathsf{min}\left(t\_7, t\_2\right)\\
t_13 := \mathsf{max}\left(t\_6, t\_8\right)\\
t_14 := \sqrt{t\_13 + 1}\\
t_15 := \sqrt{t\_13}\\
\mathbf{if}\;t\_12 \leq 2.0660407187798852 \cdot 10^{+30}:\\
\;\;\;\;\left(\left(\left(\sqrt{t\_3 + 1} - t\_4\right) + \left(\sqrt{t\_12 + 1} - \sqrt{t\_12}\right)\right) + \frac{1}{t\_10 + t\_11}\right) + \left(t\_14 - t\_15\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{1 + t\_3} + t\_4} + \left(\left(t\_11 - t\_10\right) - \left(t\_15 - t\_14\right)\right)\\
\end{array}
if y < 2.0660407187798852e30Initial program 92.0%
Applied rewrites93.8%
if 2.0660407187798852e30 < y Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Applied rewrites52.4%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (fmin t_3 t_7))
(t_11 (sqrt t_9))
(t_12 (/ 1.0 (+ t_11 (sqrt (+ 1.0 t_9)))))
(t_13 (sqrt t_10))
(t_14
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_13))
(- (sqrt (+ t_9 1.0)) t_11)))
(t_15 (+ t_6 t_13))
(t_16 (fmax t_2 t_8))
(t_17 (- (sqrt (+ t_16 1.0)) (sqrt t_16))))
(if (<= t_14 0.2)
(fma 0.5 (/ 1.0 (* t_5 (sqrt (/ 1.0 t_5)))) t_12)
(if (<= t_14 1.999998)
(+ (- (+ 1.0 (/ 1.0 (+ t_13 (sqrt (+ 1.0 t_10))))) t_6) t_17)
(if (<= t_14 2.999995)
(- (+ (sqrt (+ 1.0 t_5)) (+ 1.0 t_12)) t_15)
(+ (+ (- 2.0 t_15) (- 1.0 t_11)) t_17))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = sqrt(t_9);
double t_12 = 1.0 / (t_11 + sqrt((1.0 + t_9)));
double t_13 = sqrt(t_10);
double t_14 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_13)) + (sqrt((t_9 + 1.0)) - t_11);
double t_15 = t_6 + t_13;
double t_16 = fmax(t_2, t_8);
double t_17 = sqrt((t_16 + 1.0)) - sqrt(t_16);
double tmp;
if (t_14 <= 0.2) {
tmp = fma(0.5, (1.0 / (t_5 * sqrt((1.0 / t_5)))), t_12);
} else if (t_14 <= 1.999998) {
tmp = ((1.0 + (1.0 / (t_13 + sqrt((1.0 + t_10))))) - t_6) + t_17;
} else if (t_14 <= 2.999995) {
tmp = (sqrt((1.0 + t_5)) + (1.0 + t_12)) - t_15;
} else {
tmp = ((2.0 - t_15) + (1.0 - t_11)) + t_17;
}
return tmp;
}
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = sqrt(t_9) t_12 = Float64(1.0 / Float64(t_11 + sqrt(Float64(1.0 + t_9)))) t_13 = sqrt(t_10) t_14 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_13)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_11)) t_15 = Float64(t_6 + t_13) t_16 = fmax(t_2, t_8) t_17 = Float64(sqrt(Float64(t_16 + 1.0)) - sqrt(t_16)) tmp = 0.0 if (t_14 <= 0.2) tmp = fma(0.5, Float64(1.0 / Float64(t_5 * sqrt(Float64(1.0 / t_5)))), t_12); elseif (t_14 <= 1.999998) tmp = Float64(Float64(Float64(1.0 + Float64(1.0 / Float64(t_13 + sqrt(Float64(1.0 + t_10))))) - t_6) + t_17); elseif (t_14 <= 2.999995) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 + t_12)) - t_15); else tmp = Float64(Float64(Float64(2.0 - t_15) + Float64(1.0 - t_11)) + t_17); end return tmp end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$12 = N[(1.0 / N[(t$95$11 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$14 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$15 = N[(t$95$6 + t$95$13), $MachinePrecision]}, Block[{t$95$16 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$17 = N[(N[Sqrt[N[(t$95$16 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$16], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$14, 0.2], N[(0.5 * N[(1.0 / N[(t$95$5 * N[Sqrt[N[(1.0 / t$95$5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$12), $MachinePrecision], If[LessEqual[t$95$14, 1.999998], N[(N[(N[(1.0 + N[(1.0 / N[(t$95$13 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] + t$95$17), $MachinePrecision], If[LessEqual[t$95$14, 2.999995], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 + t$95$12), $MachinePrecision]), $MachinePrecision] - t$95$15), $MachinePrecision], N[(N[(N[(2.0 - t$95$15), $MachinePrecision] + N[(1.0 - t$95$11), $MachinePrecision]), $MachinePrecision] + t$95$17), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET t_11 = (sqrt(t_9)) IN LET t_12 = ((1) / (t_11 + (sqrt(((1) + t_9))))) IN LET t_13 = (sqrt(t_10)) IN LET t_14 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_13)) + ((sqrt((t_9 + (1)))) - t_11)) IN LET t_15 = (t_6 + t_13) IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_16 = tmp_21 IN LET t_17 = ((sqrt((t_16 + (1)))) - (sqrt(t_16))) IN LET tmp_24 = IF (t_14 <= (29999950000000001892885848064906895160675048828125e-49)) THEN (((sqrt(((1) + t_5))) + ((1) + t_12)) - t_15) ELSE ((((2) - t_15) + ((1) - t_11)) + t_17) ENDIF IN LET tmp_23 = IF (t_14 <= (19999979999999999424886709675774909555912017822265625e-52)) THEN ((((1) + ((1) / (t_13 + (sqrt(((1) + t_10)))))) - t_6) + t_17) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_14 <= (200000000000000011102230246251565404236316680908203125e-54)) THEN (((5e-1) * ((1) / (t_5 * (sqrt(((1) / t_5)))))) + t_12) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_11 := \sqrt{t\_9}\\
t_12 := \frac{1}{t\_11 + \sqrt{1 + t\_9}}\\
t_13 := \sqrt{t\_10}\\
t_14 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_13\right)\right) + \left(\sqrt{t\_9 + 1} - t\_11\right)\\
t_15 := t\_6 + t\_13\\
t_16 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_17 := \sqrt{t\_16 + 1} - \sqrt{t\_16}\\
\mathbf{if}\;t\_14 \leq 0.2:\\
\;\;\;\;\mathsf{fma}\left(0.5, \frac{1}{t\_5 \cdot \sqrt{\frac{1}{t\_5}}}, t\_12\right)\\
\mathbf{elif}\;t\_14 \leq 1.999998:\\
\;\;\;\;\left(\left(1 + \frac{1}{t\_13 + \sqrt{1 + t\_10}}\right) - t\_6\right) + t\_17\\
\mathbf{elif}\;t\_14 \leq 2.999995:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \left(1 + t\_12\right)\right) - t\_15\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - t\_15\right) + \left(1 - t\_11\right)\right) + t\_17\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 0.20000000000000001Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites17.0%
if 0.20000000000000001 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1.9999979999999999Initial program 92.0%
Applied rewrites93.9%
Taylor expanded in z around inf
Applied rewrites40.0%
Taylor expanded in x around 0
Applied rewrites28.9%
if 1.9999979999999999 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around 0
Applied rewrites17.0%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (- (sqrt (+ t_9 1.0)) t_10))
(t_12 (fmin t_3 t_7))
(t_13 (fmax t_2 t_8))
(t_14 (sqrt t_13))
(t_15 (- (sqrt (+ t_13 1.0)) t_14))
(t_16 (sqrt t_12))
(t_17
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_12 1.0)) t_16))
t_11)
t_15))
(t_18 (- 2.0 (+ t_6 t_16))))
(if (<= t_17 0.2)
(fma
0.5
(/ 1.0 (* t_5 (sqrt (/ 1.0 t_5))))
(/ 1.0 (+ t_10 (sqrt (+ 1.0 t_9)))))
(if (<= t_17 1.999998)
(+ (- (+ 1.0 (/ 1.0 (+ t_16 (sqrt (+ 1.0 t_12))))) t_6) t_15)
(if (<= t_17 3.0001)
(+ (+ t_18 t_11) (/ 0.5 t_14))
(+ (+ t_18 (- 1.0 t_10)) t_15))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = sqrt((t_9 + 1.0)) - t_10;
double t_12 = fmin(t_3, t_7);
double t_13 = fmax(t_2, t_8);
double t_14 = sqrt(t_13);
double t_15 = sqrt((t_13 + 1.0)) - t_14;
double t_16 = sqrt(t_12);
double t_17 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_12 + 1.0)) - t_16)) + t_11) + t_15;
double t_18 = 2.0 - (t_6 + t_16);
double tmp;
if (t_17 <= 0.2) {
tmp = fma(0.5, (1.0 / (t_5 * sqrt((1.0 / t_5)))), (1.0 / (t_10 + sqrt((1.0 + t_9)))));
} else if (t_17 <= 1.999998) {
tmp = ((1.0 + (1.0 / (t_16 + sqrt((1.0 + t_12))))) - t_6) + t_15;
} else if (t_17 <= 3.0001) {
tmp = (t_18 + t_11) + (0.5 / t_14);
} else {
tmp = (t_18 + (1.0 - t_10)) + t_15;
}
return tmp;
}
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = Float64(sqrt(Float64(t_9 + 1.0)) - t_10) t_12 = fmin(t_3, t_7) t_13 = fmax(t_2, t_8) t_14 = sqrt(t_13) t_15 = Float64(sqrt(Float64(t_13 + 1.0)) - t_14) t_16 = sqrt(t_12) t_17 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_12 + 1.0)) - t_16)) + t_11) + t_15) t_18 = Float64(2.0 - Float64(t_6 + t_16)) tmp = 0.0 if (t_17 <= 0.2) tmp = fma(0.5, Float64(1.0 / Float64(t_5 * sqrt(Float64(1.0 / t_5)))), Float64(1.0 / Float64(t_10 + sqrt(Float64(1.0 + t_9))))); elseif (t_17 <= 1.999998) tmp = Float64(Float64(Float64(1.0 + Float64(1.0 / Float64(t_16 + sqrt(Float64(1.0 + t_12))))) - t_6) + t_15); elseif (t_17 <= 3.0001) tmp = Float64(Float64(t_18 + t_11) + Float64(0.5 / t_14)); else tmp = Float64(Float64(t_18 + Float64(1.0 - t_10)) + t_15); end return tmp end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]}, Block[{t$95$12 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$13 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$13], $MachinePrecision]}, Block[{t$95$15 = N[(N[Sqrt[N[(t$95$13 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]}, Block[{t$95$16 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$17 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$16), $MachinePrecision]), $MachinePrecision] + t$95$11), $MachinePrecision] + t$95$15), $MachinePrecision]}, Block[{t$95$18 = N[(2.0 - N[(t$95$6 + t$95$16), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$17, 0.2], N[(0.5 * N[(1.0 / N[(t$95$5 * N[Sqrt[N[(1.0 / t$95$5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$10 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$17, 1.999998], N[(N[(N[(1.0 + N[(1.0 / N[(t$95$16 + N[Sqrt[N[(1.0 + t$95$12), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] + t$95$15), $MachinePrecision], If[LessEqual[t$95$17, 3.0001], N[(N[(t$95$18 + t$95$11), $MachinePrecision] + N[(0.5 / t$95$14), $MachinePrecision]), $MachinePrecision], N[(N[(t$95$18 + N[(1.0 - t$95$10), $MachinePrecision]), $MachinePrecision] + t$95$15), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET t_11 = ((sqrt((t_9 + (1)))) - t_10) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_12 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_13 = tmp_21 IN LET t_14 = (sqrt(t_13)) IN LET t_15 = ((sqrt((t_13 + (1)))) - t_14) IN LET t_16 = (sqrt(t_12)) IN LET t_17 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_12 + (1)))) - t_16)) + t_11) + t_15) IN LET t_18 = ((2) - (t_6 + t_16)) IN LET tmp_24 = IF (t_17 <= (3000100000000000211031192520749755203723907470703125e-51)) THEN ((t_18 + t_11) + ((5e-1) / t_14)) ELSE ((t_18 + ((1) - t_10)) + t_15) ENDIF IN LET tmp_23 = IF (t_17 <= (19999979999999999424886709675774909555912017822265625e-52)) THEN ((((1) + ((1) / (t_16 + (sqrt(((1) + t_12)))))) - t_6) + t_15) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_17 <= (200000000000000011102230246251565404236316680908203125e-54)) THEN (((5e-1) * ((1) / (t_5 * (sqrt(((1) / t_5)))))) + ((1) / (t_10 + (sqrt(((1) + t_9)))))) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \sqrt{t\_9 + 1} - t\_10\\
t_12 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_13 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_14 := \sqrt{t\_13}\\
t_15 := \sqrt{t\_13 + 1} - t\_14\\
t_16 := \sqrt{t\_12}\\
t_17 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_12 + 1} - t\_16\right)\right) + t\_11\right) + t\_15\\
t_18 := 2 - \left(t\_6 + t\_16\right)\\
\mathbf{if}\;t\_17 \leq 0.2:\\
\;\;\;\;\mathsf{fma}\left(0.5, \frac{1}{t\_5 \cdot \sqrt{\frac{1}{t\_5}}}, \frac{1}{t\_10 + \sqrt{1 + t\_9}}\right)\\
\mathbf{elif}\;t\_17 \leq 1.999998:\\
\;\;\;\;\left(\left(1 + \frac{1}{t\_16 + \sqrt{1 + t\_12}}\right) - t\_6\right) + t\_15\\
\mathbf{elif}\;t\_17 \leq 3.0001:\\
\;\;\;\;\left(t\_18 + t\_11\right) + \frac{0.5}{t\_14}\\
\mathbf{else}:\\
\;\;\;\;\left(t\_18 + \left(1 - t\_10\right)\right) + t\_15\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 0.20000000000000001Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites17.0%
if 0.20000000000000001 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1.9999979999999999Initial program 92.0%
Applied rewrites93.9%
Taylor expanded in z around inf
Applied rewrites40.0%
Taylor expanded in x around 0
Applied rewrites28.9%
if 1.9999979999999999 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.0001000000000002Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in t around inf
Applied rewrites14.1%
Taylor expanded in t around 0
Applied rewrites14.1%
if 3.0001000000000002 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (- (sqrt (+ t_1 1.0)) (sqrt t_1)))
(t_3 (fmin (fmin x y) z))
(t_4 (fmin t_3 t))
(t_5 (fmax t_3 t))
(t_6 (sqrt t_5))
(t_7 (sqrt t_4))
(t_8 (sqrt (+ t_5 1.0))))
(if (<= (fmax x y) 4062571952146190.0)
(+
(+
(+ (- 1.0 t_7) (- (sqrt (+ (fmax x y) 1.0)) (sqrt (fmax x y))))
t_2)
(- t_8 t_6))
(+ (/ 1.0 (+ (sqrt (+ 1.0 t_4)) t_7)) (- t_2 (- t_6 t_8))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = sqrt((t_1 + 1.0)) - sqrt(t_1);
double t_3 = fmin(fmin(x, y), z);
double t_4 = fmin(t_3, t);
double t_5 = fmax(t_3, t);
double t_6 = sqrt(t_5);
double t_7 = sqrt(t_4);
double t_8 = sqrt((t_5 + 1.0));
double tmp;
if (fmax(x, y) <= 4062571952146190.0) {
tmp = (((1.0 - t_7) + (sqrt((fmax(x, y) + 1.0)) - sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6);
} else {
tmp = (1.0 / (sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = sqrt((t_1 + 1.0d0)) - sqrt(t_1)
t_3 = fmin(fmin(x, y), z)
t_4 = fmin(t_3, t)
t_5 = fmax(t_3, t)
t_6 = sqrt(t_5)
t_7 = sqrt(t_4)
t_8 = sqrt((t_5 + 1.0d0))
if (fmax(x, y) <= 4062571952146190.0d0) then
tmp = (((1.0d0 - t_7) + (sqrt((fmax(x, y) + 1.0d0)) - sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6)
else
tmp = (1.0d0 / (sqrt((1.0d0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = Math.sqrt((t_1 + 1.0)) - Math.sqrt(t_1);
double t_3 = fmin(fmin(x, y), z);
double t_4 = fmin(t_3, t);
double t_5 = fmax(t_3, t);
double t_6 = Math.sqrt(t_5);
double t_7 = Math.sqrt(t_4);
double t_8 = Math.sqrt((t_5 + 1.0));
double tmp;
if (fmax(x, y) <= 4062571952146190.0) {
tmp = (((1.0 - t_7) + (Math.sqrt((fmax(x, y) + 1.0)) - Math.sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6);
} else {
tmp = (1.0 / (Math.sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = math.sqrt((t_1 + 1.0)) - math.sqrt(t_1) t_3 = fmin(fmin(x, y), z) t_4 = fmin(t_3, t) t_5 = fmax(t_3, t) t_6 = math.sqrt(t_5) t_7 = math.sqrt(t_4) t_8 = math.sqrt((t_5 + 1.0)) tmp = 0 if fmax(x, y) <= 4062571952146190.0: tmp = (((1.0 - t_7) + (math.sqrt((fmax(x, y) + 1.0)) - math.sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6) else: tmp = (1.0 / (math.sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = Float64(sqrt(Float64(t_1 + 1.0)) - sqrt(t_1)) t_3 = fmin(fmin(x, y), z) t_4 = fmin(t_3, t) t_5 = fmax(t_3, t) t_6 = sqrt(t_5) t_7 = sqrt(t_4) t_8 = sqrt(Float64(t_5 + 1.0)) tmp = 0.0 if (fmax(x, y) <= 4062571952146190.0) tmp = Float64(Float64(Float64(Float64(1.0 - t_7) + Float64(sqrt(Float64(fmax(x, y) + 1.0)) - sqrt(fmax(x, y)))) + t_2) + Float64(t_8 - t_6)); else tmp = Float64(Float64(1.0 / Float64(sqrt(Float64(1.0 + t_4)) + t_7)) + Float64(t_2 - Float64(t_6 - t_8))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = sqrt((t_1 + 1.0)) - sqrt(t_1); t_3 = min(min(x, y), z); t_4 = min(t_3, t); t_5 = max(t_3, t); t_6 = sqrt(t_5); t_7 = sqrt(t_4); t_8 = sqrt((t_5 + 1.0)); tmp = 0.0; if (max(x, y) <= 4062571952146190.0) tmp = (((1.0 - t_7) + (sqrt((max(x, y) + 1.0)) - sqrt(max(x, y)))) + t_2) + (t_8 - t_6); else tmp = (1.0 / (sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[(N[Sqrt[N[(t$95$1 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$4 = N[Min[t$95$3, t], $MachinePrecision]}, Block[{t$95$5 = N[Max[t$95$3, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Sqrt[t$95$4], $MachinePrecision]}, Block[{t$95$8 = N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Max[x, y], $MachinePrecision], 4062571952146190.0], N[(N[(N[(N[(1.0 - t$95$7), $MachinePrecision] + N[(N[Sqrt[N[(N[Max[x, y], $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[N[Max[x, y], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision] + N[(t$95$8 - t$95$6), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / N[(N[Sqrt[N[(1.0 + t$95$4), $MachinePrecision]], $MachinePrecision] + t$95$7), $MachinePrecision]), $MachinePrecision] + N[(t$95$2 - N[(t$95$6 - t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET t_2 = ((sqrt((t_1 + (1)))) - (sqrt(t_1))) IN LET tmp_6 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 < z) THEN tmp_7 ELSE z ENDIF IN LET t_3 = tmp_5 IN LET tmp_8 = IF (t_3 < t) THEN t_3 ELSE t ENDIF IN LET t_4 = tmp_8 IN LET tmp_9 = IF (t_3 > t) THEN t_3 ELSE t ENDIF IN LET t_5 = tmp_9 IN LET t_6 = (sqrt(t_5)) IN LET t_7 = (sqrt(t_4)) IN LET t_8 = (sqrt((t_5 + (1)))) IN LET tmp_13 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_14 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_12 = IF (tmp_13 <= (4062571952146190)) THEN (((((1) - t_7) + ((sqrt((tmp_14 + (1)))) - (sqrt(tmp_15)))) + t_2) + (t_8 - t_6)) ELSE (((1) / ((sqrt(((1) + t_4))) + t_7)) + (t_2 - (t_6 - t_8))) ENDIF IN tmp_12 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \sqrt{t\_1 + 1} - \sqrt{t\_1}\\
t_3 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_4 := \mathsf{min}\left(t\_3, t\right)\\
t_5 := \mathsf{max}\left(t\_3, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \sqrt{t\_4}\\
t_8 := \sqrt{t\_5 + 1}\\
\mathbf{if}\;\mathsf{max}\left(x, y\right) \leq 4062571952146190:\\
\;\;\;\;\left(\left(\left(1 - t\_7\right) + \left(\sqrt{\mathsf{max}\left(x, y\right) + 1} - \sqrt{\mathsf{max}\left(x, y\right)}\right)\right) + t\_2\right) + \left(t\_8 - t\_6\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{1 + t\_4} + t\_7} + \left(t\_2 - \left(t\_6 - t\_8\right)\right)\\
\end{array}
if y < 4062571952146190Initial program 92.0%
Taylor expanded in x around 0
Applied rewrites48.4%
if 4062571952146190 < y Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Applied rewrites52.4%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmin (fmin x z) t)) (t_2 (fmax (fmin x z) t)))
(+
(+
(+
(/ 1.0 (+ (sqrt t_1) (sqrt (+ 1.0 t_1))))
(- (sqrt (+ y 1.0)) (sqrt y)))
(- (sqrt (+ (fmax x z) 1.0)) (sqrt (fmax x z))))
(- (sqrt (+ t_2 1.0)) (sqrt t_2)))))double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, z), t);
double t_2 = fmax(fmin(x, z), t);
return (((1.0 / (sqrt(t_1) + sqrt((1.0 + t_1)))) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((fmax(x, z) + 1.0)) - sqrt(fmax(x, z)))) + (sqrt((t_2 + 1.0)) - sqrt(t_2));
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
t_1 = fmin(fmin(x, z), t)
t_2 = fmax(fmin(x, z), t)
code = (((1.0d0 / (sqrt(t_1) + sqrt((1.0d0 + t_1)))) + (sqrt((y + 1.0d0)) - sqrt(y))) + (sqrt((fmax(x, z) + 1.0d0)) - sqrt(fmax(x, z)))) + (sqrt((t_2 + 1.0d0)) - sqrt(t_2))
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmin(fmin(x, z), t);
double t_2 = fmax(fmin(x, z), t);
return (((1.0 / (Math.sqrt(t_1) + Math.sqrt((1.0 + t_1)))) + (Math.sqrt((y + 1.0)) - Math.sqrt(y))) + (Math.sqrt((fmax(x, z) + 1.0)) - Math.sqrt(fmax(x, z)))) + (Math.sqrt((t_2 + 1.0)) - Math.sqrt(t_2));
}
def code(x, y, z, t): t_1 = fmin(fmin(x, z), t) t_2 = fmax(fmin(x, z), t) return (((1.0 / (math.sqrt(t_1) + math.sqrt((1.0 + t_1)))) + (math.sqrt((y + 1.0)) - math.sqrt(y))) + (math.sqrt((fmax(x, z) + 1.0)) - math.sqrt(fmax(x, z)))) + (math.sqrt((t_2 + 1.0)) - math.sqrt(t_2))
function code(x, y, z, t) t_1 = fmin(fmin(x, z), t) t_2 = fmax(fmin(x, z), t) return Float64(Float64(Float64(Float64(1.0 / Float64(sqrt(t_1) + sqrt(Float64(1.0 + t_1)))) + Float64(sqrt(Float64(y + 1.0)) - sqrt(y))) + Float64(sqrt(Float64(fmax(x, z) + 1.0)) - sqrt(fmax(x, z)))) + Float64(sqrt(Float64(t_2 + 1.0)) - sqrt(t_2))) end
function tmp = code(x, y, z, t) t_1 = min(min(x, z), t); t_2 = max(min(x, z), t); tmp = (((1.0 / (sqrt(t_1) + sqrt((1.0 + t_1)))) + (sqrt((y + 1.0)) - sqrt(y))) + (sqrt((max(x, z) + 1.0)) - sqrt(max(x, z)))) + (sqrt((t_2 + 1.0)) - sqrt(t_2)); end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Min[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]}, N[(N[(N[(N[(1.0 / N[(N[Sqrt[t$95$1], $MachinePrecision] + N[Sqrt[N[(1.0 + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(y + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(N[Max[x, z], $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[N[Max[x, z], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_3 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_1 = IF (tmp_2 < t) THEN tmp_3 ELSE t ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_7 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_5 = IF (tmp_6 > t) THEN tmp_7 ELSE t ENDIF IN LET t_2 = tmp_5 IN LET tmp_8 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_9 = IF (x > z) THEN x ELSE z ENDIF IN ((((1) / ((sqrt(t_1)) + (sqrt(((1) + t_1))))) + ((sqrt((y + (1)))) - (sqrt(y)))) + ((sqrt((tmp_8 + (1)))) - (sqrt(tmp_9)))) + ((sqrt((t_2 + (1)))) - (sqrt(t_2))) END code
\begin{array}{l}
t_1 := \mathsf{min}\left(\mathsf{min}\left(x, z\right), t\right)\\
t_2 := \mathsf{max}\left(\mathsf{min}\left(x, z\right), t\right)\\
\left(\left(\frac{1}{\sqrt{t\_1} + \sqrt{1 + t\_1}} + \left(\sqrt{y + 1} - \sqrt{y}\right)\right) + \left(\sqrt{\mathsf{max}\left(x, z\right) + 1} - \sqrt{\mathsf{max}\left(x, z\right)}\right)\right) + \left(\sqrt{t\_2 + 1} - \sqrt{t\_2}\right)
\end{array}
Initial program 92.0%
Applied rewrites94.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (- (sqrt (+ t_1 1.0)) (sqrt t_1)))
(t_3 (fmin (fmin x y) z))
(t_4 (fmin t_3 t))
(t_5 (fmax t_3 t))
(t_6 (sqrt t_5))
(t_7 (sqrt t_4))
(t_8 (sqrt (+ t_5 1.0))))
(if (<= (fmax x y) 1.2000225462603408e+30)
(+
(+
(+
(- (sqrt (+ t_4 1.0)) t_7)
(- (sqrt (+ (fmax x y) 1.0)) (sqrt (fmax x y))))
t_2)
(- t_8 t_6))
(+ (/ 1.0 (+ (sqrt (+ 1.0 t_4)) t_7)) (- t_2 (- t_6 t_8))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = sqrt((t_1 + 1.0)) - sqrt(t_1);
double t_3 = fmin(fmin(x, y), z);
double t_4 = fmin(t_3, t);
double t_5 = fmax(t_3, t);
double t_6 = sqrt(t_5);
double t_7 = sqrt(t_4);
double t_8 = sqrt((t_5 + 1.0));
double tmp;
if (fmax(x, y) <= 1.2000225462603408e+30) {
tmp = (((sqrt((t_4 + 1.0)) - t_7) + (sqrt((fmax(x, y) + 1.0)) - sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6);
} else {
tmp = (1.0 / (sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = sqrt((t_1 + 1.0d0)) - sqrt(t_1)
t_3 = fmin(fmin(x, y), z)
t_4 = fmin(t_3, t)
t_5 = fmax(t_3, t)
t_6 = sqrt(t_5)
t_7 = sqrt(t_4)
t_8 = sqrt((t_5 + 1.0d0))
if (fmax(x, y) <= 1.2000225462603408d+30) then
tmp = (((sqrt((t_4 + 1.0d0)) - t_7) + (sqrt((fmax(x, y) + 1.0d0)) - sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6)
else
tmp = (1.0d0 / (sqrt((1.0d0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = Math.sqrt((t_1 + 1.0)) - Math.sqrt(t_1);
double t_3 = fmin(fmin(x, y), z);
double t_4 = fmin(t_3, t);
double t_5 = fmax(t_3, t);
double t_6 = Math.sqrt(t_5);
double t_7 = Math.sqrt(t_4);
double t_8 = Math.sqrt((t_5 + 1.0));
double tmp;
if (fmax(x, y) <= 1.2000225462603408e+30) {
tmp = (((Math.sqrt((t_4 + 1.0)) - t_7) + (Math.sqrt((fmax(x, y) + 1.0)) - Math.sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6);
} else {
tmp = (1.0 / (Math.sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = math.sqrt((t_1 + 1.0)) - math.sqrt(t_1) t_3 = fmin(fmin(x, y), z) t_4 = fmin(t_3, t) t_5 = fmax(t_3, t) t_6 = math.sqrt(t_5) t_7 = math.sqrt(t_4) t_8 = math.sqrt((t_5 + 1.0)) tmp = 0 if fmax(x, y) <= 1.2000225462603408e+30: tmp = (((math.sqrt((t_4 + 1.0)) - t_7) + (math.sqrt((fmax(x, y) + 1.0)) - math.sqrt(fmax(x, y)))) + t_2) + (t_8 - t_6) else: tmp = (1.0 / (math.sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = Float64(sqrt(Float64(t_1 + 1.0)) - sqrt(t_1)) t_3 = fmin(fmin(x, y), z) t_4 = fmin(t_3, t) t_5 = fmax(t_3, t) t_6 = sqrt(t_5) t_7 = sqrt(t_4) t_8 = sqrt(Float64(t_5 + 1.0)) tmp = 0.0 if (fmax(x, y) <= 1.2000225462603408e+30) tmp = Float64(Float64(Float64(Float64(sqrt(Float64(t_4 + 1.0)) - t_7) + Float64(sqrt(Float64(fmax(x, y) + 1.0)) - sqrt(fmax(x, y)))) + t_2) + Float64(t_8 - t_6)); else tmp = Float64(Float64(1.0 / Float64(sqrt(Float64(1.0 + t_4)) + t_7)) + Float64(t_2 - Float64(t_6 - t_8))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = sqrt((t_1 + 1.0)) - sqrt(t_1); t_3 = min(min(x, y), z); t_4 = min(t_3, t); t_5 = max(t_3, t); t_6 = sqrt(t_5); t_7 = sqrt(t_4); t_8 = sqrt((t_5 + 1.0)); tmp = 0.0; if (max(x, y) <= 1.2000225462603408e+30) tmp = (((sqrt((t_4 + 1.0)) - t_7) + (sqrt((max(x, y) + 1.0)) - sqrt(max(x, y)))) + t_2) + (t_8 - t_6); else tmp = (1.0 / (sqrt((1.0 + t_4)) + t_7)) + (t_2 - (t_6 - t_8)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[(N[Sqrt[N[(t$95$1 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$4 = N[Min[t$95$3, t], $MachinePrecision]}, Block[{t$95$5 = N[Max[t$95$3, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Sqrt[t$95$4], $MachinePrecision]}, Block[{t$95$8 = N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Max[x, y], $MachinePrecision], 1.2000225462603408e+30], N[(N[(N[(N[(N[Sqrt[N[(t$95$4 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$7), $MachinePrecision] + N[(N[Sqrt[N[(N[Max[x, y], $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[N[Max[x, y], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision] + N[(t$95$8 - t$95$6), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / N[(N[Sqrt[N[(1.0 + t$95$4), $MachinePrecision]], $MachinePrecision] + t$95$7), $MachinePrecision]), $MachinePrecision] + N[(t$95$2 - N[(t$95$6 - t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET t_2 = ((sqrt((t_1 + (1)))) - (sqrt(t_1))) IN LET tmp_6 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 < z) THEN tmp_7 ELSE z ENDIF IN LET t_3 = tmp_5 IN LET tmp_8 = IF (t_3 < t) THEN t_3 ELSE t ENDIF IN LET t_4 = tmp_8 IN LET tmp_9 = IF (t_3 > t) THEN t_3 ELSE t ENDIF IN LET t_5 = tmp_9 IN LET t_6 = (sqrt(t_5)) IN LET t_7 = (sqrt(t_4)) IN LET t_8 = (sqrt((t_5 + (1)))) IN LET tmp_13 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_14 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_12 = IF (tmp_13 <= (1200022546260340751408815931392)) THEN (((((sqrt((t_4 + (1)))) - t_7) + ((sqrt((tmp_14 + (1)))) - (sqrt(tmp_15)))) + t_2) + (t_8 - t_6)) ELSE (((1) / ((sqrt(((1) + t_4))) + t_7)) + (t_2 - (t_6 - t_8))) ENDIF IN tmp_12 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \sqrt{t\_1 + 1} - \sqrt{t\_1}\\
t_3 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_4 := \mathsf{min}\left(t\_3, t\right)\\
t_5 := \mathsf{max}\left(t\_3, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \sqrt{t\_4}\\
t_8 := \sqrt{t\_5 + 1}\\
\mathbf{if}\;\mathsf{max}\left(x, y\right) \leq 1.2000225462603408 \cdot 10^{+30}:\\
\;\;\;\;\left(\left(\left(\sqrt{t\_4 + 1} - t\_7\right) + \left(\sqrt{\mathsf{max}\left(x, y\right) + 1} - \sqrt{\mathsf{max}\left(x, y\right)}\right)\right) + t\_2\right) + \left(t\_8 - t\_6\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{1 + t\_4} + t\_7} + \left(t\_2 - \left(t\_6 - t\_8\right)\right)\\
\end{array}
if y < 1.2000225462603408e30Initial program 92.0%
if 1.2000225462603408e30 < y Initial program 92.0%
Applied rewrites94.0%
Taylor expanded in y around inf
Applied rewrites52.4%
Applied rewrites52.4%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (fmin t_3 t_7))
(t_11 (fmax t_2 t_8))
(t_12 (sqrt t_9))
(t_13 (- (sqrt (+ t_9 1.0)) t_12))
(t_14 (sqrt t_10))
(t_15
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_14))
t_13)))
(if (<= t_15 0.0)
(fma
0.5
(/ 1.0 (* t_5 (sqrt (/ 1.0 t_5))))
(/ 1.0 (+ t_12 (sqrt (+ 1.0 t_9)))))
(if (<= t_15 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_12))) t_6)
(if (<= t_15 2.999995)
(- (- (+ 1.0 (sqrt (+ 1.0 t_10))) t_6) (- t_14 t_13))
(+
(+ (- 2.0 (+ t_6 t_14)) (- 1.0 t_12))
(- (sqrt (+ t_11 1.0)) (sqrt t_11))))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = fmax(t_2, t_8);
double t_12 = sqrt(t_9);
double t_13 = sqrt((t_9 + 1.0)) - t_12;
double t_14 = sqrt(t_10);
double t_15 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_14)) + t_13;
double tmp;
if (t_15 <= 0.0) {
tmp = fma(0.5, (1.0 / (t_5 * sqrt((1.0 / t_5)))), (1.0 / (t_12 + sqrt((1.0 + t_9)))));
} else if (t_15 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_12))) - t_6;
} else if (t_15 <= 2.999995) {
tmp = ((1.0 + sqrt((1.0 + t_10))) - t_6) - (t_14 - t_13);
} else {
tmp = ((2.0 - (t_6 + t_14)) + (1.0 - t_12)) + (sqrt((t_11 + 1.0)) - sqrt(t_11));
}
return tmp;
}
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = fmax(t_2, t_8) t_12 = sqrt(t_9) t_13 = Float64(sqrt(Float64(t_9 + 1.0)) - t_12) t_14 = sqrt(t_10) t_15 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_14)) + t_13) tmp = 0.0 if (t_15 <= 0.0) tmp = fma(0.5, Float64(1.0 / Float64(t_5 * sqrt(Float64(1.0 / t_5)))), Float64(1.0 / Float64(t_12 + sqrt(Float64(1.0 + t_9))))); elseif (t_15 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_12))) - t_6); elseif (t_15 <= 2.999995) tmp = Float64(Float64(Float64(1.0 + sqrt(Float64(1.0 + t_10))) - t_6) - Float64(t_14 - t_13)); else tmp = Float64(Float64(Float64(2.0 - Float64(t_6 + t_14)) + Float64(1.0 - t_12)) + Float64(sqrt(Float64(t_11 + 1.0)) - sqrt(t_11))); end return tmp end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$13 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$12), $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$15 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision] + t$95$13), $MachinePrecision]}, If[LessEqual[t$95$15, 0.0], N[(0.5 * N[(1.0 / N[(t$95$5 * N[Sqrt[N[(1.0 / t$95$5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$12 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$15, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$12), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$15, 2.999995], N[(N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] - N[(t$95$14 - t$95$13), $MachinePrecision]), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$6 + t$95$14), $MachinePrecision]), $MachinePrecision] + N[(1.0 - t$95$12), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$11], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_11 = tmp_21 IN LET t_12 = (sqrt(t_9)) IN LET t_13 = ((sqrt((t_9 + (1)))) - t_12) IN LET t_14 = (sqrt(t_10)) IN LET t_15 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_14)) + t_13) IN LET tmp_24 = IF (t_15 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((((1) + (sqrt(((1) + t_10)))) - t_6) - (t_14 - t_13)) ELSE ((((2) - (t_6 + t_14)) + ((1) - t_12)) + ((sqrt((t_11 + (1)))) - (sqrt(t_11)))) ENDIF IN LET tmp_23 = IF (t_15 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_12))) - t_6) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_15 <= (0)) THEN (((5e-1) * ((1) / (t_5 * (sqrt(((1) / t_5)))))) + ((1) / (t_12 + (sqrt(((1) + t_9)))))) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_11 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_12 := \sqrt{t\_9}\\
t_13 := \sqrt{t\_9 + 1} - t\_12\\
t_14 := \sqrt{t\_10}\\
t_15 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_14\right)\right) + t\_13\\
\mathbf{if}\;t\_15 \leq 0:\\
\;\;\;\;\mathsf{fma}\left(0.5, \frac{1}{t\_5 \cdot \sqrt{\frac{1}{t\_5}}}, \frac{1}{t\_12 + \sqrt{1 + t\_9}}\right)\\
\mathbf{elif}\;t\_15 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_12}\right) - t\_6\\
\mathbf{elif}\;t\_15 \leq 2.999995:\\
\;\;\;\;\left(\left(1 + \sqrt{1 + t\_10}\right) - t\_6\right) - \left(t\_14 - t\_13\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_6 + t\_14\right)\right) + \left(1 - t\_12\right)\right) + \left(\sqrt{t\_11 + 1} - \sqrt{t\_11}\right)\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 0.0Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites17.0%
if 0.0 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites54.5%
Taylor expanded in t around inf
Applied rewrites20.8%
Taylor expanded in x around 0
Applied rewrites16.9%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmin (fmin x y) z))
(t_3 (fmin t_2 t))
(t_4 (sqrt t_3))
(t_5 (fmax (fmax x y) t_1))
(t_6 (sqrt t_5))
(t_7 (fmax t_2 t))
(t_8 (- (sqrt (+ t_7 1.0)) (sqrt t_7)))
(t_9 (fmin (fmax x y) t_1))
(t_10 (sqrt t_9))
(t_11
(+ (- (sqrt (+ t_3 1.0)) t_4) (- (sqrt (+ t_9 1.0)) t_10))))
(if (<= t_11 0.2)
(fma
0.5
(/ 1.0 (* t_3 (sqrt (/ 1.0 t_3))))
(/ 1.0 (+ t_6 (sqrt (+ 1.0 t_5)))))
(if (<= t_11 1.999998)
(+ (- (+ 1.0 (/ 1.0 (+ t_10 (sqrt (+ 1.0 t_9))))) t_4) t_8)
(+ (+ (- 2.0 (+ t_4 t_10)) (- (sqrt (+ t_5 1.0)) t_6)) t_8)))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmin(fmin(x, y), z);
double t_3 = fmin(t_2, t);
double t_4 = sqrt(t_3);
double t_5 = fmax(fmax(x, y), t_1);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_2, t);
double t_8 = sqrt((t_7 + 1.0)) - sqrt(t_7);
double t_9 = fmin(fmax(x, y), t_1);
double t_10 = sqrt(t_9);
double t_11 = (sqrt((t_3 + 1.0)) - t_4) + (sqrt((t_9 + 1.0)) - t_10);
double tmp;
if (t_11 <= 0.2) {
tmp = fma(0.5, (1.0 / (t_3 * sqrt((1.0 / t_3)))), (1.0 / (t_6 + sqrt((1.0 + t_5)))));
} else if (t_11 <= 1.999998) {
tmp = ((1.0 + (1.0 / (t_10 + sqrt((1.0 + t_9))))) - t_4) + t_8;
} else {
tmp = ((2.0 - (t_4 + t_10)) + (sqrt((t_5 + 1.0)) - t_6)) + t_8;
}
return tmp;
}
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmin(fmin(x, y), z) t_3 = fmin(t_2, t) t_4 = sqrt(t_3) t_5 = fmax(fmax(x, y), t_1) t_6 = sqrt(t_5) t_7 = fmax(t_2, t) t_8 = Float64(sqrt(Float64(t_7 + 1.0)) - sqrt(t_7)) t_9 = fmin(fmax(x, y), t_1) t_10 = sqrt(t_9) t_11 = Float64(Float64(sqrt(Float64(t_3 + 1.0)) - t_4) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) tmp = 0.0 if (t_11 <= 0.2) tmp = fma(0.5, Float64(1.0 / Float64(t_3 * sqrt(Float64(1.0 / t_3)))), Float64(1.0 / Float64(t_6 + sqrt(Float64(1.0 + t_5))))); elseif (t_11 <= 1.999998) tmp = Float64(Float64(Float64(1.0 + Float64(1.0 / Float64(t_10 + sqrt(Float64(1.0 + t_9))))) - t_4) + t_8); else tmp = Float64(Float64(Float64(2.0 - Float64(t_4 + t_10)) + Float64(sqrt(Float64(t_5 + 1.0)) - t_6)) + t_8); end return tmp end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$3 = N[Min[t$95$2, t], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$2, t], $MachinePrecision]}, Block[{t$95$8 = N[(N[Sqrt[N[(t$95$7 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$7], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[(N[(N[Sqrt[N[(t$95$3 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$4), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$11, 0.2], N[(0.5 * N[(1.0 / N[(t$95$3 * N[Sqrt[N[(1.0 / t$95$3), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(t$95$6 + N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$11, 1.999998], N[(N[(N[(1.0 + N[(1.0 / N[(t$95$10 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$4), $MachinePrecision] + t$95$8), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$4 + t$95$10), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision]), $MachinePrecision] + t$95$8), $MachinePrecision]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 < z) THEN tmp_7 ELSE z ENDIF IN LET t_2 = tmp_5 IN LET tmp_8 = IF (t_2 < t) THEN t_2 ELSE t ENDIF IN LET t_3 = tmp_8 IN LET t_4 = (sqrt(t_3)) IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_12 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_10 = IF (tmp_11 > t_1) THEN tmp_12 ELSE t_1 ENDIF IN LET t_5 = tmp_10 IN LET t_6 = (sqrt(t_5)) IN LET tmp_13 = IF (t_2 > t) THEN t_2 ELSE t ENDIF IN LET t_7 = tmp_13 IN LET t_8 = ((sqrt((t_7 + (1)))) - (sqrt(t_7))) IN LET tmp_16 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_17 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (tmp_16 < t_1) THEN tmp_17 ELSE t_1 ENDIF IN LET t_9 = tmp_15 IN LET t_10 = (sqrt(t_9)) IN LET t_11 = (((sqrt((t_3 + (1)))) - t_4) + ((sqrt((t_9 + (1)))) - t_10)) IN LET tmp_19 = IF (t_11 <= (19999979999999999424886709675774909555912017822265625e-52)) THEN ((((1) + ((1) / (t_10 + (sqrt(((1) + t_9)))))) - t_4) + t_8) ELSE ((((2) - (t_4 + t_10)) + ((sqrt((t_5 + (1)))) - t_6)) + t_8) ENDIF IN LET tmp_18 = IF (t_11 <= (200000000000000011102230246251565404236316680908203125e-54)) THEN (((5e-1) * ((1) / (t_3 * (sqrt(((1) / t_3)))))) + ((1) / (t_6 + (sqrt(((1) + t_5)))))) ELSE tmp_19 ENDIF IN tmp_18 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_3 := \mathsf{min}\left(t\_2, t\right)\\
t_4 := \sqrt{t\_3}\\
t_5 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_2, t\right)\\
t_8 := \sqrt{t\_7 + 1} - \sqrt{t\_7}\\
t_9 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \left(\sqrt{t\_3 + 1} - t\_4\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\\
\mathbf{if}\;t\_11 \leq 0.2:\\
\;\;\;\;\mathsf{fma}\left(0.5, \frac{1}{t\_3 \cdot \sqrt{\frac{1}{t\_3}}}, \frac{1}{t\_6 + \sqrt{1 + t\_5}}\right)\\
\mathbf{elif}\;t\_11 \leq 1.999998:\\
\;\;\;\;\left(\left(1 + \frac{1}{t\_10 + \sqrt{1 + t\_9}}\right) - t\_4\right) + t\_8\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_4 + t\_10\right)\right) + \left(\sqrt{t\_5 + 1} - t\_6\right)\right) + t\_8\\
\end{array}
if (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 0.20000000000000001Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites17.0%
if 0.20000000000000001 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) < 1.9999979999999999Initial program 92.0%
Applied rewrites93.9%
Taylor expanded in z around inf
Applied rewrites40.0%
Taylor expanded in x around 0
Applied rewrites28.9%
if 1.9999979999999999 < (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (fmin t_3 t_7))
(t_11 (fmax t_2 t_8))
(t_12 (sqrt t_9))
(t_13 (- (sqrt (+ t_9 1.0)) t_12))
(t_14 (- (sqrt (+ t_11 1.0)) (sqrt t_11)))
(t_15 (sqrt t_10))
(t_16
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_15))
t_13)))
(if (<= t_16 1.0)
(+ (+ (- (sqrt (+ 1.0 t_5)) t_6) (/ 0.5 t_12)) t_14)
(if (<= t_16 2.999995)
(- (- (+ 1.0 (sqrt (+ 1.0 t_10))) t_6) (- t_15 t_13))
(+ (+ (- 2.0 (+ t_6 t_15)) (- 1.0 t_12)) t_14)))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = fmax(t_2, t_8);
double t_12 = sqrt(t_9);
double t_13 = sqrt((t_9 + 1.0)) - t_12;
double t_14 = sqrt((t_11 + 1.0)) - sqrt(t_11);
double t_15 = sqrt(t_10);
double t_16 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_15)) + t_13;
double tmp;
if (t_16 <= 1.0) {
tmp = ((sqrt((1.0 + t_5)) - t_6) + (0.5 / t_12)) + t_14;
} else if (t_16 <= 2.999995) {
tmp = ((1.0 + sqrt((1.0 + t_10))) - t_6) - (t_15 - t_13);
} else {
tmp = ((2.0 - (t_6 + t_15)) + (1.0 - t_12)) + t_14;
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = fmin(t_3, t_7)
t_11 = fmax(t_2, t_8)
t_12 = sqrt(t_9)
t_13 = sqrt((t_9 + 1.0d0)) - t_12
t_14 = sqrt((t_11 + 1.0d0)) - sqrt(t_11)
t_15 = sqrt(t_10)
t_16 = ((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_10 + 1.0d0)) - t_15)) + t_13
if (t_16 <= 1.0d0) then
tmp = ((sqrt((1.0d0 + t_5)) - t_6) + (0.5d0 / t_12)) + t_14
else if (t_16 <= 2.999995d0) then
tmp = ((1.0d0 + sqrt((1.0d0 + t_10))) - t_6) - (t_15 - t_13)
else
tmp = ((2.0d0 - (t_6 + t_15)) + (1.0d0 - t_12)) + t_14
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = fmax(t_2, t_8);
double t_12 = Math.sqrt(t_9);
double t_13 = Math.sqrt((t_9 + 1.0)) - t_12;
double t_14 = Math.sqrt((t_11 + 1.0)) - Math.sqrt(t_11);
double t_15 = Math.sqrt(t_10);
double t_16 = ((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_10 + 1.0)) - t_15)) + t_13;
double tmp;
if (t_16 <= 1.0) {
tmp = ((Math.sqrt((1.0 + t_5)) - t_6) + (0.5 / t_12)) + t_14;
} else if (t_16 <= 2.999995) {
tmp = ((1.0 + Math.sqrt((1.0 + t_10))) - t_6) - (t_15 - t_13);
} else {
tmp = ((2.0 - (t_6 + t_15)) + (1.0 - t_12)) + t_14;
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = fmax(t_2, t_8) t_12 = math.sqrt(t_9) t_13 = math.sqrt((t_9 + 1.0)) - t_12 t_14 = math.sqrt((t_11 + 1.0)) - math.sqrt(t_11) t_15 = math.sqrt(t_10) t_16 = ((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_10 + 1.0)) - t_15)) + t_13 tmp = 0 if t_16 <= 1.0: tmp = ((math.sqrt((1.0 + t_5)) - t_6) + (0.5 / t_12)) + t_14 elif t_16 <= 2.999995: tmp = ((1.0 + math.sqrt((1.0 + t_10))) - t_6) - (t_15 - t_13) else: tmp = ((2.0 - (t_6 + t_15)) + (1.0 - t_12)) + t_14 return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = fmax(t_2, t_8) t_12 = sqrt(t_9) t_13 = Float64(sqrt(Float64(t_9 + 1.0)) - t_12) t_14 = Float64(sqrt(Float64(t_11 + 1.0)) - sqrt(t_11)) t_15 = sqrt(t_10) t_16 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_15)) + t_13) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(Float64(Float64(sqrt(Float64(1.0 + t_5)) - t_6) + Float64(0.5 / t_12)) + t_14); elseif (t_16 <= 2.999995) tmp = Float64(Float64(Float64(1.0 + sqrt(Float64(1.0 + t_10))) - t_6) - Float64(t_15 - t_13)); else tmp = Float64(Float64(Float64(2.0 - Float64(t_6 + t_15)) + Float64(1.0 - t_12)) + t_14); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = min(t_3, t_7); t_11 = max(t_2, t_8); t_12 = sqrt(t_9); t_13 = sqrt((t_9 + 1.0)) - t_12; t_14 = sqrt((t_11 + 1.0)) - sqrt(t_11); t_15 = sqrt(t_10); t_16 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_15)) + t_13; tmp = 0.0; if (t_16 <= 1.0) tmp = ((sqrt((1.0 + t_5)) - t_6) + (0.5 / t_12)) + t_14; elseif (t_16 <= 2.999995) tmp = ((1.0 + sqrt((1.0 + t_10))) - t_6) - (t_15 - t_13); else tmp = ((2.0 - (t_6 + t_15)) + (1.0 - t_12)) + t_14; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$12 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$13 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$12), $MachinePrecision]}, Block[{t$95$14 = N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$11], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$15), $MachinePrecision]), $MachinePrecision] + t$95$13), $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(0.5 / t$95$12), $MachinePrecision]), $MachinePrecision] + t$95$14), $MachinePrecision], If[LessEqual[t$95$16, 2.999995], N[(N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] - N[(t$95$15 - t$95$13), $MachinePrecision]), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$6 + t$95$15), $MachinePrecision]), $MachinePrecision] + N[(1.0 - t$95$12), $MachinePrecision]), $MachinePrecision] + t$95$14), $MachinePrecision]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_11 = tmp_21 IN LET t_12 = (sqrt(t_9)) IN LET t_13 = ((sqrt((t_9 + (1)))) - t_12) IN LET t_14 = ((sqrt((t_11 + (1)))) - (sqrt(t_11))) IN LET t_15 = (sqrt(t_10)) IN LET t_16 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_15)) + t_13) IN LET tmp_23 = IF (t_16 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((((1) + (sqrt(((1) + t_10)))) - t_6) - (t_15 - t_13)) ELSE ((((2) - (t_6 + t_15)) + ((1) - t_12)) + t_14) ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN ((((sqrt(((1) + t_5))) - t_6) + ((5e-1) / t_12)) + t_14) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_11 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_12 := \sqrt{t\_9}\\
t_13 := \sqrt{t\_9 + 1} - t\_12\\
t_14 := \sqrt{t\_11 + 1} - \sqrt{t\_11}\\
t_15 := \sqrt{t\_10}\\
t_16 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_15\right)\right) + t\_13\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;\left(\left(\sqrt{1 + t\_5} - t\_6\right) + \frac{0.5}{t\_12}\right) + t\_14\\
\mathbf{elif}\;t\_16 \leq 2.999995:\\
\;\;\;\;\left(\left(1 + \sqrt{1 + t\_10}\right) - t\_6\right) - \left(t\_15 - t\_13\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_6 + t\_15\right)\right) + \left(1 - t\_12\right)\right) + t\_14\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Taylor expanded in z around inf
Applied rewrites47.5%
Taylor expanded in z around 0
Applied rewrites47.5%
Taylor expanded in y around inf
Applied rewrites26.9%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites54.5%
Taylor expanded in t around inf
Applied rewrites20.8%
Taylor expanded in x around 0
Applied rewrites16.9%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (fmin t_3 t_7))
(t_11 (sqrt t_9))
(t_12 (- (sqrt (+ t_9 1.0)) t_11))
(t_13 (sqrt t_10))
(t_14
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_13))
t_12))
(t_15 (fmax t_2 t_8)))
(if (<= t_14 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_11))) t_6)
(if (<= t_14 2.999995)
(- (- (+ 1.0 (sqrt (+ 1.0 t_10))) t_6) (- t_13 t_12))
(+
(+ (- 2.0 (+ t_6 t_13)) (- 1.0 t_11))
(- (sqrt (+ t_15 1.0)) (sqrt t_15)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = sqrt(t_9);
double t_12 = sqrt((t_9 + 1.0)) - t_11;
double t_13 = sqrt(t_10);
double t_14 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_13)) + t_12;
double t_15 = fmax(t_2, t_8);
double tmp;
if (t_14 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6;
} else if (t_14 <= 2.999995) {
tmp = ((1.0 + sqrt((1.0 + t_10))) - t_6) - (t_13 - t_12);
} else {
tmp = ((2.0 - (t_6 + t_13)) + (1.0 - t_11)) + (sqrt((t_15 + 1.0)) - sqrt(t_15));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = fmin(t_3, t_7)
t_11 = sqrt(t_9)
t_12 = sqrt((t_9 + 1.0d0)) - t_11
t_13 = sqrt(t_10)
t_14 = ((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_10 + 1.0d0)) - t_13)) + t_12
t_15 = fmax(t_2, t_8)
if (t_14 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_11))) - t_6
else if (t_14 <= 2.999995d0) then
tmp = ((1.0d0 + sqrt((1.0d0 + t_10))) - t_6) - (t_13 - t_12)
else
tmp = ((2.0d0 - (t_6 + t_13)) + (1.0d0 - t_11)) + (sqrt((t_15 + 1.0d0)) - sqrt(t_15))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = Math.sqrt(t_9);
double t_12 = Math.sqrt((t_9 + 1.0)) - t_11;
double t_13 = Math.sqrt(t_10);
double t_14 = ((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_10 + 1.0)) - t_13)) + t_12;
double t_15 = fmax(t_2, t_8);
double tmp;
if (t_14 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6;
} else if (t_14 <= 2.999995) {
tmp = ((1.0 + Math.sqrt((1.0 + t_10))) - t_6) - (t_13 - t_12);
} else {
tmp = ((2.0 - (t_6 + t_13)) + (1.0 - t_11)) + (Math.sqrt((t_15 + 1.0)) - Math.sqrt(t_15));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = math.sqrt(t_9) t_12 = math.sqrt((t_9 + 1.0)) - t_11 t_13 = math.sqrt(t_10) t_14 = ((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_10 + 1.0)) - t_13)) + t_12 t_15 = fmax(t_2, t_8) tmp = 0 if t_14 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6 elif t_14 <= 2.999995: tmp = ((1.0 + math.sqrt((1.0 + t_10))) - t_6) - (t_13 - t_12) else: tmp = ((2.0 - (t_6 + t_13)) + (1.0 - t_11)) + (math.sqrt((t_15 + 1.0)) - math.sqrt(t_15)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = sqrt(t_9) t_12 = Float64(sqrt(Float64(t_9 + 1.0)) - t_11) t_13 = sqrt(t_10) t_14 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_13)) + t_12) t_15 = fmax(t_2, t_8) tmp = 0.0 if (t_14 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_11))) - t_6); elseif (t_14 <= 2.999995) tmp = Float64(Float64(Float64(1.0 + sqrt(Float64(1.0 + t_10))) - t_6) - Float64(t_13 - t_12)); else tmp = Float64(Float64(Float64(2.0 - Float64(t_6 + t_13)) + Float64(1.0 - t_11)) + Float64(sqrt(Float64(t_15 + 1.0)) - sqrt(t_15))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = min(t_3, t_7); t_11 = sqrt(t_9); t_12 = sqrt((t_9 + 1.0)) - t_11; t_13 = sqrt(t_10); t_14 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_13)) + t_12; t_15 = max(t_2, t_8); tmp = 0.0; if (t_14 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6; elseif (t_14 <= 2.999995) tmp = ((1.0 + sqrt((1.0 + t_10))) - t_6) - (t_13 - t_12); else tmp = ((2.0 - (t_6 + t_13)) + (1.0 - t_11)) + (sqrt((t_15 + 1.0)) - sqrt(t_15)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$12 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$14 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision] + t$95$12), $MachinePrecision]}, Block[{t$95$15 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, If[LessEqual[t$95$14, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$14, 2.999995], N[(N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] - N[(t$95$13 - t$95$12), $MachinePrecision]), $MachinePrecision], N[(N[(N[(2.0 - N[(t$95$6 + t$95$13), $MachinePrecision]), $MachinePrecision] + N[(1.0 - t$95$11), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$15 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$15], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET t_11 = (sqrt(t_9)) IN LET t_12 = ((sqrt((t_9 + (1)))) - t_11) IN LET t_13 = (sqrt(t_10)) IN LET t_14 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_13)) + t_12) IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_15 = tmp_21 IN LET tmp_23 = IF (t_14 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((((1) + (sqrt(((1) + t_10)))) - t_6) - (t_13 - t_12)) ELSE ((((2) - (t_6 + t_13)) + ((1) - t_11)) + ((sqrt((t_15 + (1)))) - (sqrt(t_15)))) ENDIF IN LET tmp_22 = IF (t_14 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_11))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_11 := \sqrt{t\_9}\\
t_12 := \sqrt{t\_9 + 1} - t\_11\\
t_13 := \sqrt{t\_10}\\
t_14 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_13\right)\right) + t\_12\\
t_15 := \mathsf{max}\left(t\_2, t\_8\right)\\
\mathbf{if}\;t\_14 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_11}\right) - t\_6\\
\mathbf{elif}\;t\_14 \leq 2.999995:\\
\;\;\;\;\left(\left(1 + \sqrt{1 + t\_10}\right) - t\_6\right) - \left(t\_13 - t\_12\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - \left(t\_6 + t\_13\right)\right) + \left(1 - t\_11\right)\right) + \left(\sqrt{t\_15 + 1} - \sqrt{t\_15}\right)\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites54.5%
Taylor expanded in t around inf
Applied rewrites20.8%
Taylor expanded in x around 0
Applied rewrites16.9%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmin (fmax x y) t_1))
(t_3 (fmax (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_2 t_7))
(t_9 (fmin t_3 t_8))
(t_10 (fmin t_2 t_7))
(t_11 (sqrt t_9))
(t_12 (- (sqrt (+ t_9 1.0)) t_11))
(t_13 (fmax t_3 t_8))
(t_14 (sqrt t_10))
(t_15
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_14))
t_12))
(t_16 (+ t_6 t_14)))
(if (<= t_15 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_11))) t_6)
(if (<= t_15 1.9998)
(- (+ 1.0 (sqrt (+ 1.0 t_10))) t_16)
(if (<= t_15 2.999995)
(- (- (+ 2.0 (* 0.5 t_10)) t_6) (- t_14 t_12))
(+
(+ (- 2.0 t_16) (- 1.0 t_11))
(- (sqrt (+ t_13 1.0)) (sqrt t_13))))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmin(fmax(x, y), t_1);
double t_3 = fmax(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_2, t_7);
double t_9 = fmin(t_3, t_8);
double t_10 = fmin(t_2, t_7);
double t_11 = sqrt(t_9);
double t_12 = sqrt((t_9 + 1.0)) - t_11;
double t_13 = fmax(t_3, t_8);
double t_14 = sqrt(t_10);
double t_15 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_14)) + t_12;
double t_16 = t_6 + t_14;
double tmp;
if (t_15 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6;
} else if (t_15 <= 1.9998) {
tmp = (1.0 + sqrt((1.0 + t_10))) - t_16;
} else if (t_15 <= 2.999995) {
tmp = ((2.0 + (0.5 * t_10)) - t_6) - (t_14 - t_12);
} else {
tmp = ((2.0 - t_16) + (1.0 - t_11)) + (sqrt((t_13 + 1.0)) - sqrt(t_13));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmin(fmax(x, y), t_1)
t_3 = fmax(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_2, t_7)
t_9 = fmin(t_3, t_8)
t_10 = fmin(t_2, t_7)
t_11 = sqrt(t_9)
t_12 = sqrt((t_9 + 1.0d0)) - t_11
t_13 = fmax(t_3, t_8)
t_14 = sqrt(t_10)
t_15 = ((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_10 + 1.0d0)) - t_14)) + t_12
t_16 = t_6 + t_14
if (t_15 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_11))) - t_6
else if (t_15 <= 1.9998d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_10))) - t_16
else if (t_15 <= 2.999995d0) then
tmp = ((2.0d0 + (0.5d0 * t_10)) - t_6) - (t_14 - t_12)
else
tmp = ((2.0d0 - t_16) + (1.0d0 - t_11)) + (sqrt((t_13 + 1.0d0)) - sqrt(t_13))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmin(fmax(x, y), t_1);
double t_3 = fmax(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_2, t_7);
double t_9 = fmin(t_3, t_8);
double t_10 = fmin(t_2, t_7);
double t_11 = Math.sqrt(t_9);
double t_12 = Math.sqrt((t_9 + 1.0)) - t_11;
double t_13 = fmax(t_3, t_8);
double t_14 = Math.sqrt(t_10);
double t_15 = ((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_10 + 1.0)) - t_14)) + t_12;
double t_16 = t_6 + t_14;
double tmp;
if (t_15 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6;
} else if (t_15 <= 1.9998) {
tmp = (1.0 + Math.sqrt((1.0 + t_10))) - t_16;
} else if (t_15 <= 2.999995) {
tmp = ((2.0 + (0.5 * t_10)) - t_6) - (t_14 - t_12);
} else {
tmp = ((2.0 - t_16) + (1.0 - t_11)) + (Math.sqrt((t_13 + 1.0)) - Math.sqrt(t_13));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmin(fmax(x, y), t_1) t_3 = fmax(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_2, t_7) t_9 = fmin(t_3, t_8) t_10 = fmin(t_2, t_7) t_11 = math.sqrt(t_9) t_12 = math.sqrt((t_9 + 1.0)) - t_11 t_13 = fmax(t_3, t_8) t_14 = math.sqrt(t_10) t_15 = ((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_10 + 1.0)) - t_14)) + t_12 t_16 = t_6 + t_14 tmp = 0 if t_15 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6 elif t_15 <= 1.9998: tmp = (1.0 + math.sqrt((1.0 + t_10))) - t_16 elif t_15 <= 2.999995: tmp = ((2.0 + (0.5 * t_10)) - t_6) - (t_14 - t_12) else: tmp = ((2.0 - t_16) + (1.0 - t_11)) + (math.sqrt((t_13 + 1.0)) - math.sqrt(t_13)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmin(fmax(x, y), t_1) t_3 = fmax(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_2, t_7) t_9 = fmin(t_3, t_8) t_10 = fmin(t_2, t_7) t_11 = sqrt(t_9) t_12 = Float64(sqrt(Float64(t_9 + 1.0)) - t_11) t_13 = fmax(t_3, t_8) t_14 = sqrt(t_10) t_15 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_14)) + t_12) t_16 = Float64(t_6 + t_14) tmp = 0.0 if (t_15 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_11))) - t_6); elseif (t_15 <= 1.9998) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_10))) - t_16); elseif (t_15 <= 2.999995) tmp = Float64(Float64(Float64(2.0 + Float64(0.5 * t_10)) - t_6) - Float64(t_14 - t_12)); else tmp = Float64(Float64(Float64(2.0 - t_16) + Float64(1.0 - t_11)) + Float64(sqrt(Float64(t_13 + 1.0)) - sqrt(t_13))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = min(max(x, y), t_1); t_3 = max(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_2, t_7); t_9 = min(t_3, t_8); t_10 = min(t_2, t_7); t_11 = sqrt(t_9); t_12 = sqrt((t_9 + 1.0)) - t_11; t_13 = max(t_3, t_8); t_14 = sqrt(t_10); t_15 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_14)) + t_12; t_16 = t_6 + t_14; tmp = 0.0; if (t_15 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_11))) - t_6; elseif (t_15 <= 1.9998) tmp = (1.0 + sqrt((1.0 + t_10))) - t_16; elseif (t_15 <= 2.999995) tmp = ((2.0 + (0.5 * t_10)) - t_6) - (t_14 - t_12); else tmp = ((2.0 - t_16) + (1.0 - t_11)) + (sqrt((t_13 + 1.0)) - sqrt(t_13)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$2, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$2, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$12 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]}, Block[{t$95$13 = N[Max[t$95$3, t$95$8], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$15 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision] + t$95$12), $MachinePrecision]}, Block[{t$95$16 = N[(t$95$6 + t$95$14), $MachinePrecision]}, If[LessEqual[t$95$15, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$15, 1.9998], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$16), $MachinePrecision], If[LessEqual[t$95$15, 2.999995], N[(N[(N[(2.0 + N[(0.5 * t$95$10), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] - N[(t$95$14 - t$95$12), $MachinePrecision]), $MachinePrecision], N[(N[(N[(2.0 - t$95$16), $MachinePrecision] + N[(1.0 - t$95$11), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$13 + 1.0), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t$95$13], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 < t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 > t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_2 > t_7) THEN t_2 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_3 < t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_2 < t_7) THEN t_2 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET t_11 = (sqrt(t_9)) IN LET t_12 = ((sqrt((t_9 + (1)))) - t_11) IN LET tmp_21 = IF (t_3 > t_8) THEN t_3 ELSE t_8 ENDIF IN LET t_13 = tmp_21 IN LET t_14 = (sqrt(t_10)) IN LET t_15 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_14)) + t_12) IN LET t_16 = (t_6 + t_14) IN LET tmp_24 = IF (t_15 <= (29999950000000001892885848064906895160675048828125e-49)) THEN ((((2) + ((5e-1) * t_10)) - t_6) - (t_14 - t_12)) ELSE ((((2) - t_16) + ((1) - t_11)) + ((sqrt((t_13 + (1)))) - (sqrt(t_13)))) ENDIF IN LET tmp_23 = IF (t_15 <= (1999800000000000022026824808563105762004852294921875e-51)) THEN (((1) + (sqrt(((1) + t_10)))) - t_16) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_15 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_11))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_2, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_3, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_2, t\_7\right)\\
t_11 := \sqrt{t\_9}\\
t_12 := \sqrt{t\_9 + 1} - t\_11\\
t_13 := \mathsf{max}\left(t\_3, t\_8\right)\\
t_14 := \sqrt{t\_10}\\
t_15 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_14\right)\right) + t\_12\\
t_16 := t\_6 + t\_14\\
\mathbf{if}\;t\_15 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_11}\right) - t\_6\\
\mathbf{elif}\;t\_15 \leq 1.9998:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_10}\right) - t\_16\\
\mathbf{elif}\;t\_15 \leq 2.999995:\\
\;\;\;\;\left(\left(2 + 0.5 \cdot t\_10\right) - t\_6\right) - \left(t\_14 - t\_12\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 - t\_16\right) + \left(1 - t\_11\right)\right) + \left(\sqrt{t\_13 + 1} - \sqrt{t\_13}\right)\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1.9998Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 1.9998 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.9999950000000002Initial program 92.0%
Applied rewrites54.5%
Taylor expanded in t around inf
Applied rewrites20.8%
Taylor expanded in x around 0
Applied rewrites16.9%
Taylor expanded in y around 0
Applied rewrites16.5%
if 2.9999950000000002 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in y around 0
Applied rewrites36.9%
Taylor expanded in x around 0
Applied rewrites24.5%
Taylor expanded in z around 0
Applied rewrites13.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (- (sqrt (+ t_9 1.0)) t_10))
(t_12 (fmin t_3 t_7))
(t_13 (fmax t_2 t_8))
(t_14 (sqrt t_13))
(t_15 (sqrt t_12))
(t_16
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_12 1.0)) t_15))
t_11)
(- (sqrt (+ t_13 1.0)) t_14))))
(if (<= t_16 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_10))) t_6)
(if (<= t_16 1.9998)
(- (+ 1.0 (sqrt (+ 1.0 t_12))) (+ t_6 t_15))
(if (<= t_16 3.5)
(- (- (+ 2.0 (* 0.5 t_12)) t_6) (- t_15 t_11))
(- (+ 4.0 (* 0.5 t_5)) (+ t_14 (+ t_6 (+ t_15 t_10)))))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = sqrt((t_9 + 1.0)) - t_10;
double t_12 = fmin(t_3, t_7);
double t_13 = fmax(t_2, t_8);
double t_14 = sqrt(t_13);
double t_15 = sqrt(t_12);
double t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_12 + 1.0)) - t_15)) + t_11) + (sqrt((t_13 + 1.0)) - t_14);
double tmp;
if (t_16 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_16 <= 1.9998) {
tmp = (1.0 + sqrt((1.0 + t_12))) - (t_6 + t_15);
} else if (t_16 <= 3.5) {
tmp = ((2.0 + (0.5 * t_12)) - t_6) - (t_15 - t_11);
} else {
tmp = (4.0 + (0.5 * t_5)) - (t_14 + (t_6 + (t_15 + t_10)));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = sqrt((t_9 + 1.0d0)) - t_10
t_12 = fmin(t_3, t_7)
t_13 = fmax(t_2, t_8)
t_14 = sqrt(t_13)
t_15 = sqrt(t_12)
t_16 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_12 + 1.0d0)) - t_15)) + t_11) + (sqrt((t_13 + 1.0d0)) - t_14)
if (t_16 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_10))) - t_6
else if (t_16 <= 1.9998d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_12))) - (t_6 + t_15)
else if (t_16 <= 3.5d0) then
tmp = ((2.0d0 + (0.5d0 * t_12)) - t_6) - (t_15 - t_11)
else
tmp = (4.0d0 + (0.5d0 * t_5)) - (t_14 + (t_6 + (t_15 + t_10)))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = Math.sqrt((t_9 + 1.0)) - t_10;
double t_12 = fmin(t_3, t_7);
double t_13 = fmax(t_2, t_8);
double t_14 = Math.sqrt(t_13);
double t_15 = Math.sqrt(t_12);
double t_16 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_12 + 1.0)) - t_15)) + t_11) + (Math.sqrt((t_13 + 1.0)) - t_14);
double tmp;
if (t_16 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_16 <= 1.9998) {
tmp = (1.0 + Math.sqrt((1.0 + t_12))) - (t_6 + t_15);
} else if (t_16 <= 3.5) {
tmp = ((2.0 + (0.5 * t_12)) - t_6) - (t_15 - t_11);
} else {
tmp = (4.0 + (0.5 * t_5)) - (t_14 + (t_6 + (t_15 + t_10)));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = math.sqrt((t_9 + 1.0)) - t_10 t_12 = fmin(t_3, t_7) t_13 = fmax(t_2, t_8) t_14 = math.sqrt(t_13) t_15 = math.sqrt(t_12) t_16 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_12 + 1.0)) - t_15)) + t_11) + (math.sqrt((t_13 + 1.0)) - t_14) tmp = 0 if t_16 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6 elif t_16 <= 1.9998: tmp = (1.0 + math.sqrt((1.0 + t_12))) - (t_6 + t_15) elif t_16 <= 3.5: tmp = ((2.0 + (0.5 * t_12)) - t_6) - (t_15 - t_11) else: tmp = (4.0 + (0.5 * t_5)) - (t_14 + (t_6 + (t_15 + t_10))) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = Float64(sqrt(Float64(t_9 + 1.0)) - t_10) t_12 = fmin(t_3, t_7) t_13 = fmax(t_2, t_8) t_14 = sqrt(t_13) t_15 = sqrt(t_12) t_16 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_12 + 1.0)) - t_15)) + t_11) + Float64(sqrt(Float64(t_13 + 1.0)) - t_14)) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_10))) - t_6); elseif (t_16 <= 1.9998) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_12))) - Float64(t_6 + t_15)); elseif (t_16 <= 3.5) tmp = Float64(Float64(Float64(2.0 + Float64(0.5 * t_12)) - t_6) - Float64(t_15 - t_11)); else tmp = Float64(Float64(4.0 + Float64(0.5 * t_5)) - Float64(t_14 + Float64(t_6 + Float64(t_15 + t_10)))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = sqrt((t_9 + 1.0)) - t_10; t_12 = min(t_3, t_7); t_13 = max(t_2, t_8); t_14 = sqrt(t_13); t_15 = sqrt(t_12); t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_12 + 1.0)) - t_15)) + t_11) + (sqrt((t_13 + 1.0)) - t_14); tmp = 0.0; if (t_16 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6; elseif (t_16 <= 1.9998) tmp = (1.0 + sqrt((1.0 + t_12))) - (t_6 + t_15); elseif (t_16 <= 3.5) tmp = ((2.0 + (0.5 * t_12)) - t_6) - (t_15 - t_11); else tmp = (4.0 + (0.5 * t_5)) - (t_14 + (t_6 + (t_15 + t_10))); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]}, Block[{t$95$12 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$13 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$13], $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$15), $MachinePrecision]), $MachinePrecision] + t$95$11), $MachinePrecision] + N[(N[Sqrt[N[(t$95$13 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$16, 1.9998], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$12), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$15), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 3.5], N[(N[(N[(2.0 + N[(0.5 * t$95$12), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision] - N[(t$95$15 - t$95$11), $MachinePrecision]), $MachinePrecision], N[(N[(4.0 + N[(0.5 * t$95$5), $MachinePrecision]), $MachinePrecision] - N[(t$95$14 + N[(t$95$6 + N[(t$95$15 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET t_11 = ((sqrt((t_9 + (1)))) - t_10) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_12 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_13 = tmp_21 IN LET t_14 = (sqrt(t_13)) IN LET t_15 = (sqrt(t_12)) IN LET t_16 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_12 + (1)))) - t_15)) + t_11) + ((sqrt((t_13 + (1)))) - t_14)) IN LET tmp_24 = IF (t_16 <= (35e-1)) THEN ((((2) + ((5e-1) * t_12)) - t_6) - (t_15 - t_11)) ELSE (((4) + ((5e-1) * t_5)) - (t_14 + (t_6 + (t_15 + t_10)))) ENDIF IN LET tmp_23 = IF (t_16 <= (1999800000000000022026824808563105762004852294921875e-51)) THEN (((1) + (sqrt(((1) + t_12)))) - (t_6 + t_15)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_10))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \sqrt{t\_9 + 1} - t\_10\\
t_12 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_13 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_14 := \sqrt{t\_13}\\
t_15 := \sqrt{t\_12}\\
t_16 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_12 + 1} - t\_15\right)\right) + t\_11\right) + \left(\sqrt{t\_13 + 1} - t\_14\right)\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_10}\right) - t\_6\\
\mathbf{elif}\;t\_16 \leq 1.9998:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_12}\right) - \left(t\_6 + t\_15\right)\\
\mathbf{elif}\;t\_16 \leq 3.5:\\
\;\;\;\;\left(\left(2 + 0.5 \cdot t\_12\right) - t\_6\right) - \left(t\_15 - t\_11\right)\\
\mathbf{else}:\\
\;\;\;\;\left(4 + 0.5 \cdot t\_5\right) - \left(t\_14 + \left(t\_6 + \left(t\_15 + t\_10\right)\right)\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1.9998Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 1.9998 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Applied rewrites54.5%
Taylor expanded in t around inf
Applied rewrites20.8%
Taylor expanded in x around 0
Applied rewrites16.9%
Taylor expanded in y around 0
Applied rewrites16.5%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (fmin t_3 t_7))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt t_12))
(t_14 (sqrt t_11))
(t_15
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_11 1.0)) t_14))
(- (sqrt (+ t_9 1.0)) t_10))
(- (sqrt (+ t_12 1.0)) t_13)))
(t_16 (+ t_6 (+ t_14 t_10))))
(if (<= t_15 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_10))) t_6)
(if (<= t_15 2.0)
(- (+ 1.0 (sqrt (+ 1.0 t_11))) (+ t_6 t_14))
(if (<= t_15 3.5)
(- (+ 2.0 (sqrt (+ 1.0 t_9))) t_16)
(- 4.0 (+ t_13 t_16)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt(t_12);
double t_14 = sqrt(t_11);
double t_15 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13);
double t_16 = t_6 + (t_14 + t_10);
double tmp;
if (t_15 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_15 <= 2.0) {
tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_15 <= 3.5) {
tmp = (2.0 + sqrt((1.0 + t_9))) - t_16;
} else {
tmp = 4.0 - (t_13 + t_16);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = fmin(t_3, t_7)
t_12 = fmax(t_2, t_8)
t_13 = sqrt(t_12)
t_14 = sqrt(t_11)
t_15 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_11 + 1.0d0)) - t_14)) + (sqrt((t_9 + 1.0d0)) - t_10)) + (sqrt((t_12 + 1.0d0)) - t_13)
t_16 = t_6 + (t_14 + t_10)
if (t_15 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_10))) - t_6
else if (t_15 <= 2.0d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_11))) - (t_6 + t_14)
else if (t_15 <= 3.5d0) then
tmp = (2.0d0 + sqrt((1.0d0 + t_9))) - t_16
else
tmp = 4.0d0 - (t_13 + t_16)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt(t_12);
double t_14 = Math.sqrt(t_11);
double t_15 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_11 + 1.0)) - t_14)) + (Math.sqrt((t_9 + 1.0)) - t_10)) + (Math.sqrt((t_12 + 1.0)) - t_13);
double t_16 = t_6 + (t_14 + t_10);
double tmp;
if (t_15 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_15 <= 2.0) {
tmp = (1.0 + Math.sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_15 <= 3.5) {
tmp = (2.0 + Math.sqrt((1.0 + t_9))) - t_16;
} else {
tmp = 4.0 - (t_13 + t_16);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = math.sqrt(t_12) t_14 = math.sqrt(t_11) t_15 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_11 + 1.0)) - t_14)) + (math.sqrt((t_9 + 1.0)) - t_10)) + (math.sqrt((t_12 + 1.0)) - t_13) t_16 = t_6 + (t_14 + t_10) tmp = 0 if t_15 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6 elif t_15 <= 2.0: tmp = (1.0 + math.sqrt((1.0 + t_11))) - (t_6 + t_14) elif t_15 <= 3.5: tmp = (2.0 + math.sqrt((1.0 + t_9))) - t_16 else: tmp = 4.0 - (t_13 + t_16) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = sqrt(t_12) t_14 = sqrt(t_11) t_15 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_11 + 1.0)) - t_14)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) + Float64(sqrt(Float64(t_12 + 1.0)) - t_13)) t_16 = Float64(t_6 + Float64(t_14 + t_10)) tmp = 0.0 if (t_15 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_10))) - t_6); elseif (t_15 <= 2.0) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_11))) - Float64(t_6 + t_14)); elseif (t_15 <= 3.5) tmp = Float64(Float64(2.0 + sqrt(Float64(1.0 + t_9))) - t_16); else tmp = Float64(4.0 - Float64(t_13 + t_16)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = min(t_3, t_7); t_12 = max(t_2, t_8); t_13 = sqrt(t_12); t_14 = sqrt(t_11); t_15 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13); t_16 = t_6 + (t_14 + t_10); tmp = 0.0; if (t_15 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6; elseif (t_15 <= 2.0) tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14); elseif (t_15 <= 3.5) tmp = (2.0 + sqrt((1.0 + t_9))) - t_16; else tmp = 4.0 - (t_13 + t_16); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$15 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$16 = N[(t$95$6 + N[(t$95$14 + t$95$10), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$15, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$15, 2.0], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$14), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$15, 3.5], N[(N[(2.0 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$16), $MachinePrecision], N[(4.0 - N[(t$95$13 + t$95$16), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_11 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt(t_12)) IN LET t_14 = (sqrt(t_11)) IN LET t_15 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_11 + (1)))) - t_14)) + ((sqrt((t_9 + (1)))) - t_10)) + ((sqrt((t_12 + (1)))) - t_13)) IN LET t_16 = (t_6 + (t_14 + t_10)) IN LET tmp_24 = IF (t_15 <= (35e-1)) THEN (((2) + (sqrt(((1) + t_9)))) - t_16) ELSE ((4) - (t_13 + t_16)) ENDIF IN LET tmp_23 = IF (t_15 <= (2)) THEN (((1) + (sqrt(((1) + t_11)))) - (t_6 + t_14)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_15 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_10))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_12}\\
t_14 := \sqrt{t\_11}\\
t_15 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_11 + 1} - t\_14\right)\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\right) + \left(\sqrt{t\_12 + 1} - t\_13\right)\\
t_16 := t\_6 + \left(t\_14 + t\_10\right)\\
\mathbf{if}\;t\_15 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_10}\right) - t\_6\\
\mathbf{elif}\;t\_15 \leq 2:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_11}\right) - \left(t\_6 + t\_14\right)\\
\mathbf{elif}\;t\_15 \leq 3.5:\\
\;\;\;\;\left(2 + \sqrt{1 + t\_9}\right) - t\_16\\
\mathbf{else}:\\
\;\;\;\;4 - \left(t\_13 + t\_16\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 2Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in x around 0
Applied rewrites9.4%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites7.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (fmin t_3 t_7))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt t_12))
(t_14 (sqrt t_11))
(t_15
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_11 1.0)) t_14))
(- (sqrt (+ t_9 1.0)) t_10))
(- (sqrt (+ t_12 1.0)) t_13)))
(t_16 (+ t_6 (+ t_14 t_10))))
(if (<= t_15 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_10))) t_6)
(if (<= t_15 2.0)
(- (+ 1.0 (sqrt (+ 1.0 t_11))) (+ t_6 t_14))
(if (<= t_15 3.5)
(- (+ 2.0 (sqrt (+ 1.0 t_9))) t_16)
(- (+ 4.0 (* 0.5 t_5)) (+ t_13 t_16)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt(t_12);
double t_14 = sqrt(t_11);
double t_15 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13);
double t_16 = t_6 + (t_14 + t_10);
double tmp;
if (t_15 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_15 <= 2.0) {
tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_15 <= 3.5) {
tmp = (2.0 + sqrt((1.0 + t_9))) - t_16;
} else {
tmp = (4.0 + (0.5 * t_5)) - (t_13 + t_16);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = fmin(t_3, t_7)
t_12 = fmax(t_2, t_8)
t_13 = sqrt(t_12)
t_14 = sqrt(t_11)
t_15 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_11 + 1.0d0)) - t_14)) + (sqrt((t_9 + 1.0d0)) - t_10)) + (sqrt((t_12 + 1.0d0)) - t_13)
t_16 = t_6 + (t_14 + t_10)
if (t_15 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_10))) - t_6
else if (t_15 <= 2.0d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_11))) - (t_6 + t_14)
else if (t_15 <= 3.5d0) then
tmp = (2.0d0 + sqrt((1.0d0 + t_9))) - t_16
else
tmp = (4.0d0 + (0.5d0 * t_5)) - (t_13 + t_16)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt(t_12);
double t_14 = Math.sqrt(t_11);
double t_15 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_11 + 1.0)) - t_14)) + (Math.sqrt((t_9 + 1.0)) - t_10)) + (Math.sqrt((t_12 + 1.0)) - t_13);
double t_16 = t_6 + (t_14 + t_10);
double tmp;
if (t_15 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_15 <= 2.0) {
tmp = (1.0 + Math.sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_15 <= 3.5) {
tmp = (2.0 + Math.sqrt((1.0 + t_9))) - t_16;
} else {
tmp = (4.0 + (0.5 * t_5)) - (t_13 + t_16);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = math.sqrt(t_12) t_14 = math.sqrt(t_11) t_15 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_11 + 1.0)) - t_14)) + (math.sqrt((t_9 + 1.0)) - t_10)) + (math.sqrt((t_12 + 1.0)) - t_13) t_16 = t_6 + (t_14 + t_10) tmp = 0 if t_15 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6 elif t_15 <= 2.0: tmp = (1.0 + math.sqrt((1.0 + t_11))) - (t_6 + t_14) elif t_15 <= 3.5: tmp = (2.0 + math.sqrt((1.0 + t_9))) - t_16 else: tmp = (4.0 + (0.5 * t_5)) - (t_13 + t_16) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = sqrt(t_12) t_14 = sqrt(t_11) t_15 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_11 + 1.0)) - t_14)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) + Float64(sqrt(Float64(t_12 + 1.0)) - t_13)) t_16 = Float64(t_6 + Float64(t_14 + t_10)) tmp = 0.0 if (t_15 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_10))) - t_6); elseif (t_15 <= 2.0) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_11))) - Float64(t_6 + t_14)); elseif (t_15 <= 3.5) tmp = Float64(Float64(2.0 + sqrt(Float64(1.0 + t_9))) - t_16); else tmp = Float64(Float64(4.0 + Float64(0.5 * t_5)) - Float64(t_13 + t_16)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = min(t_3, t_7); t_12 = max(t_2, t_8); t_13 = sqrt(t_12); t_14 = sqrt(t_11); t_15 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13); t_16 = t_6 + (t_14 + t_10); tmp = 0.0; if (t_15 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6; elseif (t_15 <= 2.0) tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14); elseif (t_15 <= 3.5) tmp = (2.0 + sqrt((1.0 + t_9))) - t_16; else tmp = (4.0 + (0.5 * t_5)) - (t_13 + t_16); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$15 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$16 = N[(t$95$6 + N[(t$95$14 + t$95$10), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$15, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$15, 2.0], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$14), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$15, 3.5], N[(N[(2.0 + N[Sqrt[N[(1.0 + t$95$9), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$16), $MachinePrecision], N[(N[(4.0 + N[(0.5 * t$95$5), $MachinePrecision]), $MachinePrecision] - N[(t$95$13 + t$95$16), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_11 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt(t_12)) IN LET t_14 = (sqrt(t_11)) IN LET t_15 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_11 + (1)))) - t_14)) + ((sqrt((t_9 + (1)))) - t_10)) + ((sqrt((t_12 + (1)))) - t_13)) IN LET t_16 = (t_6 + (t_14 + t_10)) IN LET tmp_24 = IF (t_15 <= (35e-1)) THEN (((2) + (sqrt(((1) + t_9)))) - t_16) ELSE (((4) + ((5e-1) * t_5)) - (t_13 + t_16)) ENDIF IN LET tmp_23 = IF (t_15 <= (2)) THEN (((1) + (sqrt(((1) + t_11)))) - (t_6 + t_14)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_15 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_10))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_12}\\
t_14 := \sqrt{t\_11}\\
t_15 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_11 + 1} - t\_14\right)\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\right) + \left(\sqrt{t\_12 + 1} - t\_13\right)\\
t_16 := t\_6 + \left(t\_14 + t\_10\right)\\
\mathbf{if}\;t\_15 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_10}\right) - t\_6\\
\mathbf{elif}\;t\_15 \leq 2:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_11}\right) - \left(t\_6 + t\_14\right)\\
\mathbf{elif}\;t\_15 \leq 3.5:\\
\;\;\;\;\left(2 + \sqrt{1 + t\_9}\right) - t\_16\\
\mathbf{else}:\\
\;\;\;\;\left(4 + 0.5 \cdot t\_5\right) - \left(t\_13 + t\_16\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 2Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in x around 0
Applied rewrites9.4%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (fmin t_3 t_7))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt t_12))
(t_14 (sqrt t_11))
(t_15 (+ t_6 (+ t_14 t_10)))
(t_16
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_11 1.0)) t_14))
(- (sqrt (+ t_9 1.0)) t_10))
(- (sqrt (+ t_12 1.0)) t_13))))
(if (<= t_16 1.0)
(- (+ (sqrt (+ 1.0 t_5)) (/ 1.0 (+ 1.0 t_10))) t_6)
(if (<= t_16 2.5)
(- (+ 1.0 (sqrt (+ 1.0 t_11))) (+ t_6 t_14))
(if (<= t_16 3.5)
(- (+ 3.0 (* 0.5 t_9)) t_15)
(- 4.0 (+ t_13 t_15)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt(t_12);
double t_14 = sqrt(t_11);
double t_15 = t_6 + (t_14 + t_10);
double t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13);
double tmp;
if (t_16 <= 1.0) {
tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_16 <= 2.5) {
tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_16 <= 3.5) {
tmp = (3.0 + (0.5 * t_9)) - t_15;
} else {
tmp = 4.0 - (t_13 + t_15);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = fmin(t_3, t_7)
t_12 = fmax(t_2, t_8)
t_13 = sqrt(t_12)
t_14 = sqrt(t_11)
t_15 = t_6 + (t_14 + t_10)
t_16 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_11 + 1.0d0)) - t_14)) + (sqrt((t_9 + 1.0d0)) - t_10)) + (sqrt((t_12 + 1.0d0)) - t_13)
if (t_16 <= 1.0d0) then
tmp = (sqrt((1.0d0 + t_5)) + (1.0d0 / (1.0d0 + t_10))) - t_6
else if (t_16 <= 2.5d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_11))) - (t_6 + t_14)
else if (t_16 <= 3.5d0) then
tmp = (3.0d0 + (0.5d0 * t_9)) - t_15
else
tmp = 4.0d0 - (t_13 + t_15)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt(t_12);
double t_14 = Math.sqrt(t_11);
double t_15 = t_6 + (t_14 + t_10);
double t_16 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_11 + 1.0)) - t_14)) + (Math.sqrt((t_9 + 1.0)) - t_10)) + (Math.sqrt((t_12 + 1.0)) - t_13);
double tmp;
if (t_16 <= 1.0) {
tmp = (Math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6;
} else if (t_16 <= 2.5) {
tmp = (1.0 + Math.sqrt((1.0 + t_11))) - (t_6 + t_14);
} else if (t_16 <= 3.5) {
tmp = (3.0 + (0.5 * t_9)) - t_15;
} else {
tmp = 4.0 - (t_13 + t_15);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = math.sqrt(t_12) t_14 = math.sqrt(t_11) t_15 = t_6 + (t_14 + t_10) t_16 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_11 + 1.0)) - t_14)) + (math.sqrt((t_9 + 1.0)) - t_10)) + (math.sqrt((t_12 + 1.0)) - t_13) tmp = 0 if t_16 <= 1.0: tmp = (math.sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6 elif t_16 <= 2.5: tmp = (1.0 + math.sqrt((1.0 + t_11))) - (t_6 + t_14) elif t_16 <= 3.5: tmp = (3.0 + (0.5 * t_9)) - t_15 else: tmp = 4.0 - (t_13 + t_15) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = sqrt(t_12) t_14 = sqrt(t_11) t_15 = Float64(t_6 + Float64(t_14 + t_10)) t_16 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_11 + 1.0)) - t_14)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) + Float64(sqrt(Float64(t_12 + 1.0)) - t_13)) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(Float64(sqrt(Float64(1.0 + t_5)) + Float64(1.0 / Float64(1.0 + t_10))) - t_6); elseif (t_16 <= 2.5) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_11))) - Float64(t_6 + t_14)); elseif (t_16 <= 3.5) tmp = Float64(Float64(3.0 + Float64(0.5 * t_9)) - t_15); else tmp = Float64(4.0 - Float64(t_13 + t_15)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = min(t_3, t_7); t_12 = max(t_2, t_8); t_13 = sqrt(t_12); t_14 = sqrt(t_11); t_15 = t_6 + (t_14 + t_10); t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_14)) + (sqrt((t_9 + 1.0)) - t_10)) + (sqrt((t_12 + 1.0)) - t_13); tmp = 0.0; if (t_16 <= 1.0) tmp = (sqrt((1.0 + t_5)) + (1.0 / (1.0 + t_10))) - t_6; elseif (t_16 <= 2.5) tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_14); elseif (t_16 <= 3.5) tmp = (3.0 + (0.5 * t_9)) - t_15; else tmp = 4.0 - (t_13 + t_15); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$15 = N[(t$95$6 + N[(t$95$14 + t$95$10), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$14), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(N[(N[Sqrt[N[(1.0 + t$95$5), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[(1.0 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$6), $MachinePrecision], If[LessEqual[t$95$16, 2.5], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$14), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 3.5], N[(N[(3.0 + N[(0.5 * t$95$9), $MachinePrecision]), $MachinePrecision] - t$95$15), $MachinePrecision], N[(4.0 - N[(t$95$13 + t$95$15), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_11 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt(t_12)) IN LET t_14 = (sqrt(t_11)) IN LET t_15 = (t_6 + (t_14 + t_10)) IN LET t_16 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_11 + (1)))) - t_14)) + ((sqrt((t_9 + (1)))) - t_10)) + ((sqrt((t_12 + (1)))) - t_13)) IN LET tmp_24 = IF (t_16 <= (35e-1)) THEN (((3) + ((5e-1) * t_9)) - t_15) ELSE ((4) - (t_13 + t_15)) ENDIF IN LET tmp_23 = IF (t_16 <= (25e-1)) THEN (((1) + (sqrt(((1) + t_11)))) - (t_6 + t_14)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN (((sqrt(((1) + t_5))) + ((1) / ((1) + t_10))) - t_6) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_12}\\
t_14 := \sqrt{t\_11}\\
t_15 := t\_6 + \left(t\_14 + t\_10\right)\\
t_16 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_11 + 1} - t\_14\right)\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\right) + \left(\sqrt{t\_12 + 1} - t\_13\right)\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;\left(\sqrt{1 + t\_5} + \frac{1}{1 + t\_10}\right) - t\_6\\
\mathbf{elif}\;t\_16 \leq 2.5:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_11}\right) - \left(t\_6 + t\_14\right)\\
\mathbf{elif}\;t\_16 \leq 3.5:\\
\;\;\;\;\left(3 + 0.5 \cdot t\_9\right) - t\_15\\
\mathbf{else}:\\
\;\;\;\;4 - \left(t\_13 + t\_15\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in z around 0
Applied rewrites21.3%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 2.5Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in x around 0
Applied rewrites9.4%
Taylor expanded in z around 0
Applied rewrites9.6%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites7.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (fmin t_3 t_7))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt (+ t_12 1.0)))
(t_14 (sqrt t_12))
(t_15 (sqrt t_11))
(t_16
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_11 1.0)) t_15))
(- (sqrt (+ t_9 1.0)) t_10))
(- t_13 t_14)))
(t_17 (+ t_6 (+ t_15 t_10))))
(if (<= t_16 1.0)
(+ 1.0 (- t_13 (+ t_14 t_10)))
(if (<= t_16 2.5)
(- (+ 1.0 (sqrt (+ 1.0 t_11))) (+ t_6 t_15))
(if (<= t_16 3.5)
(- (+ 3.0 (* 0.5 t_9)) t_17)
(- 4.0 (+ t_14 t_17)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt((t_12 + 1.0));
double t_14 = sqrt(t_12);
double t_15 = sqrt(t_11);
double t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_15)) + (sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14);
double t_17 = t_6 + (t_15 + t_10);
double tmp;
if (t_16 <= 1.0) {
tmp = 1.0 + (t_13 - (t_14 + t_10));
} else if (t_16 <= 2.5) {
tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_15);
} else if (t_16 <= 3.5) {
tmp = (3.0 + (0.5 * t_9)) - t_17;
} else {
tmp = 4.0 - (t_14 + t_17);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_17
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = fmin(t_3, t_7)
t_12 = fmax(t_2, t_8)
t_13 = sqrt((t_12 + 1.0d0))
t_14 = sqrt(t_12)
t_15 = sqrt(t_11)
t_16 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_11 + 1.0d0)) - t_15)) + (sqrt((t_9 + 1.0d0)) - t_10)) + (t_13 - t_14)
t_17 = t_6 + (t_15 + t_10)
if (t_16 <= 1.0d0) then
tmp = 1.0d0 + (t_13 - (t_14 + t_10))
else if (t_16 <= 2.5d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_11))) - (t_6 + t_15)
else if (t_16 <= 3.5d0) then
tmp = (3.0d0 + (0.5d0 * t_9)) - t_17
else
tmp = 4.0d0 - (t_14 + t_17)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt((t_12 + 1.0));
double t_14 = Math.sqrt(t_12);
double t_15 = Math.sqrt(t_11);
double t_16 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_11 + 1.0)) - t_15)) + (Math.sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14);
double t_17 = t_6 + (t_15 + t_10);
double tmp;
if (t_16 <= 1.0) {
tmp = 1.0 + (t_13 - (t_14 + t_10));
} else if (t_16 <= 2.5) {
tmp = (1.0 + Math.sqrt((1.0 + t_11))) - (t_6 + t_15);
} else if (t_16 <= 3.5) {
tmp = (3.0 + (0.5 * t_9)) - t_17;
} else {
tmp = 4.0 - (t_14 + t_17);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = math.sqrt((t_12 + 1.0)) t_14 = math.sqrt(t_12) t_15 = math.sqrt(t_11) t_16 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_11 + 1.0)) - t_15)) + (math.sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14) t_17 = t_6 + (t_15 + t_10) tmp = 0 if t_16 <= 1.0: tmp = 1.0 + (t_13 - (t_14 + t_10)) elif t_16 <= 2.5: tmp = (1.0 + math.sqrt((1.0 + t_11))) - (t_6 + t_15) elif t_16 <= 3.5: tmp = (3.0 + (0.5 * t_9)) - t_17 else: tmp = 4.0 - (t_14 + t_17) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = sqrt(Float64(t_12 + 1.0)) t_14 = sqrt(t_12) t_15 = sqrt(t_11) t_16 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_11 + 1.0)) - t_15)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) + Float64(t_13 - t_14)) t_17 = Float64(t_6 + Float64(t_15 + t_10)) tmp = 0.0 if (t_16 <= 1.0) tmp = Float64(1.0 + Float64(t_13 - Float64(t_14 + t_10))); elseif (t_16 <= 2.5) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_11))) - Float64(t_6 + t_15)); elseif (t_16 <= 3.5) tmp = Float64(Float64(3.0 + Float64(0.5 * t_9)) - t_17); else tmp = Float64(4.0 - Float64(t_14 + t_17)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = min(t_3, t_7); t_12 = max(t_2, t_8); t_13 = sqrt((t_12 + 1.0)); t_14 = sqrt(t_12); t_15 = sqrt(t_11); t_16 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_15)) + (sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14); t_17 = t_6 + (t_15 + t_10); tmp = 0.0; if (t_16 <= 1.0) tmp = 1.0 + (t_13 - (t_14 + t_10)); elseif (t_16 <= 2.5) tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_15); elseif (t_16 <= 3.5) tmp = (3.0 + (0.5 * t_9)) - t_17; else tmp = 4.0 - (t_14 + t_17); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$16 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$15), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision] + N[(t$95$13 - t$95$14), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$17 = N[(t$95$6 + N[(t$95$15 + t$95$10), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$16, 1.0], N[(1.0 + N[(t$95$13 - N[(t$95$14 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 2.5], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$15), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$16, 3.5], N[(N[(3.0 + N[(0.5 * t$95$9), $MachinePrecision]), $MachinePrecision] - t$95$17), $MachinePrecision], N[(4.0 - N[(t$95$14 + t$95$17), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_11 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt((t_12 + (1)))) IN LET t_14 = (sqrt(t_12)) IN LET t_15 = (sqrt(t_11)) IN LET t_16 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_11 + (1)))) - t_15)) + ((sqrt((t_9 + (1)))) - t_10)) + (t_13 - t_14)) IN LET t_17 = (t_6 + (t_15 + t_10)) IN LET tmp_24 = IF (t_16 <= (35e-1)) THEN (((3) + ((5e-1) * t_9)) - t_17) ELSE ((4) - (t_14 + t_17)) ENDIF IN LET tmp_23 = IF (t_16 <= (25e-1)) THEN (((1) + (sqrt(((1) + t_11)))) - (t_6 + t_15)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_16 <= (1)) THEN ((1) + (t_13 - (t_14 + t_10))) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_12 + 1}\\
t_14 := \sqrt{t\_12}\\
t_15 := \sqrt{t\_11}\\
t_16 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_11 + 1} - t\_15\right)\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\right) + \left(t\_13 - t\_14\right)\\
t_17 := t\_6 + \left(t\_15 + t\_10\right)\\
\mathbf{if}\;t\_16 \leq 1:\\
\;\;\;\;1 + \left(t\_13 - \left(t\_14 + t\_10\right)\right)\\
\mathbf{elif}\;t\_16 \leq 2.5:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_11}\right) - \left(t\_6 + t\_15\right)\\
\mathbf{elif}\;t\_16 \leq 3.5:\\
\;\;\;\;\left(3 + 0.5 \cdot t\_9\right) - t\_17\\
\mathbf{else}:\\
\;\;\;\;4 - \left(t\_14 + t\_17\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in x around inf
Applied rewrites13.4%
Taylor expanded in z around 0
Applied rewrites11.7%
Applied rewrites24.1%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 2.5Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in x around 0
Applied rewrites9.4%
Taylor expanded in z around 0
Applied rewrites9.6%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites7.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (sqrt t_9))
(t_11 (fmin t_3 t_7))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt (+ t_12 1.0)))
(t_14 (sqrt t_12))
(t_15 (sqrt t_11))
(t_16 (+ t_6 (+ t_15 t_10)))
(t_17
(+
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_11 1.0)) t_15))
(- (sqrt (+ t_9 1.0)) t_10))
(- t_13 t_14))))
(if (<= t_17 1.0)
(+ 1.0 (- t_13 (+ t_14 t_10)))
(if (<= t_17 2.5)
(- (+ 1.0 (sqrt (+ 1.0 t_11))) (+ t_6 t_15))
(if (<= t_17 3.5) (- 3.0 t_16) (- 4.0 (+ t_14 t_16)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt((t_12 + 1.0));
double t_14 = sqrt(t_12);
double t_15 = sqrt(t_11);
double t_16 = t_6 + (t_15 + t_10);
double t_17 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_15)) + (sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14);
double tmp;
if (t_17 <= 1.0) {
tmp = 1.0 + (t_13 - (t_14 + t_10));
} else if (t_17 <= 2.5) {
tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_15);
} else if (t_17 <= 3.5) {
tmp = 3.0 - t_16;
} else {
tmp = 4.0 - (t_14 + t_16);
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_15
real(8) :: t_16
real(8) :: t_17
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = sqrt(t_9)
t_11 = fmin(t_3, t_7)
t_12 = fmax(t_2, t_8)
t_13 = sqrt((t_12 + 1.0d0))
t_14 = sqrt(t_12)
t_15 = sqrt(t_11)
t_16 = t_6 + (t_15 + t_10)
t_17 = (((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_11 + 1.0d0)) - t_15)) + (sqrt((t_9 + 1.0d0)) - t_10)) + (t_13 - t_14)
if (t_17 <= 1.0d0) then
tmp = 1.0d0 + (t_13 - (t_14 + t_10))
else if (t_17 <= 2.5d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_11))) - (t_6 + t_15)
else if (t_17 <= 3.5d0) then
tmp = 3.0d0 - t_16
else
tmp = 4.0d0 - (t_14 + t_16)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = Math.sqrt(t_9);
double t_11 = fmin(t_3, t_7);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt((t_12 + 1.0));
double t_14 = Math.sqrt(t_12);
double t_15 = Math.sqrt(t_11);
double t_16 = t_6 + (t_15 + t_10);
double t_17 = (((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_11 + 1.0)) - t_15)) + (Math.sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14);
double tmp;
if (t_17 <= 1.0) {
tmp = 1.0 + (t_13 - (t_14 + t_10));
} else if (t_17 <= 2.5) {
tmp = (1.0 + Math.sqrt((1.0 + t_11))) - (t_6 + t_15);
} else if (t_17 <= 3.5) {
tmp = 3.0 - t_16;
} else {
tmp = 4.0 - (t_14 + t_16);
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = math.sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = math.sqrt((t_12 + 1.0)) t_14 = math.sqrt(t_12) t_15 = math.sqrt(t_11) t_16 = t_6 + (t_15 + t_10) t_17 = (((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_11 + 1.0)) - t_15)) + (math.sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14) tmp = 0 if t_17 <= 1.0: tmp = 1.0 + (t_13 - (t_14 + t_10)) elif t_17 <= 2.5: tmp = (1.0 + math.sqrt((1.0 + t_11))) - (t_6 + t_15) elif t_17 <= 3.5: tmp = 3.0 - t_16 else: tmp = 4.0 - (t_14 + t_16) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = sqrt(t_9) t_11 = fmin(t_3, t_7) t_12 = fmax(t_2, t_8) t_13 = sqrt(Float64(t_12 + 1.0)) t_14 = sqrt(t_12) t_15 = sqrt(t_11) t_16 = Float64(t_6 + Float64(t_15 + t_10)) t_17 = Float64(Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_11 + 1.0)) - t_15)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_10)) + Float64(t_13 - t_14)) tmp = 0.0 if (t_17 <= 1.0) tmp = Float64(1.0 + Float64(t_13 - Float64(t_14 + t_10))); elseif (t_17 <= 2.5) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_11))) - Float64(t_6 + t_15)); elseif (t_17 <= 3.5) tmp = Float64(3.0 - t_16); else tmp = Float64(4.0 - Float64(t_14 + t_16)); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = sqrt(t_9); t_11 = min(t_3, t_7); t_12 = max(t_2, t_8); t_13 = sqrt((t_12 + 1.0)); t_14 = sqrt(t_12); t_15 = sqrt(t_11); t_16 = t_6 + (t_15 + t_10); t_17 = (((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_11 + 1.0)) - t_15)) + (sqrt((t_9 + 1.0)) - t_10)) + (t_13 - t_14); tmp = 0.0; if (t_17 <= 1.0) tmp = 1.0 + (t_13 - (t_14 + t_10)); elseif (t_17 <= 2.5) tmp = (1.0 + sqrt((1.0 + t_11))) - (t_6 + t_15); elseif (t_17 <= 3.5) tmp = 3.0 - t_16; else tmp = 4.0 - (t_14 + t_16); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$14 = N[Sqrt[t$95$12], $MachinePrecision]}, Block[{t$95$15 = N[Sqrt[t$95$11], $MachinePrecision]}, Block[{t$95$16 = N[(t$95$6 + N[(t$95$15 + t$95$10), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$17 = N[(N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$11 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$15), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$10), $MachinePrecision]), $MachinePrecision] + N[(t$95$13 - t$95$14), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$17, 1.0], N[(1.0 + N[(t$95$13 - N[(t$95$14 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$17, 2.5], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$11), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$15), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$17, 3.5], N[(3.0 - t$95$16), $MachinePrecision], N[(4.0 - N[(t$95$14 + t$95$16), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET t_10 = (sqrt(t_9)) IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_11 = tmp_20 IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt((t_12 + (1)))) IN LET t_14 = (sqrt(t_12)) IN LET t_15 = (sqrt(t_11)) IN LET t_16 = (t_6 + (t_15 + t_10)) IN LET t_17 = (((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_11 + (1)))) - t_15)) + ((sqrt((t_9 + (1)))) - t_10)) + (t_13 - t_14)) IN LET tmp_24 = IF (t_17 <= (35e-1)) THEN ((3) - t_16) ELSE ((4) - (t_14 + t_16)) ENDIF IN LET tmp_23 = IF (t_17 <= (25e-1)) THEN (((1) + (sqrt(((1) + t_11)))) - (t_6 + t_15)) ELSE tmp_24 ENDIF IN LET tmp_22 = IF (t_17 <= (1)) THEN ((1) + (t_13 - (t_14 + t_10))) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \sqrt{t\_9}\\
t_11 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_12 + 1}\\
t_14 := \sqrt{t\_12}\\
t_15 := \sqrt{t\_11}\\
t_16 := t\_6 + \left(t\_15 + t\_10\right)\\
t_17 := \left(\left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_11 + 1} - t\_15\right)\right) + \left(\sqrt{t\_9 + 1} - t\_10\right)\right) + \left(t\_13 - t\_14\right)\\
\mathbf{if}\;t\_17 \leq 1:\\
\;\;\;\;1 + \left(t\_13 - \left(t\_14 + t\_10\right)\right)\\
\mathbf{elif}\;t\_17 \leq 2.5:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_11}\right) - \left(t\_6 + t\_15\right)\\
\mathbf{elif}\;t\_17 \leq 3.5:\\
\;\;\;\;3 - t\_16\\
\mathbf{else}:\\
\;\;\;\;4 - \left(t\_14 + t\_16\right)\\
\end{array}
if (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 1Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in x around inf
Applied rewrites13.4%
Taylor expanded in z around 0
Applied rewrites11.7%
Applied rewrites24.1%
if 1 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 2.5Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) < 3.5Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in z around 0
Applied rewrites9.4%
Taylor expanded in x around 0
Applied rewrites8.2%
if 3.5 < (+.f64 (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) (-.f64 (sqrt.f64 (+.f64 t #s(literal 1 binary64))) (sqrt.f64 t))) Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in z around 0
Applied rewrites9.1%
Taylor expanded in y around 0
Applied rewrites8.0%
Taylor expanded in x around 0
Applied rewrites7.0%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x y) z))
(t_2 (fmax (fmax x y) t_1))
(t_3 (fmin (fmax x y) t_1))
(t_4 (fmin (fmin x y) z))
(t_5 (fmin t_4 t))
(t_6 (sqrt t_5))
(t_7 (fmax t_4 t))
(t_8 (fmax t_3 t_7))
(t_9 (fmin t_2 t_8))
(t_10 (fmin t_3 t_7))
(t_11 (sqrt t_9))
(t_12 (fmax t_2 t_8))
(t_13 (sqrt t_10))
(t_14
(+
(+ (- (sqrt (+ t_5 1.0)) t_6) (- (sqrt (+ t_10 1.0)) t_13))
(- (sqrt (+ t_9 1.0)) t_11))))
(if (<= t_14 1.0)
(+ 1.0 (- (sqrt (+ t_12 1.0)) (+ (sqrt t_12) t_11)))
(if (<= t_14 2.5)
(- (+ 1.0 (sqrt (+ 1.0 t_10))) (+ t_6 t_13))
(- 3.0 (+ t_6 (+ t_13 t_11)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = sqrt(t_9);
double t_12 = fmax(t_2, t_8);
double t_13 = sqrt(t_10);
double t_14 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_13)) + (sqrt((t_9 + 1.0)) - t_11);
double tmp;
if (t_14 <= 1.0) {
tmp = 1.0 + (sqrt((t_12 + 1.0)) - (sqrt(t_12) + t_11));
} else if (t_14 <= 2.5) {
tmp = (1.0 + sqrt((1.0 + t_10))) - (t_6 + t_13);
} else {
tmp = 3.0 - (t_6 + (t_13 + t_11));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_13
real(8) :: t_14
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, y), z)
t_2 = fmax(fmax(x, y), t_1)
t_3 = fmin(fmax(x, y), t_1)
t_4 = fmin(fmin(x, y), z)
t_5 = fmin(t_4, t)
t_6 = sqrt(t_5)
t_7 = fmax(t_4, t)
t_8 = fmax(t_3, t_7)
t_9 = fmin(t_2, t_8)
t_10 = fmin(t_3, t_7)
t_11 = sqrt(t_9)
t_12 = fmax(t_2, t_8)
t_13 = sqrt(t_10)
t_14 = ((sqrt((t_5 + 1.0d0)) - t_6) + (sqrt((t_10 + 1.0d0)) - t_13)) + (sqrt((t_9 + 1.0d0)) - t_11)
if (t_14 <= 1.0d0) then
tmp = 1.0d0 + (sqrt((t_12 + 1.0d0)) - (sqrt(t_12) + t_11))
else if (t_14 <= 2.5d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_10))) - (t_6 + t_13)
else
tmp = 3.0d0 - (t_6 + (t_13 + t_11))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, y), z);
double t_2 = fmax(fmax(x, y), t_1);
double t_3 = fmin(fmax(x, y), t_1);
double t_4 = fmin(fmin(x, y), z);
double t_5 = fmin(t_4, t);
double t_6 = Math.sqrt(t_5);
double t_7 = fmax(t_4, t);
double t_8 = fmax(t_3, t_7);
double t_9 = fmin(t_2, t_8);
double t_10 = fmin(t_3, t_7);
double t_11 = Math.sqrt(t_9);
double t_12 = fmax(t_2, t_8);
double t_13 = Math.sqrt(t_10);
double t_14 = ((Math.sqrt((t_5 + 1.0)) - t_6) + (Math.sqrt((t_10 + 1.0)) - t_13)) + (Math.sqrt((t_9 + 1.0)) - t_11);
double tmp;
if (t_14 <= 1.0) {
tmp = 1.0 + (Math.sqrt((t_12 + 1.0)) - (Math.sqrt(t_12) + t_11));
} else if (t_14 <= 2.5) {
tmp = (1.0 + Math.sqrt((1.0 + t_10))) - (t_6 + t_13);
} else {
tmp = 3.0 - (t_6 + (t_13 + t_11));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = math.sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = math.sqrt(t_9) t_12 = fmax(t_2, t_8) t_13 = math.sqrt(t_10) t_14 = ((math.sqrt((t_5 + 1.0)) - t_6) + (math.sqrt((t_10 + 1.0)) - t_13)) + (math.sqrt((t_9 + 1.0)) - t_11) tmp = 0 if t_14 <= 1.0: tmp = 1.0 + (math.sqrt((t_12 + 1.0)) - (math.sqrt(t_12) + t_11)) elif t_14 <= 2.5: tmp = (1.0 + math.sqrt((1.0 + t_10))) - (t_6 + t_13) else: tmp = 3.0 - (t_6 + (t_13 + t_11)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, y), z) t_2 = fmax(fmax(x, y), t_1) t_3 = fmin(fmax(x, y), t_1) t_4 = fmin(fmin(x, y), z) t_5 = fmin(t_4, t) t_6 = sqrt(t_5) t_7 = fmax(t_4, t) t_8 = fmax(t_3, t_7) t_9 = fmin(t_2, t_8) t_10 = fmin(t_3, t_7) t_11 = sqrt(t_9) t_12 = fmax(t_2, t_8) t_13 = sqrt(t_10) t_14 = Float64(Float64(Float64(sqrt(Float64(t_5 + 1.0)) - t_6) + Float64(sqrt(Float64(t_10 + 1.0)) - t_13)) + Float64(sqrt(Float64(t_9 + 1.0)) - t_11)) tmp = 0.0 if (t_14 <= 1.0) tmp = Float64(1.0 + Float64(sqrt(Float64(t_12 + 1.0)) - Float64(sqrt(t_12) + t_11))); elseif (t_14 <= 2.5) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_10))) - Float64(t_6 + t_13)); else tmp = Float64(3.0 - Float64(t_6 + Float64(t_13 + t_11))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, y), z); t_2 = max(max(x, y), t_1); t_3 = min(max(x, y), t_1); t_4 = min(min(x, y), z); t_5 = min(t_4, t); t_6 = sqrt(t_5); t_7 = max(t_4, t); t_8 = max(t_3, t_7); t_9 = min(t_2, t_8); t_10 = min(t_3, t_7); t_11 = sqrt(t_9); t_12 = max(t_2, t_8); t_13 = sqrt(t_10); t_14 = ((sqrt((t_5 + 1.0)) - t_6) + (sqrt((t_10 + 1.0)) - t_13)) + (sqrt((t_9 + 1.0)) - t_11); tmp = 0.0; if (t_14 <= 1.0) tmp = 1.0 + (sqrt((t_12 + 1.0)) - (sqrt(t_12) + t_11)); elseif (t_14 <= 2.5) tmp = (1.0 + sqrt((1.0 + t_10))) - (t_6 + t_13); else tmp = 3.0 - (t_6 + (t_13 + t_11)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[x, y], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$4 = N[Min[N[Min[x, y], $MachinePrecision], z], $MachinePrecision]}, Block[{t$95$5 = N[Min[t$95$4, t], $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[t$95$5], $MachinePrecision]}, Block[{t$95$7 = N[Max[t$95$4, t], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$9 = N[Min[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$7], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$9], $MachinePrecision]}, Block[{t$95$12 = N[Max[t$95$2, t$95$8], $MachinePrecision]}, Block[{t$95$13 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$14 = N[(N[(N[(N[Sqrt[N[(t$95$5 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$6), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$13), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$9 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$14, 1.0], N[(1.0 + N[(N[Sqrt[N[(t$95$12 + 1.0), $MachinePrecision]], $MachinePrecision] - N[(N[Sqrt[t$95$12], $MachinePrecision] + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$14, 2.5], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$10), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$6 + t$95$13), $MachinePrecision]), $MachinePrecision], N[(3.0 - N[(t$95$6 + N[(t$95$13 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_3 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_1 = IF (tmp_2 > z) THEN tmp_3 ELSE z ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_7 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_5 = IF (tmp_6 > t_1) THEN tmp_7 ELSE t_1 ENDIF IN LET t_2 = tmp_5 IN LET tmp_10 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_11 = IF (x > y) THEN x ELSE y ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_3 = tmp_9 IN LET tmp_14 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_15 = IF (x < y) THEN x ELSE y ENDIF IN LET tmp_13 = IF (tmp_14 < z) THEN tmp_15 ELSE z ENDIF IN LET t_4 = tmp_13 IN LET tmp_16 = IF (t_4 < t) THEN t_4 ELSE t ENDIF IN LET t_5 = tmp_16 IN LET t_6 = (sqrt(t_5)) IN LET tmp_17 = IF (t_4 > t) THEN t_4 ELSE t ENDIF IN LET t_7 = tmp_17 IN LET tmp_18 = IF (t_3 > t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_8 = tmp_18 IN LET tmp_19 = IF (t_2 < t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_9 = tmp_19 IN LET tmp_20 = IF (t_3 < t_7) THEN t_3 ELSE t_7 ENDIF IN LET t_10 = tmp_20 IN LET t_11 = (sqrt(t_9)) IN LET tmp_21 = IF (t_2 > t_8) THEN t_2 ELSE t_8 ENDIF IN LET t_12 = tmp_21 IN LET t_13 = (sqrt(t_10)) IN LET t_14 = ((((sqrt((t_5 + (1)))) - t_6) + ((sqrt((t_10 + (1)))) - t_13)) + ((sqrt((t_9 + (1)))) - t_11)) IN LET tmp_23 = IF (t_14 <= (25e-1)) THEN (((1) + (sqrt(((1) + t_10)))) - (t_6 + t_13)) ELSE ((3) - (t_6 + (t_13 + t_11))) ENDIF IN LET tmp_22 = IF (t_14 <= (1)) THEN ((1) + ((sqrt((t_12 + (1)))) - ((sqrt(t_12)) + t_11))) ELSE tmp_23 ENDIF IN tmp_22 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(x, y\right), t\_1\right)\\
t_4 := \mathsf{min}\left(\mathsf{min}\left(x, y\right), z\right)\\
t_5 := \mathsf{min}\left(t\_4, t\right)\\
t_6 := \sqrt{t\_5}\\
t_7 := \mathsf{max}\left(t\_4, t\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_7\right)\\
t_9 := \mathsf{min}\left(t\_2, t\_8\right)\\
t_10 := \mathsf{min}\left(t\_3, t\_7\right)\\
t_11 := \sqrt{t\_9}\\
t_12 := \mathsf{max}\left(t\_2, t\_8\right)\\
t_13 := \sqrt{t\_10}\\
t_14 := \left(\left(\sqrt{t\_5 + 1} - t\_6\right) + \left(\sqrt{t\_10 + 1} - t\_13\right)\right) + \left(\sqrt{t\_9 + 1} - t\_11\right)\\
\mathbf{if}\;t\_14 \leq 1:\\
\;\;\;\;1 + \left(\sqrt{t\_12 + 1} - \left(\sqrt{t\_12} + t\_11\right)\right)\\
\mathbf{elif}\;t\_14 \leq 2.5:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_10}\right) - \left(t\_6 + t\_13\right)\\
\mathbf{else}:\\
\;\;\;\;3 - \left(t\_6 + \left(t\_13 + t\_11\right)\right)\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in x around inf
Applied rewrites13.4%
Taylor expanded in z around 0
Applied rewrites11.7%
Applied rewrites24.1%
if 1 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.5Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in x around 0
Applied rewrites11.6%
if 2.5 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in z around 0
Applied rewrites9.4%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmin x z) t))
(t_2 (fmin (fmin x z) t))
(t_3 (fmax y (fmax x z)))
(t_4 (sqrt t_2))
(t_5 (fmin y (fmax x z)))
(t_6 (fmax t_5 t_1))
(t_7 (fmin t_5 t_1))
(t_8 (fmax t_3 t_6))
(t_9 (sqrt t_7))
(t_10 (fmin t_3 t_6))
(t_11 (sqrt t_10))
(t_12
(+
(+ (- (sqrt (+ t_2 1.0)) t_4) (- (sqrt (+ t_7 1.0)) t_9))
(- (sqrt (+ t_10 1.0)) t_11))))
(if (<= t_12 1.5)
(+ 1.0 (- (sqrt (+ t_8 1.0)) (+ (sqrt t_8) t_11)))
(if (<= t_12 2.5)
(- (+ 1.0 (sqrt (+ 1.0 t_2))) (+ t_4 t_9))
(- 3.0 (+ t_4 (+ t_9 t_11)))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, z), t);
double t_2 = fmin(fmin(x, z), t);
double t_3 = fmax(y, fmax(x, z));
double t_4 = sqrt(t_2);
double t_5 = fmin(y, fmax(x, z));
double t_6 = fmax(t_5, t_1);
double t_7 = fmin(t_5, t_1);
double t_8 = fmax(t_3, t_6);
double t_9 = sqrt(t_7);
double t_10 = fmin(t_3, t_6);
double t_11 = sqrt(t_10);
double t_12 = ((sqrt((t_2 + 1.0)) - t_4) + (sqrt((t_7 + 1.0)) - t_9)) + (sqrt((t_10 + 1.0)) - t_11);
double tmp;
if (t_12 <= 1.5) {
tmp = 1.0 + (sqrt((t_8 + 1.0)) - (sqrt(t_8) + t_11));
} else if (t_12 <= 2.5) {
tmp = (1.0 + sqrt((1.0 + t_2))) - (t_4 + t_9);
} else {
tmp = 3.0 - (t_4 + (t_9 + t_11));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_10
real(8) :: t_11
real(8) :: t_12
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: t_7
real(8) :: t_8
real(8) :: t_9
real(8) :: tmp
t_1 = fmax(fmin(x, z), t)
t_2 = fmin(fmin(x, z), t)
t_3 = fmax(y, fmax(x, z))
t_4 = sqrt(t_2)
t_5 = fmin(y, fmax(x, z))
t_6 = fmax(t_5, t_1)
t_7 = fmin(t_5, t_1)
t_8 = fmax(t_3, t_6)
t_9 = sqrt(t_7)
t_10 = fmin(t_3, t_6)
t_11 = sqrt(t_10)
t_12 = ((sqrt((t_2 + 1.0d0)) - t_4) + (sqrt((t_7 + 1.0d0)) - t_9)) + (sqrt((t_10 + 1.0d0)) - t_11)
if (t_12 <= 1.5d0) then
tmp = 1.0d0 + (sqrt((t_8 + 1.0d0)) - (sqrt(t_8) + t_11))
else if (t_12 <= 2.5d0) then
tmp = (1.0d0 + sqrt((1.0d0 + t_2))) - (t_4 + t_9)
else
tmp = 3.0d0 - (t_4 + (t_9 + t_11))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmin(x, z), t);
double t_2 = fmin(fmin(x, z), t);
double t_3 = fmax(y, fmax(x, z));
double t_4 = Math.sqrt(t_2);
double t_5 = fmin(y, fmax(x, z));
double t_6 = fmax(t_5, t_1);
double t_7 = fmin(t_5, t_1);
double t_8 = fmax(t_3, t_6);
double t_9 = Math.sqrt(t_7);
double t_10 = fmin(t_3, t_6);
double t_11 = Math.sqrt(t_10);
double t_12 = ((Math.sqrt((t_2 + 1.0)) - t_4) + (Math.sqrt((t_7 + 1.0)) - t_9)) + (Math.sqrt((t_10 + 1.0)) - t_11);
double tmp;
if (t_12 <= 1.5) {
tmp = 1.0 + (Math.sqrt((t_8 + 1.0)) - (Math.sqrt(t_8) + t_11));
} else if (t_12 <= 2.5) {
tmp = (1.0 + Math.sqrt((1.0 + t_2))) - (t_4 + t_9);
} else {
tmp = 3.0 - (t_4 + (t_9 + t_11));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmin(x, z), t) t_2 = fmin(fmin(x, z), t) t_3 = fmax(y, fmax(x, z)) t_4 = math.sqrt(t_2) t_5 = fmin(y, fmax(x, z)) t_6 = fmax(t_5, t_1) t_7 = fmin(t_5, t_1) t_8 = fmax(t_3, t_6) t_9 = math.sqrt(t_7) t_10 = fmin(t_3, t_6) t_11 = math.sqrt(t_10) t_12 = ((math.sqrt((t_2 + 1.0)) - t_4) + (math.sqrt((t_7 + 1.0)) - t_9)) + (math.sqrt((t_10 + 1.0)) - t_11) tmp = 0 if t_12 <= 1.5: tmp = 1.0 + (math.sqrt((t_8 + 1.0)) - (math.sqrt(t_8) + t_11)) elif t_12 <= 2.5: tmp = (1.0 + math.sqrt((1.0 + t_2))) - (t_4 + t_9) else: tmp = 3.0 - (t_4 + (t_9 + t_11)) return tmp
function code(x, y, z, t) t_1 = fmax(fmin(x, z), t) t_2 = fmin(fmin(x, z), t) t_3 = fmax(y, fmax(x, z)) t_4 = sqrt(t_2) t_5 = fmin(y, fmax(x, z)) t_6 = fmax(t_5, t_1) t_7 = fmin(t_5, t_1) t_8 = fmax(t_3, t_6) t_9 = sqrt(t_7) t_10 = fmin(t_3, t_6) t_11 = sqrt(t_10) t_12 = Float64(Float64(Float64(sqrt(Float64(t_2 + 1.0)) - t_4) + Float64(sqrt(Float64(t_7 + 1.0)) - t_9)) + Float64(sqrt(Float64(t_10 + 1.0)) - t_11)) tmp = 0.0 if (t_12 <= 1.5) tmp = Float64(1.0 + Float64(sqrt(Float64(t_8 + 1.0)) - Float64(sqrt(t_8) + t_11))); elseif (t_12 <= 2.5) tmp = Float64(Float64(1.0 + sqrt(Float64(1.0 + t_2))) - Float64(t_4 + t_9)); else tmp = Float64(3.0 - Float64(t_4 + Float64(t_9 + t_11))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(min(x, z), t); t_2 = min(min(x, z), t); t_3 = max(y, max(x, z)); t_4 = sqrt(t_2); t_5 = min(y, max(x, z)); t_6 = max(t_5, t_1); t_7 = min(t_5, t_1); t_8 = max(t_3, t_6); t_9 = sqrt(t_7); t_10 = min(t_3, t_6); t_11 = sqrt(t_10); t_12 = ((sqrt((t_2 + 1.0)) - t_4) + (sqrt((t_7 + 1.0)) - t_9)) + (sqrt((t_10 + 1.0)) - t_11); tmp = 0.0; if (t_12 <= 1.5) tmp = 1.0 + (sqrt((t_8 + 1.0)) - (sqrt(t_8) + t_11)); elseif (t_12 <= 2.5) tmp = (1.0 + sqrt((1.0 + t_2))) - (t_4 + t_9); else tmp = 3.0 - (t_4 + (t_9 + t_11)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]}, Block[{t$95$3 = N[Max[y, N[Max[x, z], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[t$95$2], $MachinePrecision]}, Block[{t$95$5 = N[Min[y, N[Max[x, z], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$6 = N[Max[t$95$5, t$95$1], $MachinePrecision]}, Block[{t$95$7 = N[Min[t$95$5, t$95$1], $MachinePrecision]}, Block[{t$95$8 = N[Max[t$95$3, t$95$6], $MachinePrecision]}, Block[{t$95$9 = N[Sqrt[t$95$7], $MachinePrecision]}, Block[{t$95$10 = N[Min[t$95$3, t$95$6], $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[t$95$10], $MachinePrecision]}, Block[{t$95$12 = N[(N[(N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$4), $MachinePrecision] + N[(N[Sqrt[N[(t$95$7 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$9), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(t$95$10 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$11), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$12, 1.5], N[(1.0 + N[(N[Sqrt[N[(t$95$8 + 1.0), $MachinePrecision]], $MachinePrecision] - N[(N[Sqrt[t$95$8], $MachinePrecision] + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$12, 2.5], N[(N[(1.0 + N[Sqrt[N[(1.0 + t$95$2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - N[(t$95$4 + t$95$9), $MachinePrecision]), $MachinePrecision], N[(3.0 - N[(t$95$4 + N[(t$95$9 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_3 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_1 = IF (tmp_2 > t) THEN tmp_3 ELSE t ENDIF IN LET t_1 = tmp_1 IN LET tmp_6 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_7 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_5 = IF (tmp_6 < t) THEN tmp_7 ELSE t ENDIF IN LET t_2 = tmp_5 IN LET tmp_9 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_10 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_8 = IF (y > tmp_9) THEN y ELSE tmp_10 ENDIF IN LET t_3 = tmp_8 IN LET t_4 = (sqrt(t_2)) IN LET tmp_12 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_13 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_11 = IF (y < tmp_12) THEN y ELSE tmp_13 ENDIF IN LET t_5 = tmp_11 IN LET tmp_14 = IF (t_5 > t_1) THEN t_5 ELSE t_1 ENDIF IN LET t_6 = tmp_14 IN LET tmp_15 = IF (t_5 < t_1) THEN t_5 ELSE t_1 ENDIF IN LET t_7 = tmp_15 IN LET tmp_16 = IF (t_3 > t_6) THEN t_3 ELSE t_6 ENDIF IN LET t_8 = tmp_16 IN LET t_9 = (sqrt(t_7)) IN LET tmp_17 = IF (t_3 < t_6) THEN t_3 ELSE t_6 ENDIF IN LET t_10 = tmp_17 IN LET t_11 = (sqrt(t_10)) IN LET t_12 = ((((sqrt((t_2 + (1)))) - t_4) + ((sqrt((t_7 + (1)))) - t_9)) + ((sqrt((t_10 + (1)))) - t_11)) IN LET tmp_19 = IF (t_12 <= (25e-1)) THEN (((1) + (sqrt(((1) + t_2)))) - (t_4 + t_9)) ELSE ((3) - (t_4 + (t_9 + t_11))) ENDIF IN LET tmp_18 = IF (t_12 <= (15e-1)) THEN ((1) + ((sqrt((t_8 + (1)))) - ((sqrt(t_8)) + t_11))) ELSE tmp_19 ENDIF IN tmp_18 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{min}\left(x, z\right), t\right)\\
t_2 := \mathsf{min}\left(\mathsf{min}\left(x, z\right), t\right)\\
t_3 := \mathsf{max}\left(y, \mathsf{max}\left(x, z\right)\right)\\
t_4 := \sqrt{t\_2}\\
t_5 := \mathsf{min}\left(y, \mathsf{max}\left(x, z\right)\right)\\
t_6 := \mathsf{max}\left(t\_5, t\_1\right)\\
t_7 := \mathsf{min}\left(t\_5, t\_1\right)\\
t_8 := \mathsf{max}\left(t\_3, t\_6\right)\\
t_9 := \sqrt{t\_7}\\
t_10 := \mathsf{min}\left(t\_3, t\_6\right)\\
t_11 := \sqrt{t\_10}\\
t_12 := \left(\left(\sqrt{t\_2 + 1} - t\_4\right) + \left(\sqrt{t\_7 + 1} - t\_9\right)\right) + \left(\sqrt{t\_10 + 1} - t\_11\right)\\
\mathbf{if}\;t\_12 \leq 1.5:\\
\;\;\;\;1 + \left(\sqrt{t\_8 + 1} - \left(\sqrt{t\_8} + t\_11\right)\right)\\
\mathbf{elif}\;t\_12 \leq 2.5:\\
\;\;\;\;\left(1 + \sqrt{1 + t\_2}\right) - \left(t\_4 + t\_9\right)\\
\mathbf{else}:\\
\;\;\;\;3 - \left(t\_4 + \left(t\_9 + t\_11\right)\right)\\
\end{array}
if (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 1.5Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in x around inf
Applied rewrites13.4%
Taylor expanded in z around 0
Applied rewrites11.7%
Applied rewrites24.1%
if 1.5 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) < 2.5Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in z around inf
Applied rewrites13.3%
Taylor expanded in y around 0
Applied rewrites11.5%
if 2.5 < (+.f64 (+.f64 (-.f64 (sqrt.f64 (+.f64 x #s(literal 1 binary64))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (+.f64 y #s(literal 1 binary64))) (sqrt.f64 y))) (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z))) Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in z around 0
Applied rewrites9.4%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmax (fmax y z) (fmax x t)))
(t_2 (fmin (fmax y z) (fmax x t)))
(t_3 (sqrt t_2)))
(if (<= (- (sqrt (+ t_2 1.0)) t_3) 0.2)
(+ 1.0 (- (sqrt (+ t_1 1.0)) (+ (sqrt t_1) t_3)))
(- 3.0 (+ (sqrt (fmin x t)) (+ (sqrt (fmin y z)) t_3))))))double code(double x, double y, double z, double t) {
double t_1 = fmax(fmax(y, z), fmax(x, t));
double t_2 = fmin(fmax(y, z), fmax(x, t));
double t_3 = sqrt(t_2);
double tmp;
if ((sqrt((t_2 + 1.0)) - t_3) <= 0.2) {
tmp = 1.0 + (sqrt((t_1 + 1.0)) - (sqrt(t_1) + t_3));
} else {
tmp = 3.0 - (sqrt(fmin(x, t)) + (sqrt(fmin(y, z)) + t_3));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_1 = fmax(fmax(y, z), fmax(x, t))
t_2 = fmin(fmax(y, z), fmax(x, t))
t_3 = sqrt(t_2)
if ((sqrt((t_2 + 1.0d0)) - t_3) <= 0.2d0) then
tmp = 1.0d0 + (sqrt((t_1 + 1.0d0)) - (sqrt(t_1) + t_3))
else
tmp = 3.0d0 - (sqrt(fmin(x, t)) + (sqrt(fmin(y, z)) + t_3))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmax(fmax(y, z), fmax(x, t));
double t_2 = fmin(fmax(y, z), fmax(x, t));
double t_3 = Math.sqrt(t_2);
double tmp;
if ((Math.sqrt((t_2 + 1.0)) - t_3) <= 0.2) {
tmp = 1.0 + (Math.sqrt((t_1 + 1.0)) - (Math.sqrt(t_1) + t_3));
} else {
tmp = 3.0 - (Math.sqrt(fmin(x, t)) + (Math.sqrt(fmin(y, z)) + t_3));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmax(fmax(y, z), fmax(x, t)) t_2 = fmin(fmax(y, z), fmax(x, t)) t_3 = math.sqrt(t_2) tmp = 0 if (math.sqrt((t_2 + 1.0)) - t_3) <= 0.2: tmp = 1.0 + (math.sqrt((t_1 + 1.0)) - (math.sqrt(t_1) + t_3)) else: tmp = 3.0 - (math.sqrt(fmin(x, t)) + (math.sqrt(fmin(y, z)) + t_3)) return tmp
function code(x, y, z, t) t_1 = fmax(fmax(y, z), fmax(x, t)) t_2 = fmin(fmax(y, z), fmax(x, t)) t_3 = sqrt(t_2) tmp = 0.0 if (Float64(sqrt(Float64(t_2 + 1.0)) - t_3) <= 0.2) tmp = Float64(1.0 + Float64(sqrt(Float64(t_1 + 1.0)) - Float64(sqrt(t_1) + t_3))); else tmp = Float64(3.0 - Float64(sqrt(fmin(x, t)) + Float64(sqrt(fmin(y, z)) + t_3))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = max(max(y, z), max(x, t)); t_2 = min(max(y, z), max(x, t)); t_3 = sqrt(t_2); tmp = 0.0; if ((sqrt((t_2 + 1.0)) - t_3) <= 0.2) tmp = 1.0 + (sqrt((t_1 + 1.0)) - (sqrt(t_1) + t_3)); else tmp = 3.0 - (sqrt(min(x, t)) + (sqrt(min(y, z)) + t_3)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Max[N[Max[y, z], $MachinePrecision], N[Max[x, t], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Max[y, z], $MachinePrecision], N[Max[x, t], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[Sqrt[t$95$2], $MachinePrecision]}, If[LessEqual[N[(N[Sqrt[N[(t$95$2 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$3), $MachinePrecision], 0.2], N[(1.0 + N[(N[Sqrt[N[(t$95$1 + 1.0), $MachinePrecision]], $MachinePrecision] - N[(N[Sqrt[t$95$1], $MachinePrecision] + t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(3.0 - N[(N[Sqrt[N[Min[x, t], $MachinePrecision]], $MachinePrecision] + N[(N[Sqrt[N[Min[y, z], $MachinePrecision]], $MachinePrecision] + t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_2 = IF (y > z) THEN y ELSE z ENDIF IN LET tmp_3 = IF (x > t) THEN x ELSE t ENDIF IN LET tmp_4 = IF (y > z) THEN y ELSE z ENDIF IN LET tmp_5 = IF (x > t) THEN x ELSE t ENDIF IN LET tmp_1 = IF (tmp_2 > tmp_3) THEN tmp_4 ELSE tmp_5 ENDIF IN LET t_1 = tmp_1 IN LET tmp_8 = IF (y > z) THEN y ELSE z ENDIF IN LET tmp_9 = IF (x > t) THEN x ELSE t ENDIF IN LET tmp_10 = IF (y > z) THEN y ELSE z ENDIF IN LET tmp_11 = IF (x > t) THEN x ELSE t ENDIF IN LET tmp_7 = IF (tmp_8 < tmp_9) THEN tmp_10 ELSE tmp_11 ENDIF IN LET t_2 = tmp_7 IN LET t_3 = (sqrt(t_2)) IN LET tmp_13 = IF (x < t) THEN x ELSE t ENDIF IN LET tmp_14 = IF (y < z) THEN y ELSE z ENDIF IN LET tmp_12 = IF (((sqrt((t_2 + (1)))) - t_3) <= (200000000000000011102230246251565404236316680908203125e-54)) THEN ((1) + ((sqrt((t_1 + (1)))) - ((sqrt(t_1)) + t_3))) ELSE ((3) - ((sqrt(tmp_13)) + ((sqrt(tmp_14)) + t_3))) ENDIF IN tmp_12 END code
\begin{array}{l}
t_1 := \mathsf{max}\left(\mathsf{max}\left(y, z\right), \mathsf{max}\left(x, t\right)\right)\\
t_2 := \mathsf{min}\left(\mathsf{max}\left(y, z\right), \mathsf{max}\left(x, t\right)\right)\\
t_3 := \sqrt{t\_2}\\
\mathbf{if}\;\sqrt{t\_2 + 1} - t\_3 \leq 0.2:\\
\;\;\;\;1 + \left(\sqrt{t\_1 + 1} - \left(\sqrt{t\_1} + t\_3\right)\right)\\
\mathbf{else}:\\
\;\;\;\;3 - \left(\sqrt{\mathsf{min}\left(x, t\right)} + \left(\sqrt{\mathsf{min}\left(y, z\right)} + t\_3\right)\right)\\
\end{array}
if (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z)) < 0.20000000000000001Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in x around inf
Applied rewrites13.4%
Taylor expanded in z around 0
Applied rewrites11.7%
Applied rewrites24.1%
if 0.20000000000000001 < (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z)) Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in z around 0
Applied rewrites9.4%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t)
:precision binary64
:pre TRUE
(let* ((t_1 (fmin y (fmax x z)))
(t_2 (fmax (fmin x z) t))
(t_3 (fmin (fmax y (fmax x z)) (fmax t_1 t_2)))
(t_4 (sqrt t_3)))
(if (<= (- (sqrt (+ t_3 1.0)) t_4) 0.2)
(/ 1.0 (+ t_4 (sqrt (+ 1.0 t_3))))
(-
3.0
(+ (sqrt (fmin (fmin x z) t)) (+ (sqrt (fmin t_1 t_2)) t_4))))))double code(double x, double y, double z, double t) {
double t_1 = fmin(y, fmax(x, z));
double t_2 = fmax(fmin(x, z), t);
double t_3 = fmin(fmax(y, fmax(x, z)), fmax(t_1, t_2));
double t_4 = sqrt(t_3);
double tmp;
if ((sqrt((t_3 + 1.0)) - t_4) <= 0.2) {
tmp = 1.0 / (t_4 + sqrt((1.0 + t_3)));
} else {
tmp = 3.0 - (sqrt(fmin(fmin(x, z), t)) + (sqrt(fmin(t_1, t_2)) + t_4));
}
return tmp;
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_1 = fmin(y, fmax(x, z))
t_2 = fmax(fmin(x, z), t)
t_3 = fmin(fmax(y, fmax(x, z)), fmax(t_1, t_2))
t_4 = sqrt(t_3)
if ((sqrt((t_3 + 1.0d0)) - t_4) <= 0.2d0) then
tmp = 1.0d0 / (t_4 + sqrt((1.0d0 + t_3)))
else
tmp = 3.0d0 - (sqrt(fmin(fmin(x, z), t)) + (sqrt(fmin(t_1, t_2)) + t_4))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double t_1 = fmin(y, fmax(x, z));
double t_2 = fmax(fmin(x, z), t);
double t_3 = fmin(fmax(y, fmax(x, z)), fmax(t_1, t_2));
double t_4 = Math.sqrt(t_3);
double tmp;
if ((Math.sqrt((t_3 + 1.0)) - t_4) <= 0.2) {
tmp = 1.0 / (t_4 + Math.sqrt((1.0 + t_3)));
} else {
tmp = 3.0 - (Math.sqrt(fmin(fmin(x, z), t)) + (Math.sqrt(fmin(t_1, t_2)) + t_4));
}
return tmp;
}
def code(x, y, z, t): t_1 = fmin(y, fmax(x, z)) t_2 = fmax(fmin(x, z), t) t_3 = fmin(fmax(y, fmax(x, z)), fmax(t_1, t_2)) t_4 = math.sqrt(t_3) tmp = 0 if (math.sqrt((t_3 + 1.0)) - t_4) <= 0.2: tmp = 1.0 / (t_4 + math.sqrt((1.0 + t_3))) else: tmp = 3.0 - (math.sqrt(fmin(fmin(x, z), t)) + (math.sqrt(fmin(t_1, t_2)) + t_4)) return tmp
function code(x, y, z, t) t_1 = fmin(y, fmax(x, z)) t_2 = fmax(fmin(x, z), t) t_3 = fmin(fmax(y, fmax(x, z)), fmax(t_1, t_2)) t_4 = sqrt(t_3) tmp = 0.0 if (Float64(sqrt(Float64(t_3 + 1.0)) - t_4) <= 0.2) tmp = Float64(1.0 / Float64(t_4 + sqrt(Float64(1.0 + t_3)))); else tmp = Float64(3.0 - Float64(sqrt(fmin(fmin(x, z), t)) + Float64(sqrt(fmin(t_1, t_2)) + t_4))); end return tmp end
function tmp_2 = code(x, y, z, t) t_1 = min(y, max(x, z)); t_2 = max(min(x, z), t); t_3 = min(max(y, max(x, z)), max(t_1, t_2)); t_4 = sqrt(t_3); tmp = 0.0; if ((sqrt((t_3 + 1.0)) - t_4) <= 0.2) tmp = 1.0 / (t_4 + sqrt((1.0 + t_3))); else tmp = 3.0 - (sqrt(min(min(x, z), t)) + (sqrt(min(t_1, t_2)) + t_4)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := Block[{t$95$1 = N[Min[y, N[Max[x, z], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[y, N[Max[x, z], $MachinePrecision]], $MachinePrecision], N[Max[t$95$1, t$95$2], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[t$95$3], $MachinePrecision]}, If[LessEqual[N[(N[Sqrt[N[(t$95$3 + 1.0), $MachinePrecision]], $MachinePrecision] - t$95$4), $MachinePrecision], 0.2], N[(1.0 / N[(t$95$4 + N[Sqrt[N[(1.0 + t$95$3), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(3.0 - N[(N[Sqrt[N[Min[N[Min[x, z], $MachinePrecision], t], $MachinePrecision]], $MachinePrecision] + N[(N[Sqrt[N[Min[t$95$1, t$95$2], $MachinePrecision]], $MachinePrecision] + t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp_1 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_2 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp = IF (y < tmp_1) THEN y ELSE tmp_2 ENDIF IN LET t_1 = tmp IN LET tmp_5 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_6 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_4 = IF (tmp_5 > t) THEN tmp_6 ELSE t ENDIF IN LET t_2 = tmp_4 IN LET tmp_12 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_13 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_11 = IF (y > tmp_12) THEN y ELSE tmp_13 ENDIF IN LET tmp_14 = IF (t_1 > t_2) THEN t_1 ELSE t_2 ENDIF IN LET tmp_16 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_17 = IF (x > z) THEN x ELSE z ENDIF IN LET tmp_15 = IF (y > tmp_16) THEN y ELSE tmp_17 ENDIF IN LET tmp_18 = IF (t_1 > t_2) THEN t_1 ELSE t_2 ENDIF IN LET tmp_10 = IF (tmp_11 < tmp_14) THEN tmp_15 ELSE tmp_18 ENDIF IN LET t_3 = tmp_10 IN LET t_4 = (sqrt(t_3)) IN LET tmp_22 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_23 = IF (x < z) THEN x ELSE z ENDIF IN LET tmp_21 = IF (tmp_22 < t) THEN tmp_23 ELSE t ENDIF IN LET tmp_24 = IF (t_1 < t_2) THEN t_1 ELSE t_2 ENDIF IN LET tmp_19 = IF (((sqrt((t_3 + (1)))) - t_4) <= (200000000000000011102230246251565404236316680908203125e-54)) THEN ((1) / (t_4 + (sqrt(((1) + t_3))))) ELSE ((3) - ((sqrt(tmp_21)) + ((sqrt(tmp_24)) + t_4))) ENDIF IN tmp_19 END code
\begin{array}{l}
t_1 := \mathsf{min}\left(y, \mathsf{max}\left(x, z\right)\right)\\
t_2 := \mathsf{max}\left(\mathsf{min}\left(x, z\right), t\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(y, \mathsf{max}\left(x, z\right)\right), \mathsf{max}\left(t\_1, t\_2\right)\right)\\
t_4 := \sqrt{t\_3}\\
\mathbf{if}\;\sqrt{t\_3 + 1} - t\_4 \leq 0.2:\\
\;\;\;\;\frac{1}{t\_4 + \sqrt{1 + t\_3}}\\
\mathbf{else}:\\
\;\;\;\;3 - \left(\sqrt{\mathsf{min}\left(\mathsf{min}\left(x, z\right), t\right)} + \left(\sqrt{\mathsf{min}\left(t\_1, t\_2\right)} + t\_4\right)\right)\\
\end{array}
if (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z)) < 0.20000000000000001Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites18.1%
if 0.20000000000000001 < (-.f64 (sqrt.f64 (+.f64 z #s(literal 1 binary64))) (sqrt.f64 z)) Initial program 92.0%
Taylor expanded in t around inf
Applied rewrites12.2%
Taylor expanded in y around 0
Applied rewrites10.7%
Taylor expanded in z around 0
Applied rewrites9.4%
Taylor expanded in x around 0
Applied rewrites8.2%
(FPCore (x y z t) :precision binary64 :pre TRUE (/ 1.0 (+ (sqrt (fmin z t)) (sqrt (+ 1.0 (fmin z t))))))
double code(double x, double y, double z, double t) {
return 1.0 / (sqrt(fmin(z, t)) + sqrt((1.0 + fmin(z, t))));
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = 1.0d0 / (sqrt(fmin(z, t)) + sqrt((1.0d0 + fmin(z, t))))
end function
public static double code(double x, double y, double z, double t) {
return 1.0 / (Math.sqrt(fmin(z, t)) + Math.sqrt((1.0 + fmin(z, t))));
}
def code(x, y, z, t): return 1.0 / (math.sqrt(fmin(z, t)) + math.sqrt((1.0 + fmin(z, t))))
function code(x, y, z, t) return Float64(1.0 / Float64(sqrt(fmin(z, t)) + sqrt(Float64(1.0 + fmin(z, t))))) end
function tmp = code(x, y, z, t) tmp = 1.0 / (sqrt(min(z, t)) + sqrt((1.0 + min(z, t)))); end
code[x_, y_, z_, t_] := N[(1.0 / N[(N[Sqrt[N[Min[z, t], $MachinePrecision]], $MachinePrecision] + N[Sqrt[N[(1.0 + N[Min[z, t], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp = IF (z < t) THEN z ELSE t ENDIF IN LET tmp_1 = IF (z < t) THEN z ELSE t ENDIF IN (1) / ((sqrt(tmp)) + (sqrt(((1) + tmp_1)))) END code
\frac{1}{\sqrt{\mathsf{min}\left(z, t\right)} + \sqrt{1 + \mathsf{min}\left(z, t\right)}}
Initial program 92.0%
Applied rewrites93.8%
Taylor expanded in t around inf
Applied rewrites19.3%
Taylor expanded in y around inf
Applied rewrites21.6%
Taylor expanded in x around inf
Applied rewrites18.1%
(FPCore (x y z t) :precision binary64 :pre TRUE (- (sqrt (+ 1.0 t)) (sqrt t)))
double code(double x, double y, double z, double t) {
return sqrt((1.0 + t)) - sqrt(t);
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = sqrt((1.0d0 + t)) - sqrt(t)
end function
public static double code(double x, double y, double z, double t) {
return Math.sqrt((1.0 + t)) - Math.sqrt(t);
}
def code(x, y, z, t): return math.sqrt((1.0 + t)) - math.sqrt(t)
function code(x, y, z, t) return Float64(sqrt(Float64(1.0 + t)) - sqrt(t)) end
function tmp = code(x, y, z, t) tmp = sqrt((1.0 + t)) - sqrt(t); end
code[x_, y_, z_, t_] := N[(N[Sqrt[N[(1.0 + t), $MachinePrecision]], $MachinePrecision] - N[Sqrt[t], $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = (sqrt(((1) + t))) - (sqrt(t)) END code
\sqrt{1 + t} - \sqrt{t}
Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in z around inf
Applied rewrites13.2%
Taylor expanded in x around inf
Applied rewrites15.3%
(FPCore (x y z t) :precision binary64 :pre TRUE (- 2.0 (+ (sqrt t) (sqrt (fmin x z)))))
double code(double x, double y, double z, double t) {
return 2.0 - (sqrt(t) + sqrt(fmin(x, z)));
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = 2.0d0 - (sqrt(t) + sqrt(fmin(x, z)))
end function
public static double code(double x, double y, double z, double t) {
return 2.0 - (Math.sqrt(t) + Math.sqrt(fmin(x, z)));
}
def code(x, y, z, t): return 2.0 - (math.sqrt(t) + math.sqrt(fmin(x, z)))
function code(x, y, z, t) return Float64(2.0 - Float64(sqrt(t) + sqrt(fmin(x, z)))) end
function tmp = code(x, y, z, t) tmp = 2.0 - (sqrt(t) + sqrt(min(x, z))); end
code[x_, y_, z_, t_] := N[(2.0 - N[(N[Sqrt[t], $MachinePrecision] + N[Sqrt[N[Min[x, z], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = LET tmp = IF (x < z) THEN x ELSE z ENDIF IN (2) - ((sqrt(t)) + (sqrt(tmp))) END code
2 - \left(\sqrt{t} + \sqrt{\mathsf{min}\left(x, z\right)}\right)
Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in z around inf
Applied rewrites13.2%
Taylor expanded in t around 0
Applied rewrites11.5%
Taylor expanded in x around 0
Applied rewrites10.1%
(FPCore (x y z t) :precision binary64 :pre TRUE (- 1.0 (sqrt t)))
double code(double x, double y, double z, double t) {
return 1.0 - sqrt(t);
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = 1.0d0 - sqrt(t)
end function
public static double code(double x, double y, double z, double t) {
return 1.0 - Math.sqrt(t);
}
def code(x, y, z, t): return 1.0 - math.sqrt(t)
function code(x, y, z, t) return Float64(1.0 - sqrt(t)) end
function tmp = code(x, y, z, t) tmp = 1.0 - sqrt(t); end
code[x_, y_, z_, t_] := N[(1.0 - N[Sqrt[t], $MachinePrecision]), $MachinePrecision]
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = (1) - (sqrt(t)) END code
1 - \sqrt{t}
Initial program 92.0%
Taylor expanded in y around inf
Applied rewrites12.1%
Taylor expanded in z around inf
Applied rewrites13.2%
Taylor expanded in t around 0
Applied rewrites11.5%
Taylor expanded in x around inf
Applied rewrites14.0%
(FPCore (x y z t) :precision binary64 :pre TRUE (- (sqrt t)))
double code(double x, double y, double z, double t) {
return -sqrt(t);
}
real(8) function code(x, y, z, t)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = -sqrt(t)
end function
public static double code(double x, double y, double z, double t) {
return -Math.sqrt(t);
}
def code(x, y, z, t): return -math.sqrt(t)
function code(x, y, z, t) return Float64(-sqrt(t)) end
function tmp = code(x, y, z, t) tmp = -sqrt(t); end
code[x_, y_, z_, t_] := (-N[Sqrt[t], $MachinePrecision])
f(x, y, z, t): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf], t in [-inf, +inf] code: THEORY BEGIN f(x, y, z, t: real): real = - (sqrt(t)) END code
-\sqrt{t}
Initial program 92.0%
Taylor expanded in t around 0
Applied rewrites10.2%
Taylor expanded in t around inf
Applied rewrites1.6%
Taylor expanded in t around 0
Applied rewrites1.6%
Applied rewrites1.6%
herbie shell --seed 2026092
(FPCore (x y z t)
:name "Main:z from "
:precision binary64
(+ (+ (+ (- (sqrt (+ x 1.0)) (sqrt x)) (- (sqrt (+ y 1.0)) (sqrt y))) (- (sqrt (+ z 1.0)) (sqrt z))) (- (sqrt (+ t 1.0)) (sqrt t))))