math.log/1 on complex, real part

Time bar (total: 3.1s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

analyze119.0ms (3.8%)

Memory
15.5MiB live, 58.9MiB allocated; 36ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
18.8%18.7%81.2%0.1%0%0%0%5
34.4%34.3%65.6%0.1%0%0%0%6
54.7%54.6%45.3%0.1%0%0%0%7
64.8%64.8%35.1%0.1%0%0%0%8
76.2%76.1%23.8%0.1%0%0%0%9
81.8%81.8%18.1%0.1%0%0%0%10
87.8%87.7%12.2%0.1%0%0%0%11
90.8%90.7%9.2%0.1%0%0%0%12
Compiler

Compiled 11 to 6 computations (45.5% saved)

sample888.0ms (28.2%)

Memory
1.7MiB live, 1 005.8MiB allocated; 268ms collecting garbage
Samples
634.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 426.0ms
ival-hypot: 313.0ms (73.5% of total)
ival-log: 111.0ms (26.1% of total)
adjust: 2.0ms (0.5% of total)
Bogosity

preprocess95.0ms (3%)

Memory
-37.6MiB live, 56.0MiB allocated; 8ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02256
17156
217756
326056
464456
5384556
Stop Event
node-limit
Alt Table
Click to see full alt table
StatusAccuracyProgram
46.3%
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
Symmetry

(abs re)

(abs im)

(sort re im)

Compiler

Compiled 18 to 14 computations (22.2% saved)

series153.0ms (4.9%)

Memory
28.1MiB live, 167.7MiB allocated; 30ms collecting garbage
Counts
7 → 53
Calls
Call 1
Inputs
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(+.f64 (*.f64 re re) (*.f64 im im))
(*.f64 re re)
re
(*.f64 im im)
im
Outputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 im #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (+ (* re re) (* im im)) (pow.f64 im #s(literal 2 binary64)))
#s(approx (+ (* re re) (* im im)) (+.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))
#s(approx (* re re) (pow.f64 re #s(literal 2 binary64)))
#s(approx re re)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (+ (* re re) (* im im)) (*.f64 (pow.f64 re #s(literal 2 binary64)) (+.f64 #s(literal 1 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 re #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx im im)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (+ (* re re) (* im im)) (*.f64 (pow.f64 im #s(literal 2 binary64)) (+.f64 #s(literal 1 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))))
Calls

6 calls:

TimeVariablePoint
4.0ms
re
inf
4.0ms
re
0
4.0ms
im
-inf
3.0ms
im
0
3.0ms
im
inf

rewrite176.0ms (5.6%)

Memory
-3.8MiB live, 186.1MiB allocated; 64ms collecting garbage
Counts
7 → 42
Calls
Call 1
Inputs
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(+.f64 (*.f64 re re) (*.f64 im im))
(*.f64 re re)
re
(*.f64 im im)
im
Outputs
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(fabs.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(hypot.f64 re im)
(hypot.f64 im re)
(hypot.f64 (neg.f64 re) im)
(hypot.f64 (neg.f64 re) (neg.f64 im))
(hypot.f64 (neg.f64 re) (fabs.f64 im))
(hypot.f64 (fabs.f64 re) im)
(hypot.f64 (fabs.f64 re) (neg.f64 im))
(hypot.f64 (fabs.f64 re) (fabs.f64 im))
(hypot.f64 (neg.f64 im) re)
(hypot.f64 (neg.f64 im) (neg.f64 re))
(hypot.f64 (neg.f64 im) (fabs.f64 re))
(hypot.f64 (fabs.f64 im) re)
(hypot.f64 (fabs.f64 im) (neg.f64 re))
(hypot.f64 (fabs.f64 im) (fabs.f64 re))
(hypot.f64 re (neg.f64 im))
(hypot.f64 re (fabs.f64 im))
(hypot.f64 im (neg.f64 re))
(hypot.f64 im (fabs.f64 re))
(pow.f64 (fma.f64 re re (*.f64 im im)) #s(literal 1/2 binary64))
(sqrt.f64 (fma.f64 re re (*.f64 im im)))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(-.f64 (*.f64 re re) (neg.f64 (*.f64 im im)))
(-.f64 (*.f64 re re) (*.f64 (neg.f64 im) im))
(fma.f64 (neg.f64 re) (neg.f64 re) (*.f64 im im))
(fma.f64 (fabs.f64 re) (fabs.f64 re) (*.f64 im im))
(fma.f64 (neg.f64 im) (neg.f64 im) (*.f64 re re))
(fma.f64 (fabs.f64 im) (fabs.f64 im) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(*.f64 re re)
(*.f64 (neg.f64 re) (neg.f64 re))
(*.f64 (fabs.f64 re) (fabs.f64 re))
(pow.f64 re #s(literal 2 binary64))
re
(*.f64 im im)
(*.f64 (neg.f64 im) (neg.f64 im))
(*.f64 (fabs.f64 im) (fabs.f64 im))
(pow.f64 im #s(literal 2 binary64))
im

eval10.0ms (0.3%)

Memory
21.0MiB live, 21.0MiB allocated; 0ms collecting garbage
Compiler

Compiled 1 862 to 378 computations (79.7% saved)

prune6.0ms (0.2%)

Memory
-36.0MiB live, 11.3MiB allocated; 1ms collecting garbage
Pruning

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New84690
Fresh000
Picked101
Done000
Total85691
Accuracy
100.0%
Counts
91 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(log.f64 (hypot.f64 re im))
46.3%
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re)))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im)))
10.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
99.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
Compiler

Compiled 140 to 112 computations (20% saved)

series225.0ms (7.2%)

Memory
32.0MiB live, 315.3MiB allocated; 70ms collecting garbage
Counts
20 → 56
Calls
Call 1
Inputs
(log.f64 (hypot.f64 re im))
(hypot.f64 re im)
re
im
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im)))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im))
(*.f64 #s(literal -1 binary64) im)
#s(literal -1 binary64)
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re)))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re))
(*.f64 #s(literal -1 binary64) re)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)))
(log.f64 (/.f64 #s(literal 1 binary64) im))
(/.f64 #s(literal 1 binary64) im)
#s(literal 1 binary64)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)))
(log.f64 (/.f64 #s(literal 1 binary64) re))
(/.f64 #s(literal 1 binary64) re)
Outputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 im #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx re re)
#s(approx (* -1 re) (*.f64 #s(literal -1 binary64) re))
#s(approx (* -1 (log (/ 1 re))) (log.f64 re))
#s(approx (log (/ 1 re)) (*.f64 #s(literal -1 binary64) (log.f64 re)))
#s(approx (/ 1 re) (/.f64 #s(literal 1 binary64) re))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (log (/ 1 re)) (log.f64 (/.f64 #s(literal 1 binary64) re)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 re #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx im im)
#s(approx (* -1 im) (*.f64 #s(literal -1 binary64) im))
#s(approx (* -1 (log (/ 1 im))) (log.f64 im))
#s(approx (log (/ 1 im)) (*.f64 #s(literal -1 binary64) (log.f64 im)))
#s(approx (/ 1 im) (/.f64 #s(literal 1 binary64) im))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (log (/ 1 im)) (log.f64 (/.f64 #s(literal 1 binary64) im)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))))
Calls

6 calls:

TimeVariablePoint
27.0ms
re
0
13.0ms
im
-inf
11.0ms
re
-inf
9.0ms
im
inf
8.0ms
im
0

rewrite161.0ms (5.1%)

Memory
13.6MiB live, 241.4MiB allocated; 73ms collecting garbage
Counts
20 → 61
Calls
Call 1
Inputs
(log.f64 (hypot.f64 re im))
(hypot.f64 re im)
re
im
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im)))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im))
(*.f64 #s(literal -1 binary64) im)
#s(literal -1 binary64)
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re)))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re))
(*.f64 #s(literal -1 binary64) re)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)))
(log.f64 (/.f64 #s(literal 1 binary64) im))
(/.f64 #s(literal 1 binary64) im)
#s(literal 1 binary64)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)))
(log.f64 (/.f64 #s(literal 1 binary64) re))
(/.f64 #s(literal 1 binary64) re)
Outputs
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(fabs.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(hypot.f64 re im)
(hypot.f64 im re)
(hypot.f64 (neg.f64 re) im)
(hypot.f64 (neg.f64 re) (neg.f64 im))
(hypot.f64 (neg.f64 re) (fabs.f64 im))
(hypot.f64 (fabs.f64 re) im)
(hypot.f64 (fabs.f64 re) (neg.f64 im))
(hypot.f64 (fabs.f64 re) (fabs.f64 im))
(hypot.f64 (neg.f64 im) re)
(hypot.f64 (neg.f64 im) (neg.f64 re))
(hypot.f64 (neg.f64 im) (fabs.f64 re))
(hypot.f64 (fabs.f64 im) re)
(hypot.f64 (fabs.f64 im) (neg.f64 re))
(hypot.f64 (fabs.f64 im) (fabs.f64 re))
(hypot.f64 re (neg.f64 im))
(hypot.f64 re (fabs.f64 im))
(hypot.f64 im (neg.f64 re))
(hypot.f64 im (fabs.f64 re))
(pow.f64 (fma.f64 re re (*.f64 im im)) #s(literal 1/2 binary64))
(sqrt.f64 (fma.f64 re re (*.f64 im im)))
re
im
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im))
(*.f64 #s(literal -1 binary64) im)
(*.f64 im #s(literal -1 binary64))
(neg.f64 im)
#s(literal -1 binary64)
(neg.f64 #s(literal 1 binary64))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re))
(*.f64 #s(literal -1 binary64) re)
(*.f64 re #s(literal -1 binary64))
(neg.f64 re)
#s(approx (log (sqrt (+ (* re re) (* im im)))) (neg.f64 (neg.f64 (log.f64 im))))
(*.f64 (neg.f64 (log.f64 im)) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (neg.f64 (log.f64 im)))
(log.f64 (pow.f64 (/.f64 #s(literal 1 binary64) im) #s(literal -1 binary64)))
(neg.f64 (neg.f64 (log.f64 im)))
(log.f64 (/.f64 #s(literal 1 binary64) im))
(neg.f64 (log.f64 im))
(*.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) im))
(/.f64 #s(literal 1 binary64) im)
(/.f64 #s(literal -1 binary64) (neg.f64 im))
(pow.f64 im #s(literal -1 binary64))
#s(literal 1 binary64)
(cosh.f64 #s(literal 0 binary64))
(exp.f64 #s(literal 0 binary64))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (neg.f64 (neg.f64 (log.f64 re))))
(*.f64 (neg.f64 (log.f64 re)) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (neg.f64 (log.f64 re)))
(log.f64 (pow.f64 (/.f64 #s(literal 1 binary64) re) #s(literal -1 binary64)))
(neg.f64 (neg.f64 (log.f64 re)))
(log.f64 (/.f64 #s(literal 1 binary64) re))
(neg.f64 (log.f64 re))
(*.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) re))
(/.f64 #s(literal 1 binary64) re)
(/.f64 #s(literal -1 binary64) (neg.f64 re))
(pow.f64 re #s(literal -1 binary64))

eval22.0ms (0.7%)

Memory
-1.9MiB live, 43.0MiB allocated; 6ms collecting garbage
Compiler

Compiled 2 304 to 435 computations (81.1% saved)

prune7.0ms (0.2%)

Memory
14.2MiB live, 14.2MiB allocated; 0ms collecting garbage
Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New1074111
Fresh011
Picked415
Done000
Total1116117
Accuracy
100.0%
Counts
117 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(log.f64 (hypot.f64 re im))
46.3%
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
10.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
99.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
Compiler

Compiled 144 to 112 computations (22.2% saved)

series1.0s (31.8%)

Memory
-85.7MiB live, 435.9MiB allocated; 1.3s collecting garbage
Counts
18 → 55
Calls
Call 1
Inputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
#s(approx (* -1 (log (/ 1 im))) (log.f64 im))
(log.f64 im)
im
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
#s(approx (* -1 (log (/ 1 re))) (log.f64 re))
(log.f64 re)
re
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im))
(neg.f64 im)
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re))
(neg.f64 re)
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(sqrt.f64 (fma.f64 re re (*.f64 im im)))
(fma.f64 re re (*.f64 im im))
(*.f64 im im)
Outputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (* -1 (log (/ 1 re))) (log.f64 re))
#s(approx re re)
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 im #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) (*.f64 (pow.f64 re #s(literal 2 binary64)) (fma.f64 (pow.f64 re #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 im #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (neg re) (*.f64 #s(literal -1 binary64) re))
#s(approx (+ (* re re) (* im im)) (pow.f64 im #s(literal 2 binary64)))
#s(approx (+ (* re re) (* im im)) (+.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (+ (* re re) (* im im)) (pow.f64 re #s(literal 2 binary64)))
#s(approx (+ (* re re) (* im im)) (*.f64 (pow.f64 re #s(literal 2 binary64)) (+.f64 #s(literal 1 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 im #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 im #s(literal 6 binary64)))) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 re (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 4 binary64)) (pow.f64 re #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 6 binary64)) (pow.f64 re #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 re #s(literal 2 binary64))))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (+.f64 (log.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 6 binary64)))) (*.f64 #s(literal 1/4 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 4 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 2 binary64))))))))
#s(approx (* -1 (log (/ 1 im))) (log.f64 im))
#s(approx im im)
#s(approx (sqrt (+ (* re re) (* im im))) (sqrt.f64 (pow.f64 re #s(literal 2 binary64))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (+.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) (*.f64 (pow.f64 im #s(literal 2 binary64)) (fma.f64 (pow.f64 im #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 im #s(literal 2 binary64)) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 5 binary64)))) (*.f64 #s(literal 1/8 binary64) (/.f64 #s(literal 1 binary64) (pow.f64 (sqrt.f64 (pow.f64 re #s(literal 2 binary64))) #s(literal 3 binary64))))) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) (sqrt.f64 (pow.f64 re #s(literal 2 binary64)))))))))
#s(approx (neg im) (*.f64 #s(literal -1 binary64) im))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (+ (* re re) (* im im)) (*.f64 (pow.f64 im #s(literal 2 binary64)) (+.f64 #s(literal 1 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)) (fma.f64 #s(literal -1/4 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/720 binary64) (/.f64 (fma.f64 #s(literal 30 binary64) (pow.f64 re #s(literal 6 binary64)) (*.f64 #s(literal 90 binary64) (pow.f64 re #s(literal 6 binary64)))) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64)))))))))
#s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) (*.f64 im (+.f64 #s(literal 1 binary64) (fma.f64 #s(literal -1/8 binary64) (/.f64 (pow.f64 re #s(literal 4 binary64)) (pow.f64 im #s(literal 4 binary64))) (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 re #s(literal 6 binary64)) (pow.f64 im #s(literal 6 binary64))) (*.f64 #s(literal 1/2 binary64) (/.f64 (pow.f64 re #s(literal 2 binary64)) (pow.f64 im #s(literal 2 binary64))))))))))
Calls

6 calls:

TimeVariablePoint
22.0ms
re
0
19.0ms
re
inf
17.0ms
im
-inf
15.0ms
re
-inf
15.0ms
im
inf

rewrite176.0ms (5.6%)

Memory
-90.2MiB live, 146.8MiB allocated; 66ms collecting garbage
Counts
18 → 50
Calls
Call 1
Inputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
#s(approx (* -1 (log (/ 1 im))) (log.f64 im))
(log.f64 im)
im
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
#s(approx (* -1 (log (/ 1 re))) (log.f64 re))
(log.f64 re)
re
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im))
(neg.f64 im)
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re))
(neg.f64 re)
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(sqrt.f64 (fma.f64 re re (*.f64 im im)))
(fma.f64 re re (*.f64 im im))
(*.f64 im im)
Outputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (neg (neg (log im))) (log.f64 im)))
#s(approx (neg (neg (log im))) (log.f64 im))
(log.f64 im)
im
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (neg (neg (log re))) (log.f64 re)))
#s(approx (neg (neg (log re))) (log.f64 re))
(log.f64 re)
re
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im))
(neg.f64 im)
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
#s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re))
(neg.f64 re)
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(fabs.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(hypot.f64 re im)
(hypot.f64 im re)
(hypot.f64 (neg.f64 re) im)
(hypot.f64 (neg.f64 re) (neg.f64 im))
(hypot.f64 (neg.f64 re) (fabs.f64 im))
(hypot.f64 (fabs.f64 re) im)
(hypot.f64 (fabs.f64 re) (neg.f64 im))
(hypot.f64 (fabs.f64 re) (fabs.f64 im))
(hypot.f64 (neg.f64 im) re)
(hypot.f64 (neg.f64 im) (neg.f64 re))
(hypot.f64 (neg.f64 im) (fabs.f64 re))
(hypot.f64 (fabs.f64 im) re)
(hypot.f64 (fabs.f64 im) (neg.f64 re))
(hypot.f64 (fabs.f64 im) (fabs.f64 re))
(hypot.f64 re (neg.f64 im))
(hypot.f64 re (fabs.f64 im))
(hypot.f64 im (neg.f64 re))
(hypot.f64 im (fabs.f64 re))
(pow.f64 (fma.f64 re re (*.f64 im im)) #s(literal 1/2 binary64))
(sqrt.f64 (fma.f64 re re (*.f64 im im)))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(-.f64 (*.f64 re re) (neg.f64 (*.f64 im im)))
(-.f64 (*.f64 re re) (*.f64 (neg.f64 im) im))
(fma.f64 re re (*.f64 im im))
(fma.f64 (neg.f64 re) (neg.f64 re) (*.f64 im im))
(fma.f64 (fabs.f64 re) (fabs.f64 re) (*.f64 im im))
(fma.f64 (neg.f64 im) (neg.f64 im) (*.f64 re re))
(fma.f64 (fabs.f64 im) (fabs.f64 im) (*.f64 re re))
(fma.f64 im im (*.f64 re re))
(*.f64 im im)
(*.f64 (neg.f64 im) (neg.f64 im))
(*.f64 (fabs.f64 im) (fabs.f64 im))
(pow.f64 im #s(literal 2 binary64))

eval10.0ms (0.3%)

Memory
34.7MiB live, 34.7MiB allocated; 0ms collecting garbage
Compiler

Compiled 1 951 to 401 computations (79.4% saved)

prune21.0ms (0.7%)

Memory
-32.9MiB live, 12.7MiB allocated; 22ms collecting garbage
Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New92092
Fresh000
Picked055
Done011
Total92698
Accuracy
100.0%
Counts
98 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(log.f64 (hypot.f64 re im))
46.3%
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
0.0%
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
10.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
99.2%
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
Compiler

Compiled 74 to 58 computations (21.6% saved)

regimes50.0ms (1.6%)

Memory
25.3MiB live, 119.0MiB allocated; 8ms collecting garbage
Accuracy

Total -63.5b remaining (-11781%)

Threshold costs -63.5b (-11781%)

Counts
10 → 1
11 → 1
Calls
Call 1
Inputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
Outputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
Call 2
Inputs
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 im))) (log.f64 im)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) #s(approx (* -1 (log (/ 1 re))) (log.f64 re)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 im)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (neg.f64 re)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) im)))
(log.f64 #s(approx (sqrt (+ (* re re) (* im im))) (*.f64 #s(literal -1 binary64) re)))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) im))))
#s(approx (log (sqrt (+ (* re re) (* im im)))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) re))))
(log.f64 (sqrt.f64 (fma.f64 re re (*.f64 im im))))
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(log.f64 (hypot.f64 re im))
Outputs
(log.f64 (hypot.f64 re im))
Calls

14 calls:

6.0ms
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
6.0ms
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
3.0ms
im
3.0ms
re
3.0ms
(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
Results
AccuracySegmentsBranch
99.2%1(*.f64 im im)
99.2%1(*.f64 re re)
99.2%1(+.f64 (*.f64 re re) (*.f64 im im))
99.2%1(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
99.2%1(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
99.2%1re
99.2%1im
100.0%1(*.f64 im im)
100.0%1(*.f64 re re)
100.0%1(+.f64 (*.f64 re re) (*.f64 im im))
100.0%1(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
100.0%1(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
100.0%1re
100.0%1im
Compiler

Compiled 205 to 109 computations (46.8% saved)

derivations0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated; 0ms collecting garbage
Stop Event
done
Compiler

Compiled 23 to 17 computations (26.1% saved)

preprocess24.0ms (0.8%)

Memory
5.0MiB live, 50.2MiB allocated; 8ms collecting garbage
Compiler

Compiled 170 to 138 computations (18.8% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...