
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi) :precision binary64 :pre TRUE (- (* (* sin_arg_r cosh_arg_i) hr) (* (* cos_arg_r sinh_arg_i) hi)))
double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi);
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
code = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi)
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi);
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi)
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) return Float64(Float64(Float64(sin_arg_r * cosh_arg_i) * hr) - Float64(Float64(cos_arg_r * sinh_arg_i) * hi)) end
function tmp = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) tmp = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi); end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := N[(N[(N[(sin$95$arg$95$r * cosh$95$arg$95$i), $MachinePrecision] * hr), $MachinePrecision] - N[(N[(cos$95$arg$95$r * sinh$95$arg$95$i), $MachinePrecision] * hi), $MachinePrecision]), $MachinePrecision]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi) END code
\left(sin\_arg\_r \cdot cosh\_arg\_i\right) \cdot hr - \left(cos\_arg\_r \cdot sinh\_arg\_i\right) \cdot hi
Herbie found 6 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi) :precision binary64 :pre TRUE (- (* (* sin_arg_r cosh_arg_i) hr) (* (* cos_arg_r sinh_arg_i) hi)))
double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi);
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
code = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi)
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi);
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): return ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi)
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) return Float64(Float64(Float64(sin_arg_r * cosh_arg_i) * hr) - Float64(Float64(cos_arg_r * sinh_arg_i) * hi)) end
function tmp = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) tmp = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi); end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := N[(N[(N[(sin$95$arg$95$r * cosh$95$arg$95$i), $MachinePrecision] * hr), $MachinePrecision] - N[(N[(cos$95$arg$95$r * sinh$95$arg$95$i), $MachinePrecision] * hi), $MachinePrecision]), $MachinePrecision]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = ((sin_arg_r * cosh_arg_i) * hr) - ((cos_arg_r * sinh_arg_i) * hi) END code
\left(sin\_arg\_r \cdot cosh\_arg\_i\right) \cdot hr - \left(cos\_arg\_r \cdot sinh\_arg\_i\right) \cdot hi
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:precision binary64
:pre TRUE
(let* ((t_0 (fmin (fmin sin_arg_r cosh_arg_i) hr))
(t_1 (fmin (fmin cos_arg_r sinh_arg_i) hi))
(t_2 (fmax (fmin cos_arg_r sinh_arg_i) hi))
(t_3 (fmax (fmax cos_arg_r sinh_arg_i) t_2))
(t_4 (fmax (fmin sin_arg_r cosh_arg_i) hr))
(t_5 (fmax (fmax sin_arg_r cosh_arg_i) t_4))
(t_6 (fmin (fmax sin_arg_r cosh_arg_i) t_4))
(t_7 (fmin (fmax cos_arg_r sinh_arg_i) t_2)))
(if (<= t_6 -2.2756363847776133e-289)
(- (* (* t_6 t_5) t_0) (* (* t_1 t_7) t_3))
(- (* (* t_0 t_6) t_5) (* (* t_1 t_3) t_7)))))double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmin(fmin(sin_arg_r, cosh_arg_i), hr);
double t_1 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_2 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_2);
double t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double t_5 = fmax(fmax(sin_arg_r, cosh_arg_i), t_4);
double t_6 = fmin(fmax(sin_arg_r, cosh_arg_i), t_4);
double t_7 = fmin(fmax(cos_arg_r, sinh_arg_i), t_2);
double tmp;
if (t_6 <= -2.2756363847776133e-289) {
tmp = ((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3);
} else {
tmp = ((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7);
}
return tmp;
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
real(8) :: t_0
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) :: tmp
t_0 = fmin(fmin(sin_arg_r, cosh_arg_i), hr)
t_1 = fmin(fmin(cos_arg_r, sinh_arg_i), hi)
t_2 = fmax(fmin(cos_arg_r, sinh_arg_i), hi)
t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_2)
t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr)
t_5 = fmax(fmax(sin_arg_r, cosh_arg_i), t_4)
t_6 = fmin(fmax(sin_arg_r, cosh_arg_i), t_4)
t_7 = fmin(fmax(cos_arg_r, sinh_arg_i), t_2)
if (t_6 <= (-2.2756363847776133d-289)) then
tmp = ((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3)
else
tmp = ((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7)
end if
code = tmp
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmin(fmin(sin_arg_r, cosh_arg_i), hr);
double t_1 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_2 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_2);
double t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double t_5 = fmax(fmax(sin_arg_r, cosh_arg_i), t_4);
double t_6 = fmin(fmax(sin_arg_r, cosh_arg_i), t_4);
double t_7 = fmin(fmax(cos_arg_r, sinh_arg_i), t_2);
double tmp;
if (t_6 <= -2.2756363847776133e-289) {
tmp = ((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3);
} else {
tmp = ((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7);
}
return tmp;
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): t_0 = fmin(fmin(sin_arg_r, cosh_arg_i), hr) t_1 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_2 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_2) t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) t_5 = fmax(fmax(sin_arg_r, cosh_arg_i), t_4) t_6 = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) t_7 = fmin(fmax(cos_arg_r, sinh_arg_i), t_2) tmp = 0 if t_6 <= -2.2756363847776133e-289: tmp = ((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3) else: tmp = ((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7) return tmp
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = fmin(fmin(sin_arg_r, cosh_arg_i), hr) t_1 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_2 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_2) t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) t_5 = fmax(fmax(sin_arg_r, cosh_arg_i), t_4) t_6 = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) t_7 = fmin(fmax(cos_arg_r, sinh_arg_i), t_2) tmp = 0.0 if (t_6 <= -2.2756363847776133e-289) tmp = Float64(Float64(Float64(t_6 * t_5) * t_0) - Float64(Float64(t_1 * t_7) * t_3)); else tmp = Float64(Float64(Float64(t_0 * t_6) * t_5) - Float64(Float64(t_1 * t_3) * t_7)); end return tmp end
function tmp_2 = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = min(min(sin_arg_r, cosh_arg_i), hr); t_1 = min(min(cos_arg_r, sinh_arg_i), hi); t_2 = max(min(cos_arg_r, sinh_arg_i), hi); t_3 = max(max(cos_arg_r, sinh_arg_i), t_2); t_4 = max(min(sin_arg_r, cosh_arg_i), hr); t_5 = max(max(sin_arg_r, cosh_arg_i), t_4); t_6 = min(max(sin_arg_r, cosh_arg_i), t_4); t_7 = min(max(cos_arg_r, sinh_arg_i), t_2); tmp = 0.0; if (t_6 <= -2.2756363847776133e-289) tmp = ((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3); else tmp = ((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7); end tmp_2 = tmp; end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := Block[{t$95$0 = N[Min[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, Block[{t$95$1 = N[Min[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$3 = N[Max[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Max[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, Block[{t$95$5 = N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision]}, Block[{t$95$7 = N[Min[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$2], $MachinePrecision]}, If[LessEqual[t$95$6, -2.2756363847776133e-289], N[(N[(N[(t$95$6 * t$95$5), $MachinePrecision] * t$95$0), $MachinePrecision] - N[(N[(t$95$1 * t$95$7), $MachinePrecision] * t$95$3), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$0 * t$95$6), $MachinePrecision] * t$95$5), $MachinePrecision] - N[(N[(t$95$1 * t$95$3), $MachinePrecision] * t$95$7), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_3 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 < hr) THEN tmp_3 ELSE hr ENDIF IN LET t_0 = tmp_1 IN LET tmp_6 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_7 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 < hi) THEN tmp_7 ELSE hi ENDIF IN LET t_1 = tmp_5 IN LET tmp_10 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_11 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_9 = IF (tmp_10 > hi) THEN tmp_11 ELSE hi ENDIF IN LET t_2 = tmp_9 IN LET tmp_14 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_15 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_13 = IF (tmp_14 > t_2) THEN tmp_15 ELSE t_2 ENDIF IN LET t_3 = tmp_13 IN LET tmp_18 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_19 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_17 = IF (tmp_18 > hr) THEN tmp_19 ELSE hr ENDIF IN LET t_4 = tmp_17 IN LET tmp_22 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_23 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_21 = IF (tmp_22 > t_4) THEN tmp_23 ELSE t_4 ENDIF IN LET t_5 = tmp_21 IN LET tmp_26 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_27 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_25 = IF (tmp_26 < t_4) THEN tmp_27 ELSE t_4 ENDIF IN LET t_6 = tmp_25 IN LET tmp_30 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_31 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_29 = IF (tmp_30 < t_2) THEN tmp_31 ELSE t_2 ENDIF IN LET t_7 = tmp_29 IN LET tmp_32 = IF (t_6 <= (-2275636384777613300267885412036930703401337942040182674606968802686119749810185825053674899770431730520634268463260528745197488234924619477595302676535270808087379679289499024926921992928647819628568408731410958635749900503113396073827464651596192451385588379625283079410057361204165955394458349918161553221030819965195263523662973956134035877897121480190680965971655383250134890740093276322637937327050103469767131705600407026599559702541552494659890383136952208823091493982480379104266641378984017562491855862843885740647565033451555627903681092982926567141523576935785206774997093659213561828639675596635128013625950742122992970748672331029445062024420519986431236813490615496224922509327370789833366870880126953125e-1006)) THEN (((t_6 * t_5) * t_0) - ((t_1 * t_7) * t_3)) ELSE (((t_0 * t_6) * t_5) - ((t_1 * t_3) * t_7)) ENDIF IN tmp_32 END code
\begin{array}{l}
t_0 := \mathsf{min}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
t_1 := \mathsf{min}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_2 := \mathsf{max}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_3 := \mathsf{max}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_2\right)\\
t_4 := \mathsf{max}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
t_5 := \mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_4\right)\\
t_6 := \mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_4\right)\\
t_7 := \mathsf{min}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_2\right)\\
\mathbf{if}\;t\_6 \leq -2.2756363847776133 \cdot 10^{-289}:\\
\;\;\;\;\left(t\_6 \cdot t\_5\right) \cdot t\_0 - \left(t\_1 \cdot t\_7\right) \cdot t\_3\\
\mathbf{else}:\\
\;\;\;\;\left(t\_0 \cdot t\_6\right) \cdot t\_5 - \left(t\_1 \cdot t\_3\right) \cdot t\_7\\
\end{array}
if cosh_arg_i < -2.2756363847776133e-289Initial program 89.2%
Applied rewrites88.9%
if -2.2756363847776133e-289 < cosh_arg_i Initial program 89.2%
Applied rewrites89.3%
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:precision binary64
:pre TRUE
(let* ((t_0 (fmax (fmin sin_arg_r cosh_arg_i) hr))
(t_1 (fmin (fmax sin_arg_r cosh_arg_i) t_0))
(t_2 (fmax (fmax sin_arg_r cosh_arg_i) t_0))
(t_3 (fmin (fmin sin_arg_r cosh_arg_i) hr))
(t_4 (fmax (fmin cos_arg_r sinh_arg_i) hi))
(t_5 (fmin (fmax cos_arg_r sinh_arg_i) t_4))
(t_6 (fmin (fmin cos_arg_r sinh_arg_i) hi))
(t_7 (fmax (fmax cos_arg_r sinh_arg_i) t_4)))
(if (<= t_5 -7.407848189653658e-199)
(- (* t_1 (* t_2 t_3)) (* t_6 (* t_7 t_5)))
(- (* (* t_1 t_2) t_3) (* (* t_6 t_5) t_7)))))double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double t_1 = fmin(fmax(sin_arg_r, cosh_arg_i), t_0);
double t_2 = fmax(fmax(sin_arg_r, cosh_arg_i), t_0);
double t_3 = fmin(fmin(sin_arg_r, cosh_arg_i), hr);
double t_4 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_5 = fmin(fmax(cos_arg_r, sinh_arg_i), t_4);
double t_6 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_7 = fmax(fmax(cos_arg_r, sinh_arg_i), t_4);
double tmp;
if (t_5 <= -7.407848189653658e-199) {
tmp = (t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5));
} else {
tmp = ((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7);
}
return tmp;
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
real(8) :: t_0
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) :: tmp
t_0 = fmax(fmin(sin_arg_r, cosh_arg_i), hr)
t_1 = fmin(fmax(sin_arg_r, cosh_arg_i), t_0)
t_2 = fmax(fmax(sin_arg_r, cosh_arg_i), t_0)
t_3 = fmin(fmin(sin_arg_r, cosh_arg_i), hr)
t_4 = fmax(fmin(cos_arg_r, sinh_arg_i), hi)
t_5 = fmin(fmax(cos_arg_r, sinh_arg_i), t_4)
t_6 = fmin(fmin(cos_arg_r, sinh_arg_i), hi)
t_7 = fmax(fmax(cos_arg_r, sinh_arg_i), t_4)
if (t_5 <= (-7.407848189653658d-199)) then
tmp = (t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5))
else
tmp = ((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7)
end if
code = tmp
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double t_1 = fmin(fmax(sin_arg_r, cosh_arg_i), t_0);
double t_2 = fmax(fmax(sin_arg_r, cosh_arg_i), t_0);
double t_3 = fmin(fmin(sin_arg_r, cosh_arg_i), hr);
double t_4 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_5 = fmin(fmax(cos_arg_r, sinh_arg_i), t_4);
double t_6 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_7 = fmax(fmax(cos_arg_r, sinh_arg_i), t_4);
double tmp;
if (t_5 <= -7.407848189653658e-199) {
tmp = (t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5));
} else {
tmp = ((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7);
}
return tmp;
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): t_0 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) t_1 = fmin(fmax(sin_arg_r, cosh_arg_i), t_0) t_2 = fmax(fmax(sin_arg_r, cosh_arg_i), t_0) t_3 = fmin(fmin(sin_arg_r, cosh_arg_i), hr) t_4 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_5 = fmin(fmax(cos_arg_r, sinh_arg_i), t_4) t_6 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_7 = fmax(fmax(cos_arg_r, sinh_arg_i), t_4) tmp = 0 if t_5 <= -7.407848189653658e-199: tmp = (t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5)) else: tmp = ((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7) return tmp
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) t_1 = fmin(fmax(sin_arg_r, cosh_arg_i), t_0) t_2 = fmax(fmax(sin_arg_r, cosh_arg_i), t_0) t_3 = fmin(fmin(sin_arg_r, cosh_arg_i), hr) t_4 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_5 = fmin(fmax(cos_arg_r, sinh_arg_i), t_4) t_6 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_7 = fmax(fmax(cos_arg_r, sinh_arg_i), t_4) tmp = 0.0 if (t_5 <= -7.407848189653658e-199) tmp = Float64(Float64(t_1 * Float64(t_2 * t_3)) - Float64(t_6 * Float64(t_7 * t_5))); else tmp = Float64(Float64(Float64(t_1 * t_2) * t_3) - Float64(Float64(t_6 * t_5) * t_7)); end return tmp end
function tmp_2 = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = max(min(sin_arg_r, cosh_arg_i), hr); t_1 = min(max(sin_arg_r, cosh_arg_i), t_0); t_2 = max(max(sin_arg_r, cosh_arg_i), t_0); t_3 = min(min(sin_arg_r, cosh_arg_i), hr); t_4 = max(min(cos_arg_r, sinh_arg_i), hi); t_5 = min(max(cos_arg_r, sinh_arg_i), t_4); t_6 = min(min(cos_arg_r, sinh_arg_i), hi); t_7 = max(max(cos_arg_r, sinh_arg_i), t_4); tmp = 0.0; if (t_5 <= -7.407848189653658e-199) tmp = (t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5)); else tmp = ((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7); end tmp_2 = tmp; end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := Block[{t$95$0 = N[Max[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, Block[{t$95$1 = N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$0], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, Block[{t$95$4 = N[Max[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$5 = N[Min[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[Min[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$7 = N[Max[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision]}, If[LessEqual[t$95$5, -7.407848189653658e-199], N[(N[(t$95$1 * N[(t$95$2 * t$95$3), $MachinePrecision]), $MachinePrecision] - N[(t$95$6 * N[(t$95$7 * t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$1 * t$95$2), $MachinePrecision] * t$95$3), $MachinePrecision] - N[(N[(t$95$6 * t$95$5), $MachinePrecision] * t$95$7), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_3 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 > hr) THEN tmp_3 ELSE hr ENDIF IN LET t_0 = tmp_1 IN LET tmp_6 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_7 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 < t_0) THEN tmp_7 ELSE t_0 ENDIF IN LET t_1 = tmp_5 IN LET tmp_10 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_11 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_9 = IF (tmp_10 > t_0) THEN tmp_11 ELSE t_0 ENDIF IN LET t_2 = tmp_9 IN LET tmp_14 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_15 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_13 = IF (tmp_14 < hr) THEN tmp_15 ELSE hr ENDIF IN LET t_3 = tmp_13 IN LET tmp_18 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_19 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_17 = IF (tmp_18 > hi) THEN tmp_19 ELSE hi ENDIF IN LET t_4 = tmp_17 IN LET tmp_22 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_23 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_21 = IF (tmp_22 < t_4) THEN tmp_23 ELSE t_4 ENDIF IN LET t_5 = tmp_21 IN LET tmp_26 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_27 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_25 = IF (tmp_26 < hi) THEN tmp_27 ELSE hi ENDIF IN LET t_6 = tmp_25 IN LET tmp_30 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_31 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_29 = IF (tmp_30 > t_4) THEN tmp_31 ELSE t_4 ENDIF IN LET t_7 = tmp_29 IN LET tmp_32 = IF (t_5 <= (-740784818965365765911858826829069812288289277873723207735858521050398154043643425998453466031749708597155037762440119118046423020467122172355717822544738143828949143115981279441980850453306456789804871673524455132085866745698000298272982494926891685156424537336742806472641406778553985623973803157256259194746608009714157931180490139079700220949984716940716510240790811472739305877307246274721476618558372104971118378738440757304898673339913190713839353759274712177114127244215158185625114128924906253814697265625e-711)) THEN ((t_1 * (t_2 * t_3)) - (t_6 * (t_7 * t_5))) ELSE (((t_1 * t_2) * t_3) - ((t_6 * t_5) * t_7)) ENDIF IN tmp_32 END code
\begin{array}{l}
t_0 := \mathsf{max}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
t_1 := \mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_0\right)\\
t_2 := \mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_0\right)\\
t_3 := \mathsf{min}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
t_4 := \mathsf{max}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_5 := \mathsf{min}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_4\right)\\
t_6 := \mathsf{min}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_7 := \mathsf{max}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_4\right)\\
\mathbf{if}\;t\_5 \leq -7.407848189653658 \cdot 10^{-199}:\\
\;\;\;\;t\_1 \cdot \left(t\_2 \cdot t\_3\right) - t\_6 \cdot \left(t\_7 \cdot t\_5\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t\_1 \cdot t\_2\right) \cdot t\_3 - \left(t\_6 \cdot t\_5\right) \cdot t\_7\\
\end{array}
if sinh_arg_i < -7.4078481896536577e-199Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites88.8%
if -7.4078481896536577e-199 < sinh_arg_i Initial program 89.2%
Applied rewrites88.9%
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:precision binary64
:pre TRUE
(let* ((t_0 (fmin (fmin cos_arg_r sinh_arg_i) hi))
(t_1 (fmax (fmin cos_arg_r sinh_arg_i) hi))
(t_2 (fmin (fmax cos_arg_r sinh_arg_i) t_1))
(t_3 (fmax (fmax cos_arg_r sinh_arg_i) t_1)))
(if (<= t_2 1.371382541618482e+89)
(-
(*
(fmin (fmax sin_arg_r cosh_arg_i) hr)
(*
(fmax (fmax sin_arg_r cosh_arg_i) hr)
(fmin sin_arg_r cosh_arg_i)))
(* t_0 (* t_3 t_2)))
(* (* t_0 t_2) (- t_3)))))double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_2 = fmin(fmax(cos_arg_r, sinh_arg_i), t_1);
double t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_1);
double tmp;
if (t_2 <= 1.371382541618482e+89) {
tmp = (fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) - (t_0 * (t_3 * t_2));
} else {
tmp = (t_0 * t_2) * -t_3;
}
return tmp;
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = fmin(fmin(cos_arg_r, sinh_arg_i), hi)
t_1 = fmax(fmin(cos_arg_r, sinh_arg_i), hi)
t_2 = fmin(fmax(cos_arg_r, sinh_arg_i), t_1)
t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_1)
if (t_2 <= 1.371382541618482d+89) then
tmp = (fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) - (t_0 * (t_3 * t_2))
else
tmp = (t_0 * t_2) * -t_3
end if
code = tmp
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_2 = fmin(fmax(cos_arg_r, sinh_arg_i), t_1);
double t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_1);
double tmp;
if (t_2 <= 1.371382541618482e+89) {
tmp = (fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) - (t_0 * (t_3 * t_2));
} else {
tmp = (t_0 * t_2) * -t_3;
}
return tmp;
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): t_0 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_1 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_2 = fmin(fmax(cos_arg_r, sinh_arg_i), t_1) t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_1) tmp = 0 if t_2 <= 1.371382541618482e+89: tmp = (fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) - (t_0 * (t_3 * t_2)) else: tmp = (t_0 * t_2) * -t_3 return tmp
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_1 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_2 = fmin(fmax(cos_arg_r, sinh_arg_i), t_1) t_3 = fmax(fmax(cos_arg_r, sinh_arg_i), t_1) tmp = 0.0 if (t_2 <= 1.371382541618482e+89) tmp = Float64(Float64(fmin(fmax(sin_arg_r, cosh_arg_i), hr) * Float64(fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) - Float64(t_0 * Float64(t_3 * t_2))); else tmp = Float64(Float64(t_0 * t_2) * Float64(-t_3)); end return tmp end
function tmp_2 = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = min(min(cos_arg_r, sinh_arg_i), hi); t_1 = max(min(cos_arg_r, sinh_arg_i), hi); t_2 = min(max(cos_arg_r, sinh_arg_i), t_1); t_3 = max(max(cos_arg_r, sinh_arg_i), t_1); tmp = 0.0; if (t_2 <= 1.371382541618482e+89) tmp = (min(max(sin_arg_r, cosh_arg_i), hr) * (max(max(sin_arg_r, cosh_arg_i), hr) * min(sin_arg_r, cosh_arg_i))) - (t_0 * (t_3 * t_2)); else tmp = (t_0 * t_2) * -t_3; end tmp_2 = tmp; end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := Block[{t$95$0 = N[Min[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$1 = N[Max[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[Max[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$1], $MachinePrecision]}, If[LessEqual[t$95$2, 1.371382541618482e+89], N[(N[(N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision] * N[(N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision] * N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(t$95$0 * N[(t$95$3 * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(t$95$0 * t$95$2), $MachinePrecision] * (-t$95$3)), $MachinePrecision]]]]]]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_3 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 < hi) THEN tmp_3 ELSE hi ENDIF IN LET t_0 = tmp_1 IN LET tmp_6 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_7 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 > hi) THEN tmp_7 ELSE hi ENDIF IN LET t_1 = tmp_5 IN LET tmp_10 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_11 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_9 = IF (tmp_10 < t_1) THEN tmp_11 ELSE t_1 ENDIF IN LET t_2 = tmp_9 IN LET tmp_14 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_15 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_13 = IF (tmp_14 > t_1) THEN tmp_15 ELSE t_1 ENDIF IN LET t_3 = tmp_13 IN LET tmp_28 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_29 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_27 = IF (tmp_28 < hr) THEN tmp_29 ELSE hr ENDIF IN LET tmp_32 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_33 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_31 = IF (tmp_32 > hr) THEN tmp_33 ELSE hr ENDIF IN LET tmp_34 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_25 = IF (t_2 <= (137138254161848199411842180926840264020799850697348766217578284692549098938241569014153216)) THEN ((tmp_27 * (tmp_31 * tmp_34)) - (t_0 * (t_3 * t_2))) ELSE ((t_0 * t_2) * (- t_3)) ENDIF IN tmp_25 END code
\begin{array}{l}
t_0 := \mathsf{min}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_1 := \mathsf{max}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_2 := \mathsf{min}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_1\right)\\
t_3 := \mathsf{max}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_1\right)\\
\mathbf{if}\;t\_2 \leq 1.371382541618482 \cdot 10^{+89}:\\
\;\;\;\;\mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right) \cdot \left(\mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right) \cdot \mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right)\right) - t\_0 \cdot \left(t\_3 \cdot t\_2\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t\_0 \cdot t\_2\right) \cdot \left(-t\_3\right)\\
\end{array}
if sinh_arg_i < 1.371382541618482e89Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites88.8%
if 1.371382541618482e89 < sinh_arg_i Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites48.7%
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:precision binary64
:pre TRUE
(let* ((t_0 (fmax (fmin cos_arg_r sinh_arg_i) hi))
(t_1 (fmax (fmax cos_arg_r sinh_arg_i) t_0))
(t_2 (fmin (fmin cos_arg_r sinh_arg_i) hi))
(t_3 (fmin (fmax cos_arg_r sinh_arg_i) t_0))
(t_4 (* t_2 t_3))
(t_5 (* t_4 t_1))
(t_6 (fmax (fmin sin_arg_r cosh_arg_i) hr)))
(if (<= t_5 -4e-121)
(* (* t_2 t_1) (- t_3))
(if (<= t_5 20000000.0)
(*
(fmin (fmax sin_arg_r cosh_arg_i) t_6)
(*
(fmax (fmax sin_arg_r cosh_arg_i) t_6)
(fmin (fmin sin_arg_r cosh_arg_i) hr)))
(* t_4 (- t_1))))))double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmax(fmax(cos_arg_r, sinh_arg_i), t_0);
double t_2 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_3 = fmin(fmax(cos_arg_r, sinh_arg_i), t_0);
double t_4 = t_2 * t_3;
double t_5 = t_4 * t_1;
double t_6 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double tmp;
if (t_5 <= -4e-121) {
tmp = (t_2 * t_1) * -t_3;
} else if (t_5 <= 20000000.0) {
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_6) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_6) * fmin(fmin(sin_arg_r, cosh_arg_i), hr));
} else {
tmp = t_4 * -t_1;
}
return tmp;
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
real(8) :: t_0
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) :: tmp
t_0 = fmax(fmin(cos_arg_r, sinh_arg_i), hi)
t_1 = fmax(fmax(cos_arg_r, sinh_arg_i), t_0)
t_2 = fmin(fmin(cos_arg_r, sinh_arg_i), hi)
t_3 = fmin(fmax(cos_arg_r, sinh_arg_i), t_0)
t_4 = t_2 * t_3
t_5 = t_4 * t_1
t_6 = fmax(fmin(sin_arg_r, cosh_arg_i), hr)
if (t_5 <= (-4d-121)) then
tmp = (t_2 * t_1) * -t_3
else if (t_5 <= 20000000.0d0) then
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_6) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_6) * fmin(fmin(sin_arg_r, cosh_arg_i), hr))
else
tmp = t_4 * -t_1
end if
code = tmp
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmin(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmax(fmax(cos_arg_r, sinh_arg_i), t_0);
double t_2 = fmin(fmin(cos_arg_r, sinh_arg_i), hi);
double t_3 = fmin(fmax(cos_arg_r, sinh_arg_i), t_0);
double t_4 = t_2 * t_3;
double t_5 = t_4 * t_1;
double t_6 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double tmp;
if (t_5 <= -4e-121) {
tmp = (t_2 * t_1) * -t_3;
} else if (t_5 <= 20000000.0) {
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_6) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_6) * fmin(fmin(sin_arg_r, cosh_arg_i), hr));
} else {
tmp = t_4 * -t_1;
}
return tmp;
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): t_0 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_1 = fmax(fmax(cos_arg_r, sinh_arg_i), t_0) t_2 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_3 = fmin(fmax(cos_arg_r, sinh_arg_i), t_0) t_4 = t_2 * t_3 t_5 = t_4 * t_1 t_6 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) tmp = 0 if t_5 <= -4e-121: tmp = (t_2 * t_1) * -t_3 elif t_5 <= 20000000.0: tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_6) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_6) * fmin(fmin(sin_arg_r, cosh_arg_i), hr)) else: tmp = t_4 * -t_1 return tmp
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = fmax(fmin(cos_arg_r, sinh_arg_i), hi) t_1 = fmax(fmax(cos_arg_r, sinh_arg_i), t_0) t_2 = fmin(fmin(cos_arg_r, sinh_arg_i), hi) t_3 = fmin(fmax(cos_arg_r, sinh_arg_i), t_0) t_4 = Float64(t_2 * t_3) t_5 = Float64(t_4 * t_1) t_6 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) tmp = 0.0 if (t_5 <= -4e-121) tmp = Float64(Float64(t_2 * t_1) * Float64(-t_3)); elseif (t_5 <= 20000000.0) tmp = Float64(fmin(fmax(sin_arg_r, cosh_arg_i), t_6) * Float64(fmax(fmax(sin_arg_r, cosh_arg_i), t_6) * fmin(fmin(sin_arg_r, cosh_arg_i), hr))); else tmp = Float64(t_4 * Float64(-t_1)); end return tmp end
function tmp_2 = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = max(min(cos_arg_r, sinh_arg_i), hi); t_1 = max(max(cos_arg_r, sinh_arg_i), t_0); t_2 = min(min(cos_arg_r, sinh_arg_i), hi); t_3 = min(max(cos_arg_r, sinh_arg_i), t_0); t_4 = t_2 * t_3; t_5 = t_4 * t_1; t_6 = max(min(sin_arg_r, cosh_arg_i), hr); tmp = 0.0; if (t_5 <= -4e-121) tmp = (t_2 * t_1) * -t_3; elseif (t_5 <= 20000000.0) tmp = min(max(sin_arg_r, cosh_arg_i), t_6) * (max(max(sin_arg_r, cosh_arg_i), t_6) * min(min(sin_arg_r, cosh_arg_i), hr)); else tmp = t_4 * -t_1; end tmp_2 = tmp; end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := Block[{t$95$0 = N[Max[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$1 = N[Max[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Min[N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$3 = N[Min[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], t$95$0], $MachinePrecision]}, Block[{t$95$4 = N[(t$95$2 * t$95$3), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 * t$95$1), $MachinePrecision]}, Block[{t$95$6 = N[Max[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, If[LessEqual[t$95$5, -4e-121], N[(N[(t$95$2 * t$95$1), $MachinePrecision] * (-t$95$3)), $MachinePrecision], If[LessEqual[t$95$5, 20000000.0], N[(N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$6], $MachinePrecision] * N[(N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$6], $MachinePrecision] * N[Min[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$4 * (-t$95$1)), $MachinePrecision]]]]]]]]]]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_3 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 > hi) THEN tmp_3 ELSE hi ENDIF IN LET t_0 = tmp_1 IN LET tmp_6 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_7 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 > t_0) THEN tmp_7 ELSE t_0 ENDIF IN LET t_1 = tmp_5 IN LET tmp_10 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_11 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_9 = IF (tmp_10 < hi) THEN tmp_11 ELSE hi ENDIF IN LET t_2 = tmp_9 IN LET tmp_14 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_15 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_13 = IF (tmp_14 < t_0) THEN tmp_15 ELSE t_0 ENDIF IN LET t_3 = tmp_13 IN LET t_4 = (t_2 * t_3) IN LET t_5 = (t_4 * t_1) IN LET tmp_18 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_19 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_17 = IF (tmp_18 > hr) THEN tmp_19 ELSE hr ENDIF IN LET t_6 = tmp_17 IN LET tmp_36 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_37 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_35 = IF (tmp_36 < t_6) THEN tmp_37 ELSE t_6 ENDIF IN LET tmp_40 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_41 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_39 = IF (tmp_40 > t_6) THEN tmp_41 ELSE t_6 ENDIF IN LET tmp_44 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_45 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_43 = IF (tmp_44 < hr) THEN tmp_45 ELSE hr ENDIF IN LET tmp_33 = IF (t_5 <= (2e7)) THEN (tmp_35 * (tmp_39 * tmp_43)) ELSE (t_4 * (- t_1)) ENDIF IN LET tmp_20 = IF (t_5 <= (-399999999999999991442765340849362499776451339209836950323129538159128824305482383666340230829489378768737574721987784017706752384336071373118332540902864745595700168478482217595202327049808376295310372056672153014508225812291293972882953315774522685348218996305047763293442443453753833734580502845545879608835093677043914794921875e-450)) THEN ((t_2 * t_1) * (- t_3)) ELSE tmp_33 ENDIF IN tmp_20 END code
\begin{array}{l}
t_0 := \mathsf{max}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_1 := \mathsf{max}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_0\right)\\
t_2 := \mathsf{min}\left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_3 := \mathsf{min}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), t\_0\right)\\
t_4 := t\_2 \cdot t\_3\\
t_5 := t\_4 \cdot t\_1\\
t_6 := \mathsf{max}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
\mathbf{if}\;t\_5 \leq -4 \cdot 10^{-121}:\\
\;\;\;\;\left(t\_2 \cdot t\_1\right) \cdot \left(-t\_3\right)\\
\mathbf{elif}\;t\_5 \leq 20000000:\\
\;\;\;\;\mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_6\right) \cdot \left(\mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_6\right) \cdot \mathsf{min}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_4 \cdot \left(-t\_1\right)\\
\end{array}
if (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) < -3.9999999999999999e-121Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites48.7%
if -3.9999999999999999e-121 < (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) < 2e7Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites39.5%
Taylor expanded in sin_arg_r around inf
Applied rewrites50.4%
if 2e7 < (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites48.7%
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:precision binary64
:pre TRUE
(let* ((t_0 (fmax (fmax cos_arg_r sinh_arg_i) hi))
(t_1 (fmin (fmax cos_arg_r sinh_arg_i) hi))
(t_2 (* (* (fmin cos_arg_r sinh_arg_i) t_0) (- t_1)))
(t_3 (* (* (fmin cos_arg_r sinh_arg_i) t_1) t_0))
(t_4 (fmax (fmin sin_arg_r cosh_arg_i) hr)))
(if (<= t_3 -4e-121)
t_2
(if (<= t_3 5e-12)
(*
(fmin (fmax sin_arg_r cosh_arg_i) t_4)
(*
(fmax (fmax sin_arg_r cosh_arg_i) t_4)
(fmin (fmin sin_arg_r cosh_arg_i) hr)))
t_2))))double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmax(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmin(fmax(cos_arg_r, sinh_arg_i), hi);
double t_2 = (fmin(cos_arg_r, sinh_arg_i) * t_0) * -t_1;
double t_3 = (fmin(cos_arg_r, sinh_arg_i) * t_1) * t_0;
double t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double tmp;
if (t_3 <= -4e-121) {
tmp = t_2;
} else if (t_3 <= 5e-12) {
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_4) * fmin(fmin(sin_arg_r, cosh_arg_i), hr));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = fmax(fmax(cos_arg_r, sinh_arg_i), hi)
t_1 = fmin(fmax(cos_arg_r, sinh_arg_i), hi)
t_2 = (fmin(cos_arg_r, sinh_arg_i) * t_0) * -t_1
t_3 = (fmin(cos_arg_r, sinh_arg_i) * t_1) * t_0
t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr)
if (t_3 <= (-4d-121)) then
tmp = t_2
else if (t_3 <= 5d-12) then
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_4) * fmin(fmin(sin_arg_r, cosh_arg_i), hr))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
double t_0 = fmax(fmax(cos_arg_r, sinh_arg_i), hi);
double t_1 = fmin(fmax(cos_arg_r, sinh_arg_i), hi);
double t_2 = (fmin(cos_arg_r, sinh_arg_i) * t_0) * -t_1;
double t_3 = (fmin(cos_arg_r, sinh_arg_i) * t_1) * t_0;
double t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr);
double tmp;
if (t_3 <= -4e-121) {
tmp = t_2;
} else if (t_3 <= 5e-12) {
tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_4) * fmin(fmin(sin_arg_r, cosh_arg_i), hr));
} else {
tmp = t_2;
}
return tmp;
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): t_0 = fmax(fmax(cos_arg_r, sinh_arg_i), hi) t_1 = fmin(fmax(cos_arg_r, sinh_arg_i), hi) t_2 = (fmin(cos_arg_r, sinh_arg_i) * t_0) * -t_1 t_3 = (fmin(cos_arg_r, sinh_arg_i) * t_1) * t_0 t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) tmp = 0 if t_3 <= -4e-121: tmp = t_2 elif t_3 <= 5e-12: tmp = fmin(fmax(sin_arg_r, cosh_arg_i), t_4) * (fmax(fmax(sin_arg_r, cosh_arg_i), t_4) * fmin(fmin(sin_arg_r, cosh_arg_i), hr)) else: tmp = t_2 return tmp
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = fmax(fmax(cos_arg_r, sinh_arg_i), hi) t_1 = fmin(fmax(cos_arg_r, sinh_arg_i), hi) t_2 = Float64(Float64(fmin(cos_arg_r, sinh_arg_i) * t_0) * Float64(-t_1)) t_3 = Float64(Float64(fmin(cos_arg_r, sinh_arg_i) * t_1) * t_0) t_4 = fmax(fmin(sin_arg_r, cosh_arg_i), hr) tmp = 0.0 if (t_3 <= -4e-121) tmp = t_2; elseif (t_3 <= 5e-12) tmp = Float64(fmin(fmax(sin_arg_r, cosh_arg_i), t_4) * Float64(fmax(fmax(sin_arg_r, cosh_arg_i), t_4) * fmin(fmin(sin_arg_r, cosh_arg_i), hr))); else tmp = t_2; end return tmp end
function tmp_2 = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) t_0 = max(max(cos_arg_r, sinh_arg_i), hi); t_1 = min(max(cos_arg_r, sinh_arg_i), hi); t_2 = (min(cos_arg_r, sinh_arg_i) * t_0) * -t_1; t_3 = (min(cos_arg_r, sinh_arg_i) * t_1) * t_0; t_4 = max(min(sin_arg_r, cosh_arg_i), hr); tmp = 0.0; if (t_3 <= -4e-121) tmp = t_2; elseif (t_3 <= 5e-12) tmp = min(max(sin_arg_r, cosh_arg_i), t_4) * (max(max(sin_arg_r, cosh_arg_i), t_4) * min(min(sin_arg_r, cosh_arg_i), hr)); else tmp = t_2; end tmp_2 = tmp; end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := Block[{t$95$0 = N[Max[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$1 = N[Min[N[Max[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision], hi], $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision] * t$95$0), $MachinePrecision] * (-t$95$1)), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[Min[cos$95$arg$95$r, sinh$95$arg$95$i], $MachinePrecision] * t$95$1), $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[Max[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]}, If[LessEqual[t$95$3, -4e-121], t$95$2, If[LessEqual[t$95$3, 5e-12], N[(N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision] * N[(N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], t$95$4], $MachinePrecision] * N[Min[N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_3 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 > hi) THEN tmp_3 ELSE hi ENDIF IN LET t_0 = tmp_1 IN LET tmp_6 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_7 = IF (cos_arg_r > sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 < hi) THEN tmp_7 ELSE hi ENDIF IN LET t_1 = tmp_5 IN LET tmp_8 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET t_2 = ((tmp_8 * t_0) * (- t_1)) IN LET tmp_9 = IF (cos_arg_r < sinh_arg_i) THEN cos_arg_r ELSE sinh_arg_i ENDIF IN LET t_3 = ((tmp_9 * t_1) * t_0) IN LET tmp_12 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_13 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_11 = IF (tmp_12 > hr) THEN tmp_13 ELSE hr ENDIF IN LET t_4 = tmp_11 IN LET tmp_30 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_31 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_29 = IF (tmp_30 < t_4) THEN tmp_31 ELSE t_4 ENDIF IN LET tmp_34 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_35 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_33 = IF (tmp_34 > t_4) THEN tmp_35 ELSE t_4 ENDIF IN LET tmp_38 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_39 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_37 = IF (tmp_38 < hr) THEN tmp_39 ELSE hr ENDIF IN LET tmp_27 = IF (t_3 <= (4999999999999999697484846409699054650861704818254338533733971416950225830078125e-90)) THEN (tmp_29 * (tmp_33 * tmp_37)) ELSE t_2 ENDIF IN LET tmp_14 = IF (t_3 <= (-399999999999999991442765340849362499776451339209836950323129538159128824305482383666340230829489378768737574721987784017706752384336071373118332540902864745595700168478482217595202327049808376295310372056672153014508225812291293972882953315774522685348218996305047763293442443453753833734580502845545879608835093677043914794921875e-450)) THEN t_2 ELSE tmp_27 ENDIF IN tmp_14 END code
\begin{array}{l}
t_0 := \mathsf{max}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_1 := \mathsf{min}\left(\mathsf{max}\left(cos\_arg\_r, sinh\_arg\_i\right), hi\right)\\
t_2 := \left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right) \cdot t\_0\right) \cdot \left(-t\_1\right)\\
t_3 := \left(\mathsf{min}\left(cos\_arg\_r, sinh\_arg\_i\right) \cdot t\_1\right) \cdot t\_0\\
t_4 := \mathsf{max}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\\
\mathbf{if}\;t\_3 \leq -4 \cdot 10^{-121}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{-12}:\\
\;\;\;\;\mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_4\right) \cdot \left(\mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), t\_4\right) \cdot \mathsf{min}\left(\mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
if (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) < -3.9999999999999999e-121 or 4.9999999999999997e-12 < (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites48.7%
if -3.9999999999999999e-121 < (*.f64 (*.f64 cos_arg_r sinh_arg_i) hi) < 4.9999999999999997e-12Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites39.5%
Taylor expanded in sin_arg_r around inf
Applied rewrites50.4%
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi) :precision binary64 :pre TRUE (* (fmin (fmax sin_arg_r cosh_arg_i) hr) (* (fmax (fmax sin_arg_r cosh_arg_i) hr) (fmin sin_arg_r cosh_arg_i))))
double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i));
}
real(8) function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi)
use fmin_fmax_functions
real(8), intent (in) :: sin_arg_r
real(8), intent (in) :: cosh_arg_i
real(8), intent (in) :: cos_arg_r
real(8), intent (in) :: sinh_arg_i
real(8), intent (in) :: hr
real(8), intent (in) :: hi
code = fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))
end function
public static double code(double sin_arg_r, double cosh_arg_i, double cos_arg_r, double sinh_arg_i, double hr, double hi) {
return fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i));
}
def code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): return fmin(fmax(sin_arg_r, cosh_arg_i), hr) * (fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))
function code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) return Float64(fmin(fmax(sin_arg_r, cosh_arg_i), hr) * Float64(fmax(fmax(sin_arg_r, cosh_arg_i), hr) * fmin(sin_arg_r, cosh_arg_i))) end
function tmp = code(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi) tmp = min(max(sin_arg_r, cosh_arg_i), hr) * (max(max(sin_arg_r, cosh_arg_i), hr) * min(sin_arg_r, cosh_arg_i)); end
code[sin$95$arg$95$r_, cosh$95$arg$95$i_, cos$95$arg$95$r_, sinh$95$arg$95$i_, hr_, hi_] := N[(N[Min[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision] * N[(N[Max[N[Max[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision], hr], $MachinePrecision] * N[Min[sin$95$arg$95$r, cosh$95$arg$95$i], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi): sin_arg_r in [-inf, +inf], cosh_arg_i in [-inf, +inf], cos_arg_r in [-inf, +inf], sinh_arg_i in [-inf, +inf], hr in [-inf, +inf], hi in [-inf, +inf] code: THEORY BEGIN f(sin_arg_r, cosh_arg_i, cos_arg_r, sinh_arg_i, hr, hi: real): real = LET tmp_2 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_3 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_1 = IF (tmp_2 < hr) THEN tmp_3 ELSE hr ENDIF IN LET tmp_6 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_7 = IF (sin_arg_r > cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN LET tmp_5 = IF (tmp_6 > hr) THEN tmp_7 ELSE hr ENDIF IN LET tmp_8 = IF (sin_arg_r < cosh_arg_i) THEN sin_arg_r ELSE cosh_arg_i ENDIF IN tmp_1 * (tmp_5 * tmp_8) END code
\mathsf{min}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right) \cdot \left(\mathsf{max}\left(\mathsf{max}\left(sin\_arg\_r, cosh\_arg\_i\right), hr\right) \cdot \mathsf{min}\left(sin\_arg\_r, cosh\_arg\_i\right)\right)
Initial program 89.2%
Taylor expanded in sin_arg_r around 0
Applied rewrites48.2%
Applied rewrites39.5%
Taylor expanded in sin_arg_r around inf
Applied rewrites50.4%
herbie shell --seed 2026050 +o generate:egglog
(FPCore (sin_arg_r cosh_arg_i cos_arg_r sinh_arg_i hr hi)
:name "clenshaw-final-real"
:precision binary64
(- (* (* sin_arg_r cosh_arg_i) hr) (* (* cos_arg_r sinh_arg_i) hi)))