Toniolo and Linder, Equation (3b), real

Time bar (total: 2.9s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze176.0ms (6%)

Memory
16.5MiB live, 250.9MiB allocated
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
25%25%74.9%0.1%0%0%0%5
43.8%43.7%56.2%0.1%0%0%0%6
43.8%43.7%56.2%0.1%0%0%0%7
53.1%53%46.8%0.1%0%0%0%8
60.9%60.8%39%0.1%0%0%0%9
60.9%60.8%39%0.1%0%0%0%10
64.8%64.7%35.1%0.1%0%0%0%11
68.4%68.3%31.6%0.1%0%0%0%12
Compiler

Compiled 18 to 14 computations (22.2% saved)

sample1.8s (60.1%)

Memory
22.3MiB live, 1 720.2MiB allocated
Samples
1.2s8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 933.0ms
ival-sin: 575.0ms (61.6% of total)
ival-pow2: 153.0ms (16.4% of total)
ival-sqrt: 56.0ms (6% of total)
ival-mult: 55.0ms (5.9% of total)
ival-div: 48.0ms (5.1% of total)
ival-add: 36.0ms (3.9% of total)
ival-true: 7.0ms (0.8% of total)
ival-assert: 4.0ms (0.4% of total)
Bogosity

explain179.0ms (6.1%)

Memory
2.0MiB live, 235.8MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
190-1(-1.0973877816098015e-240 -1.3430070945661738e-159 -1.471991876813595e+77)(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
00-0-(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
00-0-(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
00-0-(sin.f64 kx)
00-0-(sin.f64 th)
00-0-(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
00-0-(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
00-0-th
00-0-#s(literal 2 binary64)
00-0-(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
00-0-(sin.f64 ky)
00-0-ky
00-0-kx
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))uflow-rescue180
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))underflow60
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))underflow62
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))underflow18
Confusion
Predicted +Predicted -
+181
-0237
Precision
1.0
Recall
0.9473684210526315
Confusion?
Predicted +Predicted MaybePredicted -
+1801
-00237
Precision?
1.0
Recall?
0.9473684210526315
Freqs
test
numberfreq
0238
118
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
76.0ms512×0valid
Compiler

Compiled 218 to 56 computations (74.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 57.0ms
ival-sin: 33.0ms (58.3% of total)
ival-pow2: 11.0ms (19.4% of total)
ival-div: 3.0ms (5.3% of total)
ival-mult: 3.0ms (5.3% of total)
ival-sqrt: 3.0ms (5.3% of total)
ival-add: 2.0ms (3.5% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

preprocess3.0ms (0.1%)

Memory
5.6MiB live, 5.6MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Outputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Compiler

Compiled 16 to 13 computations (18.8% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 3 computations (-∞% saved)

prune1.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.7%
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Compiler

Compiled 16 to 13 computations (18.8% saved)

simplify1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
(sin.f64 ky)
cost-diff0
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Calls
Call 1
Inputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 th)
th
Outputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 th)
th

localize49.0ms (1.7%)

Memory
-18.8MiB live, 58.4MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.20769501953688402
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
accuracy0.21875
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
Samples
39.0ms256×0valid
Compiler

Compiled 134 to 28 computations (79.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 27.0ms
ival-sin: 16.0ms (59.7% of total)
ival-pow2: 5.0ms (18.6% of total)
ival-mult: 2.0ms (7.5% of total)
ival-sqrt: 2.0ms (7.5% of total)
ival-div: 1.0ms (3.7% of total)
ival-add: 1.0ms (3.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series31.0ms (1.1%)

Memory
-0.6MiB live, 36.9MiB allocated
Counts
6 → 45
Calls
Call 1
Inputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
Outputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(pow (sin kx) 2)
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(sin kx)
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(pow (sin ky) 2)
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Calls

9 calls:

TimeVariablePointExpression
6.0ms
ky
@0
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin ky) 2) (pow (sin kx) 2))
5.0ms
ky
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin ky) 2) (pow (sin kx) 2))
4.0ms
th
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin ky) 2) (pow (sin kx) 2))
3.0ms
kx
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin ky) 2) (pow (sin kx) 2))
3.0ms
kx
@0
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin ky) 2) (pow (sin kx) 2))

simplify1.0ms (0%)

Memory
1.8MiB live, 1.8MiB allocated
Algorithm
egg-herbie
Counts
45 → 6
Calls
Call 1
Inputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(pow (sin kx) 2)
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(sin kx)
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(pow (sin ky) 2)
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Outputs
(sin th)
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(sin.f64 ky)
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
1
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
Outputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))

eval1.0ms (0%)

Memory
2.6MiB live, 2.6MiB allocated
Compiler

Compiled 263 to 31 computations (88.2% saved)

prune5.0ms (0.2%)

Memory
7.2MiB live, 7.2MiB allocated
Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New8513
Fresh000
Picked011
Done000
Total8614
Accuracy
92.8%
Counts
14 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.7%
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
16.1%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
7.2%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
7.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
Compiler

Compiled 252 to 197 computations (21.8% saved)

simplify1.0ms (0%)

Memory
1.7MiB live, 1.7MiB allocated
Algorithm
egg-herbie
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
(sin.f64 ky)
cost-diff0
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
cost-diff0
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
cost-diff0
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
cost-diff0
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
(sin.f64 kx)
cost-diff0
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
cost-diff0
(sin.f64 ky)
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
cost-diff0
(sin.f64 ky)
cost-diff0
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
ky
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
ky
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))

localize67.0ms (2.3%)

Memory
-0.6MiB live, 78.7MiB allocated
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy0.21875
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy58.972502632680815
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
accuracy0.21875
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy60.54498802675275
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
accuracy0.0
(sin.f64 kx)
accuracy0.15234375
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
accuracy0.21875
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
accuracy60.167169782811044
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
accuracy0.00390625
(sin.f64 ky)
accuracy59.760779196503954
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
accuracy0.00390625
(sin.f64 ky)
accuracy0.15234375
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy58.59028331946305
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
Samples
49.0ms256×0valid
Compiler

Compiled 474 to 44 computations (90.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 34.0ms
ival-sin: 23.0ms (68.3% of total)
ival-pow2: 5.0ms (14.8% of total)
ival-div: 2.0ms (5.9% of total)
ival-mult: 2.0ms (5.9% of total)
ival-sqrt: 2.0ms (5.9% of total)
ival-add: 1.0ms (3% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series17.0ms (0.6%)

Memory
-14.3MiB live, 24.0MiB allocated
Counts
14 → 56
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
Outputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
kx
(* kx (+ 1 (* -1/6 (pow kx 2))))
(* kx (+ 1 (* (pow kx 2) (- (* 1/120 (pow kx 2)) 1/6))))
(* kx (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 1/120 (* -1/5040 (pow kx 2)))) 1/6))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(pow (sin kx) 2)
(sin kx)
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Calls

9 calls:

TimeVariablePointExpression
3.0ms
ky
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin ky) 2) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
2.0ms
kx
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin ky) 2) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
2.0ms
ky
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin ky) 2) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
2.0ms
kx
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin ky) 2) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
2.0ms
th
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin ky) 2) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))))

simplify1.0ms (0%)

Memory
2.2MiB live, 2.2MiB allocated
Algorithm
egg-herbie
Counts
56 → 14
Calls
Call 1
Inputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
kx
(* kx (+ 1 (* -1/6 (pow kx 2))))
(* kx (+ 1 (* (pow kx 2) (- (* 1/120 (pow kx 2)) 1/6))))
(* kx (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 1/120 (* -1/5040 (pow kx 2)))) 1/6))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(pow (sin kx) 2)
(sin kx)
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Outputs
(sin th)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
(sin.f64 ky)
1
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(pow kx 2)
(sin.f64 kx)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
kx
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(* kx (+ 1 (* -1/6 (pow kx 2))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))

rewrite1.0ms (0%)

Memory
1.6MiB live, 1.6MiB allocated
Counts
14 → 14
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))

eval5.0ms (0.2%)

Memory
9.1MiB live, 9.1MiB allocated
Compiler

Compiled 1 627 to 88 computations (94.6% saved)

prune11.0ms (0.4%)

Memory
17.2MiB live, 17.2MiB allocated
Pruning

16 alts after pruning (10 fresh and 6 done)

PrunedKeptTotal
New401050
Fresh000
Picked055
Done011
Total401656
Accuracy
92.8%
Counts
56 → 16
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.7%
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
16.1%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
7.2%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
10.3%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
9.0%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
9.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
6.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sin.f64 kx))) (sin.f64 th))
23.8%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
11.7%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
7.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
4.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
3.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
Compiler

Compiled 774 to 511 computations (34% saved)

simplify2.0ms (0.1%)

Memory
-36.4MiB live, 2.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 19 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
cost-diff0
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
(sin.f64 ky)
cost-diff0
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
cost-diff0
#s(approx (pow (sin kx) 2) (sin.f64 kx))
cost-diff0
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
cost-diff0
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
(sin.f64 ky)
cost-diff0
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
cost-diff0
(sin.f64 ky)
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
ky
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
(sin.f64 th)
th
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
ky
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
(sin.f64 th)
th

localize69.0ms (2.4%)

Memory
28.5MiB live, 102.1MiB allocated
Localize:

Found 19 expressions of interest:

NewMetricScoreProgram
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy55.450694822455624
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
accuracy60.167169782811044
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy58.90982051143559
#s(approx (pow (sin kx) 2) (sin.f64 kx))
accuracy58.972502632680815
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy4.448624770723253
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy58.90982051143559
#s(approx (pow (sin kx) 2) (sin.f64 kx))
accuracy60.54498802675275
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
accuracy0.00390625
(sin.f64 ky)
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy56.525789673130205
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
accuracy0.00390625
(sin.f64 ky)
accuracy0.15234375
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
accuracy58.972502632680815
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
accuracy59.760779196503954
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
Samples
51.0ms256×0valid
Compiler

Compiled 661 to 49 computations (92.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 32.0ms
ival-sin: 16.0ms (49.8% of total)
ival-pow2: 10.0ms (31.1% of total)
ival-mult: 2.0ms (6.2% of total)
ival-sqrt: 2.0ms (6.2% of total)
ival-div: 1.0ms (3.1% of total)
ival-add: 1.0ms (3.1% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series20.0ms (0.7%)

Memory
-10.0MiB live, 27.6MiB allocated
Counts
16 → 52
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
Outputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(pow (sin kx) 2)
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(sin kx)
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Calls

9 calls:

TimeVariablePointExpression
6.0ms
ky
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow (sin ky) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (pow (sin kx) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))))
2.0ms
kx
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow (sin ky) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (pow (sin kx) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))))
2.0ms
kx
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow (sin ky) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (pow (sin kx) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))))
2.0ms
ky
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow (sin ky) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (pow (sin kx) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))))
2.0ms
th
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow (sin ky) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (pow (sin kx) 2) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow (sin kx) 2) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))))

simplify2.0ms (0.1%)

Memory
2.6MiB live, 2.6MiB allocated
Algorithm
egg-herbie
Counts
52 → 16
Calls
Call 1
Inputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(pow (sin kx) 2)
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(sin kx)
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Outputs
(sin th)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
(sin.f64 ky)
1
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(sin ky)
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(pow (sin ky) 2)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
(+ (pow kx 2) (pow (sin ky) 2))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))

rewrite1.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated
Counts
16 → 16
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))

eval5.0ms (0.2%)

Memory
9.1MiB live, 9.1MiB allocated
Compiler

Compiled 1 881 to 81 computations (95.7% saved)

prune18.0ms (0.6%)

Memory
-11.9MiB live, 26.0MiB allocated
Pruning

22 alts after pruning (11 fresh and 11 done)

PrunedKeptTotal
New43750
Fresh145
Picked055
Done066
Total442266
Accuracy
93.0%
Counts
66 → 22
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.7%
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
16.1%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
7.2%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
10.3%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
5.9%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
9.0%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
9.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
6.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sin.f64 kx))) (sin.f64 th))
23.8%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
11.7%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
7.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
4.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))))
7.2%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
6.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
3.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
5.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
4.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
Compiler

Compiled 1 078 to 659 computations (38.9% saved)

simplify2.0ms (0.1%)

Memory
2.7MiB live, 2.7MiB allocated
Algorithm
egg-herbie
Localize:

Found 20 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
cost-diff0
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
cost-diff0
(sin.f64 ky)
cost-diff0
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
cost-diff0
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
cost-diff0
(sin.f64 ky)
cost-diff0
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
cost-diff0
(sin.f64 kx)
cost-diff0
#s(approx (pow (sin kx) 2) (sin.f64 kx))
cost-diff0
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
cost-diff0
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
cost-diff0
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
cost-diff0
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(sin.f64 ky)
ky
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(sin.f64 th)
th
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(sin.f64 ky)
ky
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sin.f64 ky)
ky
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
kx
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(sin.f64 kx)
kx
#s(literal 2 binary64)
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
(sin.f64 ky)
ky

localize75.0ms (2.6%)

Memory
16.4MiB live, 96.8MiB allocated
Localize:

Found 20 expressions of interest:

NewMetricScoreProgram
accuracy4.448624770723253
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy4.448624770723253
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
accuracy52.56116038013456
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
accuracy60.54498802675275
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
accuracy0.24056625976844204
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
accuracy52.56116038013456
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
accuracy58.90982051143559
#s(approx (pow (sin kx) 2) (sin.f64 kx))
accuracy58.972502632680815
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
accuracy0.20769501953688402
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
accuracy55.450694822455624
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
accuracy58.90982051143559
#s(approx (pow (sin kx) 2) (sin.f64 kx))
accuracy58.972502632680815
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
accuracy0.0
(sin.f64 kx)
accuracy55.450694822455624
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
accuracy58.90982051143559
#s(approx (pow (sin kx) 2) (sin.f64 kx))
accuracy60.54498802675275
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
accuracy0.15234375
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
accuracy0.21875
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
accuracy58.972502632680815
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
accuracy60.167169782811044
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
Samples
48.0ms256×0valid
Compiler

Compiled 796 to 52 computations (93.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 27.0ms
ival-sin: 16.0ms (59.3% of total)
ival-pow2: 5.0ms (18.5% of total)
ival-mult: 2.0ms (7.4% of total)
ival-sqrt: 2.0ms (7.4% of total)
ival-div: 1.0ms (3.7% of total)
ival-add: 1.0ms (3.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series21.0ms (0.7%)

Memory
-8.4MiB live, 29.4MiB allocated
Counts
20 → 56
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
Outputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
kx
(* kx (+ 1 (* -1/6 (pow kx 2))))
(* kx (+ 1 (* (pow kx 2) (- (* 1/120 (pow kx 2)) 1/6))))
(* kx (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 1/120 (* -1/5040 (pow kx 2)))) 1/6))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(pow (sin kx) 2)
(sin kx)
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Calls

9 calls:

TimeVariablePointExpression
6.0ms
ky
@0
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (pow (sin ky) 2))
2.0ms
kx
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (pow (sin ky) 2))
2.0ms
ky
@inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (pow (sin ky) 2))
2.0ms
kx
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (pow (sin ky) 2))
2.0ms
ky
@-inf
((* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (sin kx) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin ky) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (pow (sin kx) 2) (pow (sin ky) 2))

simplify2.0ms (0.1%)

Memory
2.7MiB live, 2.7MiB allocated
Algorithm
egg-herbie
Counts
56 → 20
Calls
Call 1
Inputs
(sin th)
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
1
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin ky)
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
(pow kx 2)
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
kx
(* kx (+ 1 (* -1/6 (pow kx 2))))
(* kx (+ 1 (* (pow kx 2) (- (* 1/120 (pow kx 2)) 1/6))))
(* kx (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 1/120 (* -1/5040 (pow kx 2)))) 1/6))))
(pow (sin ky) 2)
(+ (pow kx 2) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* -1/3 (pow kx 2)))) (pow (sin ky) 2))
(+ (* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3)))) (pow (sin ky) 2))
(* (* (sin ky) (sin th)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))
(pow (sin kx) 2)
(sin kx)
(+ (pow (sin kx) 2) (pow (sin ky) 2))
(/ (* ky (sin th)) (sin kx))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (* -1/6 (/ (sin th) (sin kx))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))))))))) (/ (sin th) (sin kx))))
(* ky (+ (* (pow ky 2) (+ (* -1/2 (/ (sin th) (pow (sin kx) 3))) (+ (* -1/6 (/ (sin th) (sin kx))) (* (pow ky 2) (+ (* 1/120 (/ (sin th) (sin kx))) (+ (* 1/12 (/ (sin th) (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (* (pow ky 2) (+ (* -1/2 (* (sin kx) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8)))))))) (+ (* -1/12 (* (sin kx) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* -1/240 (/ (sin th) (pow (sin kx) 3))) (* -1/5040 (/ (sin th) (sin kx)))))))))))))) (/ (sin th) (sin kx))))
(/ ky (sin kx))
(* ky (+ (* -1 (* (pow ky 2) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* 1/12 (/ 1 (pow (sin kx) 3)))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(* ky (+ (* (pow ky 2) (- (* (pow ky 2) (+ (* 1/120 (/ 1 (sin kx))) (+ (* 1/12 (/ 1 (pow (sin kx) 3))) (+ (* 1/2 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))))) (* (pow ky 2) (- (+ (* -1/2 (* (sin kx) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6)))) (pow (sin kx) 2))) (+ (* 2/45 (/ 1 (pow (sin kx) 4))) (+ (* 2/3 (/ 1 (pow (sin kx) 6))) (/ 1 (pow (sin kx) 8))))))) (* -1/12 (* (sin kx) (+ (* 1/3 (/ 1 (pow (sin kx) 4))) (* 3/4 (/ 1 (pow (sin kx) 6))))))) (+ (* 1/5040 (/ 1 (sin kx))) (* 1/240 (/ 1 (pow (sin kx) 3)))))))))) (+ (* 1/6 (/ 1 (sin kx))) (* 1/2 (/ 1 (pow (sin kx) 3)))))) (/ 1 (sin kx))))
(+ (sin kx) (* 1/2 (/ (pow ky 2) (sin kx))))
(+ (sin kx) (* (pow ky 2) (+ (* -1/2 (/ (* (pow ky 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2))))) (sin kx))) (* 1/2 (/ 1 (sin kx))))))
(+ (sin kx) (* (pow ky 2) (+ (* (pow ky 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (sin kx))) (* 1/2 (/ (* (pow ky 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin kx) 2)))) (pow (sin kx) 2))))) (sin kx))))) (* 1/2 (/ 1 (sin kx))))))
ky
(* ky (+ 1 (* -1/6 (pow ky 2))))
(* ky (+ 1 (* (pow ky 2) (- (* 1/120 (pow ky 2)) 1/6))))
(* ky (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 1/120 (* -1/5040 (pow ky 2)))) 1/6))))
(+ (pow ky 2) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* -1/3 (pow ky 2)))) (pow (sin kx) 2))
(+ (* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3)))) (pow (sin kx) 2))
(pow ky 2)
(* (pow ky 2) (+ 1 (* -1/3 (pow ky 2))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* 2/45 (pow ky 2)) 1/3))))
(* (pow ky 2) (+ 1 (* (pow ky 2) (- (* (pow ky 2) (+ 2/45 (* -1/315 (pow ky 2)))) 1/3))))
(* (* th (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
(* th (+ (* -1/6 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))
(* th (+ (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))) (* (pow th 2) (+ (* -1/6 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* (pow th 2) (+ (* -1/5040 (* (* (pow th 2) (sin ky)) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (* 1/120 (* (sin ky) (sqrt (/ 1 (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))))
Outputs
(sin th)
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
(+ (sin th) (* -1/2 (/ (* (pow kx 2) (sin th)) (pow (sin ky) 2))))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
(+ (sin th) (* (pow kx 2) (+ (* -1/2 (/ (sin th) (pow (sin ky) 2))) (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (* (sin th) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8))))))))) (* 1/2 (* (pow (sin ky) 2) (* (sin th) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))))))))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
1
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(+ 1 (* -1/2 (/ (pow kx 2) (pow (sin ky) 2))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
(+ 1 (* (pow kx 2) (- (* 1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ (* -1/2 (* (pow kx 2) (* (pow (sin ky) 2) (+ (* -1/2 (/ (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))) (pow (sin ky) 2))) (+ (* 2/45 (/ 1 (pow (sin ky) 4))) (+ (* 2/3 (/ 1 (pow (sin ky) 6))) (/ 1 (pow (sin ky) 8)))))))) (* 1/2 (* (pow (sin ky) 2) (+ (* 1/3 (/ 1 (pow (sin ky) 4))) (* 3/4 (/ 1 (pow (sin ky) 6)))))))) (* 1/2 (/ 1 (pow (sin ky) 2))))))
(sin.f64 kx)
(sin ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(+ (sin ky) (* 1/2 (/ (pow kx 2) (sin ky))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(+ (sin ky) (* (pow kx 2) (+ (* -1/2 (/ (* (pow kx 2) (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2))))) (sin ky))) (* 1/2 (/ 1 (sin ky))))))
(sin.f64 ky)
(+ (sin ky) (* (pow kx 2) (+ (* (pow kx 2) (+ (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (sin ky))) (* 1/2 (/ (* (pow kx 2) (- 2/45 (* -1/2 (/ (+ 1/3 (* 1/4 (/ 1 (pow (sin ky) 2)))) (pow (sin ky) 2))))) (sin ky))))) (* 1/2 (/ 1 (sin ky))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(pow kx 2)
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(* (pow kx 2) (+ 1 (* -1/3 (pow kx 2))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* 2/45 (pow kx 2)) 1/3))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(* (pow kx 2) (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 2/45 (* -1/315 (pow kx 2)))) 1/3))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
kx
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(* kx (+ 1 (* -1/6 (pow kx 2))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(* kx (+ 1 (* (pow kx 2) (- (* 1/120 (pow kx 2)) 1/6))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(* kx (+ 1 (* (pow kx 2) (- (* (pow kx 2) (+ 1/120 (* -1/5040 (pow kx 2)))) 1/6))))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))

rewrite1.0ms (0%)

Memory
2.9MiB live, 2.9MiB allocated
Counts
20 → 20
Calls
Call 1
Inputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))
#s(approx (pow (sin kx) 2) (sin.f64 kx))
(sin.f64 kx)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
(sin.f64 ky)
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
(sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
(pow.f64 (sin.f64 ky) #s(literal 2 binary64))

eval11.0ms (0.4%)

Memory
-21.2MiB live, 16.3MiB allocated
Compiler

Compiled 3 740 to 181 computations (95.2% saved)

prune20.0ms (0.7%)

Memory
37.1MiB live, 37.1MiB allocated
Pruning

32 alts after pruning (16 fresh and 16 done)

PrunedKeptTotal
New691180
Fresh156
Picked055
Done01111
Total7032102
Accuracy
93.3%
Counts
102 → 32
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.7%
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
16.1%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
7.2%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
10.3%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
13.5%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
10.6%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
5.9%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
6.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin.f64 kx)) (sin.f64 th))
9.0%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
9.4%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
23.8%
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
11.7%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
7.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
4.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))))
4.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))))
7.2%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
7.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
4.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
6.1%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
6.2%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (sin.f64 ky))))
6.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
4.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.3%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
3.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
5.4%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
11.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
6.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
4.7%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))))
5.5%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
4.6%
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
Compiler

Compiled 2 319 to 758 computations (67.3% saved)

regimes100.0ms (3.4%)

Memory
11.7MiB live, 161.9MiB allocated
Counts
34 → 1
Calls
Call 1
Inputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sin.f64 kx))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin.f64 kx)) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (sin.f64 ky))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Outputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Calls

9 calls:

14.0ms
th
13.0ms
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
13.0ms
(sin.f64 th)
12.0ms
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
9.0ms
(sin.f64 kx)
Results
AccuracySegmentsBranch
92.7%1kx
92.7%1ky
92.7%1th
92.7%1(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
92.7%1(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
92.7%1(sin.f64 ky)
92.7%1(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
92.7%1(sin.f64 kx)
92.7%1(sin.f64 th)
Compiler

Compiled 42 to 51 computations (-21.4% saved)

regimes116.0ms (4%)

Memory
-24.7MiB live, 153.7MiB allocated
Counts
33 → 1
Calls
Call 1
Inputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sin.f64 kx))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin.f64 kx)) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (sin.f64 ky))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx)))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64))) (sin.f64 th))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 kx) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))) (sin.f64 th))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 #s(approx (sin kx) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) (sqrt.f64 #s(approx (+ (pow (sin kx) 2) (pow (sin ky) 2)) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (/.f64 (sin.f64 ky) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) (+.f64 #s(approx (pow (sin kx) 2) (sin.f64 kx)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sqrt.f64 (+.f64 #s(approx (pow (sin kx) 2) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
Outputs
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
Calls

9 calls:

30.0ms
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
17.0ms
(sin.f64 th)
12.0ms
(sin.f64 kx)
12.0ms
kx
9.0ms
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
Results
AccuracySegmentsBranch
23.8%1(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
23.8%1kx
23.8%1th
23.8%1(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
23.8%1(sin.f64 kx)
23.8%1ky
23.8%1(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
23.8%1(sin.f64 ky)
23.8%1(sin.f64 th)
Compiler

Compiled 42 to 51 computations (-21.4% saved)

regimes22.0ms (0.7%)

Memory
4.8MiB live, 43.2MiB allocated
Counts
4 → 2
Calls
Call 1
Inputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
Outputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
Calls

9 calls:

5.0ms
ky
2.0ms
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
2.0ms
th
2.0ms
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
2.0ms
(sin.f64 kx)
Results
AccuracySegmentsBranch
11.7%1(sin.f64 ky)
11.7%1kx
11.7%1(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
13.5%2(sin.f64 th)
11.7%1(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
11.7%1(sin.f64 kx)
13.2%2(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
11.7%1ky
11.7%1th
Compiler

Compiled 42 to 51 computations (-21.4% saved)

regimes19.0ms (0.6%)

Memory
-5.6MiB live, 39.0MiB allocated
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (pow.f64 (sin.f64 kx) #s(literal 2 binary64))))
Outputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
Calls

9 calls:

5.0ms
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
2.0ms
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
2.0ms
ky
2.0ms
(sin.f64 kx)
2.0ms
(sin.f64 th)
Results
AccuracySegmentsBranch
6.6%1th
6.6%1(sin.f64 ky)
6.6%1(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
6.6%1(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
6.6%1(sin.f64 kx)
6.6%1kx
6.6%1ky
6.6%1(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
6.6%1(sin.f64 th)
Compiler

Compiled 42 to 51 computations (-21.4% saved)

regimes14.0ms (0.5%)

Memory
0.2MiB live, 39.0MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
Outputs
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
Calls

9 calls:

3.0ms
th
1.0ms
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
1.0ms
(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
1.0ms
(sin.f64 th)
1.0ms
(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
Results
AccuracySegmentsBranch
4.6%1ky
4.6%1(sin.f64 kx)
4.6%1(sin.f64 ky)
4.6%1(/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64)))))
4.6%1(pow.f64 (sin.f64 kx) #s(literal 2 binary64))
4.6%1(sin.f64 th)
4.6%1(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
4.6%1th
4.6%1kx
Compiler

Compiled 42 to 51 computations (-21.4% saved)

bsearch29.0ms (1%)

Memory
9.4MiB live, 45.7MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
27.0ms
3.749024388200808e-54
4.9372782658061395e-45
Samples
22.0ms144×0valid
Compiler

Compiled 379 to 324 computations (14.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 18.0ms
ival-sin: 12.0ms (67% of total)
ival-pow2: 2.0ms (11.2% of total)
ival-div: 1.0ms (5.6% of total)
ival-add: 1.0ms (5.6% of total)
ival-mult: 1.0ms (5.6% of total)
ival-sqrt: 1.0ms (5.6% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify15.0ms (0.5%)

Memory
-24.3MiB live, 13.1MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
(if (<=.f64 (sin.f64 th) #s(literal 4844365416753631/421249166674228746791672110734681729275580381602196445017243910144 binary64)) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))
Outputs
(*.f64 (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) #s(literal 2 binary64)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))))) (sin.f64 th))
(*.f64 #s(approx (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))) (sin.f64 th))
(if (<=.f64 (sin.f64 th) #s(literal 4844365416753631/421249166674228746791672110734681729275580381602196445017243910144 binary64)) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (pow.f64 (sin.f64 ky) #s(literal 2 binary64))) #s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky)))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) (sin.f64 ky))
#s(approx (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)) #s(approx (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2))) #s(approx (pow (sin kx) 2) (sin.f64 kx))))

soundness1.0ms (0%)

Memory
2.9MiB live, 2.9MiB allocated
Stop Event
fuel
Compiler

Compiled 151 to 33 computations (78.1% saved)

preprocess49.0ms (1.7%)

Memory
-9.8MiB live, 70.9MiB allocated
Compiler

Compiled 334 to 92 computations (72.5% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...