Average Error: 0.0 → 0.0
Time: 5.7s
Precision: binary64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right) \]
\[0.5 \cdot \frac{\cos re}{e^{im}} + e^{im} \cdot \left(0.5 \cdot \cos re\right) \]
(FPCore (re im)
 :precision binary64
 (* (* 0.5 (cos re)) (+ (exp (- im)) (exp im))))
(FPCore (re im)
 :precision binary64
 (+ (* 0.5 (/ (cos re) (exp im))) (* (exp im) (* 0.5 (cos re)))))
double code(double re, double im) {
	return (0.5 * cos(re)) * (exp(-im) + exp(im));
}
double code(double re, double im) {
	return (0.5 * (cos(re) / exp(im))) + (exp(im) * (0.5 * cos(re)));
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = (0.5d0 * cos(re)) * (exp(-im) + exp(im))
end function
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = (0.5d0 * (cos(re) / exp(im))) + (exp(im) * (0.5d0 * cos(re)))
end function
public static double code(double re, double im) {
	return (0.5 * Math.cos(re)) * (Math.exp(-im) + Math.exp(im));
}
public static double code(double re, double im) {
	return (0.5 * (Math.cos(re) / Math.exp(im))) + (Math.exp(im) * (0.5 * Math.cos(re)));
}
def code(re, im):
	return (0.5 * math.cos(re)) * (math.exp(-im) + math.exp(im))
def code(re, im):
	return (0.5 * (math.cos(re) / math.exp(im))) + (math.exp(im) * (0.5 * math.cos(re)))
function code(re, im)
	return Float64(Float64(0.5 * cos(re)) * Float64(exp(Float64(-im)) + exp(im)))
end
function code(re, im)
	return Float64(Float64(0.5 * Float64(cos(re) / exp(im))) + Float64(exp(im) * Float64(0.5 * cos(re))))
end
function tmp = code(re, im)
	tmp = (0.5 * cos(re)) * (exp(-im) + exp(im));
end
function tmp = code(re, im)
	tmp = (0.5 * (cos(re) / exp(im))) + (exp(im) * (0.5 * cos(re)));
end
code[re_, im_] := N[(N[(0.5 * N[Cos[re], $MachinePrecision]), $MachinePrecision] * N[(N[Exp[(-im)], $MachinePrecision] + N[Exp[im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[re_, im_] := N[(N[(0.5 * N[(N[Cos[re], $MachinePrecision] / N[Exp[im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Exp[im], $MachinePrecision] * N[(0.5 * N[Cos[re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
0.5 \cdot \frac{\cos re}{e^{im}} + e^{im} \cdot \left(0.5 \cdot \cos re\right)

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right) \]
  2. Applied egg-rr0.0

    \[\leadsto \color{blue}{e^{-im} \cdot \left(0.5 \cdot \cos re\right) + e^{im} \cdot \left(0.5 \cdot \cos re\right)} \]
  3. Taylor expanded in im around inf 0.0

    \[\leadsto \color{blue}{0.5 \cdot \left(\cos re \cdot e^{-im}\right)} + e^{im} \cdot \left(0.5 \cdot \cos re\right) \]
  4. Simplified0.0

    \[\leadsto \color{blue}{0.5 \cdot \frac{\cos re}{e^{im}}} + e^{im} \cdot \left(0.5 \cdot \cos re\right) \]
  5. Final simplification0.0

    \[\leadsto 0.5 \cdot \frac{\cos re}{e^{im}} + e^{im} \cdot \left(0.5 \cdot \cos re\right) \]

Reproduce

herbie shell --seed 2022170 
(FPCore (re im)
  :name "math.cos on complex, real part"
  :precision binary64
  (* (* 0.5 (cos re)) (+ (exp (- im)) (exp im))))