Trowbridge-Reitz Sample, near normal, slope_y

Time bar (total: 2.3s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze262.0ms (11.5%)

Memory
12.6MiB live, 407.8MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0%100%0%0%0%0
0%0%0%100%0%0%0%1
0%0%0%100%0%0%0%2
0%0%0%100%0%0%0%3
0%0%0%100%0%0%0%4
0%0%0%100%0%0%0%5
18.7%0%0%100%0%0%0%6
28.1%0%0%100%0%0%0%7
32.8%0%0%100%0%0%0%8
49.2%0%0%100%0%0%0%9
57.4%0%0%100%0%0%0%10
61.5%0%0%100%0%0%0%11
71.8%0%0%100%0%0%0%12
Compiler

Compiled 35 to 25 computations (28.6% saved)

sample1.5s (67.3%)

Memory
32.9MiB live, 2 270.9MiB allocated
Samples
1.1s8 256×0valid
1.0ms0invalid
Precisions
Click to see histograms. Total time spent on operations: 927.0ms
const: 339.0ms (36.6% of total)
ival-mult: 114.0ms (12.3% of total)
ival-<=: 114.0ms (12.3% of total)
ival-sin: 107.0ms (11.5% of total)
ival-sqrt: 69.0ms (7.4% of total)
ival-div: 65.0ms (7% of total)
ival-sub: 43.0ms (4.6% of total)
ival->: 36.0ms (3.9% of total)
ival-and: 32.0ms (3.5% of total)
exact: 5.0ms (0.5% of total)
ival-assert: 3.0ms (0.3% of total)
Bogosity

explain119.0ms (5.2%)

Memory
20.3MiB live, 220.2MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
00-0-(-.f32 #s(literal 1 binary32) u1)
00-0-(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
00-0-u2
00-0-#s(literal 1 binary32)
00-0-#s(literal 314159265359/50000000000 binary32)
00-0-u1
00-0-(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
00-0-(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
00-0-(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
61.0ms512×0valid
Compiler

Compiled 123 to 48 computations (61% saved)

Precisions
Click to see histograms. Total time spent on operations: 38.0ms
ival-mult: 11.0ms (28.7% of total)
const: 11.0ms (28.7% of total)
ival-sin: 6.0ms (15.6% of total)
ival-div: 4.0ms (10.4% of total)
ival-sub: 3.0ms (7.8% of total)
ival-sqrt: 3.0ms (7.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

preprocess8.0ms (0.4%)

Memory
-30.0MiB live, 8.2MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Outputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Compiler

Compiled 11 to 11 computations (0% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 0 to 3 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.3%
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Compiler

Compiled 11 to 11 computations (0% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(-.f32 #s(literal 1 binary32) u1)
cost-diff0
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
cost-diff0
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
cost-diff0
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Calls
Call 1
Inputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
Outputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2

localize33.0ms (1.4%)

Memory
37.0MiB live, 75.0MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.140625
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
accuracy0.20283129884221007
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy0.37890625
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Samples
26.0ms256×0valid
Compiler

Compiled 74 to 24 computations (67.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 18.0ms
const: 7.0ms (38.6% of total)
ival-mult: 3.0ms (16.5% of total)
ival-sin: 3.0ms (16.5% of total)
ival-div: 2.0ms (11% of total)
ival-sqrt: 2.0ms (11% of total)
ival-sub: 1.0ms (5.5% 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.4%)

Memory
-55.3MiB live, 16.5MiB allocated
Counts
6 → 46
Calls
Call 1
Inputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
1
(+ 1 (* -1 u1))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(* -1 u1)
(* u1 (- (/ 1 u1) 1))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* -1 (* u1 (- 1 (/ 1 u1))))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Calls

9 calls:

TimeVariablePointExpression
24.0ms
u1
@0
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
2.0ms
u1
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
2.0ms
u2
@0
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
1.0ms
u1
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
1.0ms
u2
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))

simplify1.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated
Algorithm
egg-herbie
Counts
46 → 6
Calls
Call 1
Inputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
1
(+ 1 (* -1 u1))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(* -1 u1)
(* u1 (- (/ 1 u1) 1))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* -1 (* u1 (- 1 (/ 1 u1))))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(-.f32 #s(literal 1 binary32) u1)
(sqrt u1)
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))

rewrite0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Outputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))

eval1.0ms (0%)

Memory
3.0MiB live, 3.0MiB allocated
Compiler

Compiled 170 to 27 computations (84.1% saved)

prune2.0ms (0.1%)

Memory
4.9MiB live, 5.0MiB allocated
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New8412
Fresh000
Picked011
Done000
Total8513
Accuracy
98.3%
Counts
13 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.3%
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
18.9%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
14.6%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
18.4%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
Compiler

Compiled 76 to 68 computations (10.5% saved)

simplify1.0ms (0%)

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

Found 13 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
cost-diff0
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
cost-diff0
(-.f32 #s(literal 1 binary32) u1)
cost-diff0
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
cost-diff0
(-.f32 #s(literal 1 binary32) u1)
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
cost-diff0
(-.f32 #s(literal 1 binary32) u1)
cost-diff0
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
cost-diff0
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
u1
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
u1
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
u1
(-.f32 #s(literal 1 binary32) u1)
#s(literal 1 binary32)
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))

localize41.0ms (1.8%)

Memory
-5.8MiB live, 70.0MiB allocated
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
accuracy0.20283129884221007
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy0.37890625
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
accuracy25.70588637766444
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.0
(-.f32 #s(literal 1 binary32) u1)
accuracy0.140625
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
accuracy25.94101973029366
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
accuracy0.0
(-.f32 #s(literal 1 binary32) u1)
accuracy27.328506996109247
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
accuracy0.0
(-.f32 #s(literal 1 binary32) u1)
accuracy0.125
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
accuracy0.140625
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
accuracy26.123022126330294
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
Samples
32.0ms256×0valid
Compiler

Compiled 207 to 36 computations (82.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-mult: 10.0ms (44.3% of total)
ival-sin: 3.0ms (13.3% of total)
const: 3.0ms (13.3% of total)
ival-div: 2.0ms (8.9% of total)
ival-sqrt: 2.0ms (8.9% of total)
ival-sub: 1.0ms (4.4% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series4.0ms (0.2%)

Memory
10.4MiB live, 10.3MiB allocated
Counts
10 → 46
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
1
(+ 1 (* -1 u1))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(* -1 u1)
(* u1 (- (/ 1 u1) 1))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* -1 (* u1 (- 1 (/ 1 u1))))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Calls

9 calls:

TimeVariablePointExpression
1.0ms
u2
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
1.0ms
u2
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
0.0ms
u1
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
0.0ms
u2
@0
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))
0.0ms
u1
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (- 1 u1) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* 314159265359/50000000000 u2) (sin (* 314159265359/50000000000 u2)))

simplify1.0ms (0%)

Memory
2.1MiB live, 2.1MiB allocated
Algorithm
egg-herbie
Counts
46 → 10
Calls
Call 1
Inputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
1
(+ 1 (* -1 u1))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(* -1 u1)
(* u1 (- (/ 1 u1) 1))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* -1 (* u1 (- 1 (/ 1 u1))))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(-.f32 #s(literal 1 binary32) u1)
(sqrt u1)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
u1
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(* u1 (+ 1 u1))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))

rewrite1.0ms (0%)

Memory
1.5MiB live, 1.5MiB allocated
Counts
10 → 10
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
(-.f32 #s(literal 1 binary32) u1)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))

eval1.0ms (0.1%)

Memory
3.5MiB live, 3.5MiB allocated
Compiler

Compiled 479 to 40 computations (91.6% saved)

prune6.0ms (0.2%)

Memory
-28.7MiB live, 10.6MiB allocated
Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New19423
Fresh000
Picked044
Done011
Total19928
Accuracy
98.3%
Counts
28 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.3%
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
18.9%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
14.6%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
18.4%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
16.0%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
15.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
18.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
Compiler

Compiled 164 to 132 computations (19.5% saved)

simplify1.0ms (0%)

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

Found 15 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
cost-diff0
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
cost-diff0
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
cost-diff0
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
cost-diff0
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
cost-diff0
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
cost-diff0
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
cost-diff0
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
cost-diff0
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2

localize36.0ms (1.6%)

Memory
26.0MiB live, 69.6MiB allocated
Localize:

Found 15 expressions of interest:

NewMetricScoreProgram
accuracy0.125
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy26.064839408766645
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy26.123022126330294
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
accuracy0.20283129884221007
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy26.123022126330294
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
accuracy26.27364672736659
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy25.94101973029366
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
accuracy26.064839408766645
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.20283129884221007
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy25.94101973029366
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
accuracy26.27364672736659
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Samples
27.0ms256×0valid
Compiler

Compiled 281 to 35 computations (87.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-mult: 5.0ms (29.5% of total)
ival-sin: 3.0ms (17.7% of total)
const: 3.0ms (17.7% of total)
ival-div: 2.0ms (11.8% of total)
ival-sqrt: 2.0ms (11.8% of total)
ival-sub: 1.0ms (5.9% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series6.0ms (0.2%)

Memory
-29.5MiB live, 9.1MiB allocated
Counts
10 → 41
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
u1
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (sin (* 314159265359/50000000000 u2)) (* 314159265359/50000000000 u2) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))))
1.0ms
u2
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (sin (* 314159265359/50000000000 u2)) (* 314159265359/50000000000 u2) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))))
1.0ms
u2
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (sin (* 314159265359/50000000000 u2)) (* 314159265359/50000000000 u2) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))))
1.0ms
u2
@0
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (sin (* 314159265359/50000000000 u2)) (* 314159265359/50000000000 u2) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))))
0.0ms
u1
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (sin (* 314159265359/50000000000 u2)) (* 314159265359/50000000000 u2) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/ u1 (- 1 u1)) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))))

simplify1.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated
Algorithm
egg-herbie
Counts
41 → 10
Calls
Call 1
Inputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* u2 (+ 314159265359/50000000000 (* -31006276680305942139213528068663279/750000000000000000000000000000000 (pow u2 2))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (pow u2 2)) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* u2 (+ 314159265359/50000000000 (* (pow u2 2) (- (* (pow u2 2) (+ 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (pow u2 2)))) 31006276680305942139213528068663279/750000000000000000000000000000000))))
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
(sin (* 314159265359/50000000000 u2))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
u1
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(* u1 (+ 1 u1))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(* u1 (+ 1 (* u1 (+ 1 u1))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt u1)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))

rewrite1.0ms (0%)

Memory
1.6MiB live, 1.6MiB allocated
Counts
10 → 10
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))

eval2.0ms (0.1%)

Memory
4.2MiB live, 4.2MiB allocated
Compiler

Compiled 765 to 45 computations (94.1% saved)

prune5.0ms (0.2%)

Memory
11.3MiB live, 11.3MiB allocated
Pruning

10 alts after pruning (1 fresh and 9 done)

PrunedKeptTotal
New28129
Fresh000
Picked044
Done055
Total281038
Accuracy
98.3%
Counts
38 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.3%
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
18.9%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
14.6%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
18.4%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
16.0%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
15.0%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
15.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
18.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
Compiler

Compiled 194 to 151 computations (22.2% saved)

simplify1.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
cost-diff0
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
cost-diff0
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
cost-diff0
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
#s(literal 314159265359/50000000000 binary32)
u2

localize30.0ms (1.3%)

Memory
8.4MiB live, 47.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.27734375
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
accuracy25.70169911443513
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
accuracy26.123022126330294
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
accuracy26.27364672736659
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Samples
23.0ms256×0valid
Compiler

Compiled 139 to 32 computations (77% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-mult: 3.0ms (19% of total)
ival-sin: 3.0ms (19% of total)
const: 3.0ms (19% of total)
ival-div: 2.0ms (12.7% of total)
ival-sub: 2.0ms (12.7% of total)
ival-sqrt: 2.0ms (12.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
5.6MiB live, 5.6MiB allocated
Counts
6 → 37
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
Calls

9 calls:

TimeVariablePointExpression
1.0ms
u2
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (* 314159265359/50000000000 u2))
1.0ms
u2
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (* 314159265359/50000000000 u2))
0.0ms
u2
@0
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (* 314159265359/50000000000 u2))
0.0ms
u1
@-inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (* 314159265359/50000000000 u2))
0.0ms
u1
@inf
((* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (sqrt (/ u1 (- 1 u1))) (/ u1 (- 1 u1)) (* 314159265359/50000000000 u2))

simplify4.0ms (0.2%)

Memory
-36.2MiB live, 1.7MiB allocated
Algorithm
egg-herbie
Counts
37 → 6
Calls
Call 1
Inputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt u1)
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt u1)) (* 1/2 (sqrt (/ 1 u1))))))
(+ (sqrt u1) (* (pow u1 2) (+ (* 1/2 (sqrt (/ 1 u1))) (* u1 (+ (* 1/2 (sqrt (/ 1 u1))) (* 1/2 (* (sqrt u1) (- 1 (* 1/4 (/ 1 u1))))))))))
u1
(* u1 (+ 1 u1))
(* u1 (+ 1 (* u1 (+ 1 u1))))
(* u1 (+ 1 (* u1 (+ 1 (* u1 (+ 1 u1))))))
(* (sin (* 314159265359/50000000000 u2)) (sqrt -1))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))))
(+ (* -1/2 (/ (sin (* 314159265359/50000000000 u2)) (* u1 (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2))))) (* (pow u1 2) (sqrt -1)))) (+ (* -1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2))))) (* (pow u1 3) (sqrt -1)))) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))))
(sqrt -1)
(- (sqrt -1) (* 1/2 (/ 1 (* u1 (sqrt -1)))))
(- (+ (sqrt -1) (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1))))) (/ 1/2 (* u1 (sqrt -1))))
(- (+ (sqrt -1) (+ (* -1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (* (pow u1 2) (sqrt -1)))) (* -1/2 (/ (+ 1 (* 1/2 (/ (+ 1 (* 1/4 (/ 1 (pow (sqrt -1) 2)))) (pow (sqrt -1) 2)))) (* (pow u1 3) (sqrt -1)))))) (/ 1/2 (* u1 (sqrt -1))))
-1
(* -1 (+ 1 (/ 1 u1)))
(- (* -1 (/ (+ 1 (/ 1 u1)) u1)) 1)
(- (* -1 (/ (+ 1 (/ 1 u1)) (pow u1 2))) (+ 1 (/ 1 u1)))
(+ (* 1/2 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1))) (* -3/8 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)) u1)) (* 3/8 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* -1/2 (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))) u1)) (* (sin (* 314159265359/50000000000 u2)) (sqrt -1)))
(+ (sqrt -1) (* 1/2 (/ (sqrt -1) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1/2 (sqrt -1)) (* -3/8 (/ (sqrt -1) u1))) u1)))
(+ (sqrt -1) (* -1 (/ (+ (* -1 (/ (+ (* 5/16 (/ (sqrt -1) u1)) (* 3/8 (sqrt -1))) u1)) (* -1/2 (sqrt -1))) u1)))
(- (* -1 (/ (+ 1 (+ (/ 1 u1) (/ 1 (pow u1 2)))) u1)) 1)
(* 314159265359/50000000000 (* (sqrt (/ u1 (- 1 u1))) u2))
(* u2 (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2)))))))
(* u2 (+ (* 314159265359/50000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -31006276680305942139213528068663279/750000000000000000000000000000000 (sqrt (/ u1 (- 1 u1)))) (* (pow u2 2) (+ (* -302029322777818351566783844332719832329455959975176141755859165754785028165295919/3937500000000000000000000000000000000000000000000000000000000000000000000000000 (* (sqrt (/ u1 (- 1 u1))) (pow u2 2))) (* 3060196847853821555298148281676017575122444629042460390799/37500000000000000000000000000000000000000000000000000000 (sqrt (/ u1 (- 1 u1))))))))))
(* 314159265359/50000000000 u2)
(* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2)))
Outputs
(* (sqrt u1) (sin (* 314159265359/50000000000 u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(+ (* 1/2 (* (sqrt (pow u1 3)) (sin (* 314159265359/50000000000 u2)))) (* (sqrt u1) (sin (* 314159265359/50000000000 u2))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt u1) (sin (* 314159265359/50000000000 u2)))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(+ (* (sqrt u1) (sin (* 314159265359/50000000000 u2))) (* (pow u1 2) (+ (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))) (* u1 (+ (* 1/2 (* (sqrt u1) (* (sin (* 314159265359/50000000000 u2)) (- 1 (* 1/4 (/ 1 u1)))))) (* 1/2 (* (sqrt (/ 1 u1)) (sin (* 314159265359/50000000000 u2)))))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
(sqrt u1)
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(+ (sqrt u1) (* 1/2 (sqrt (pow u1 3))))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)

rewrite0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))))
#s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)

eval1.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated
Compiler

Compiled 325 to 26 computations (92% saved)

prune4.0ms (0.2%)

Memory
7.5MiB live, 7.5MiB allocated
Pruning

10 alts after pruning (0 fresh and 10 done)

PrunedKeptTotal
New11011
Fresh000
Picked011
Done099
Total111021
Accuracy
98.3%
Counts
21 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.3%
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
18.9%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
14.6%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
18.4%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
16.0%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
15.0%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
15.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
18.8%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
Compiler

Compiled 388 to 186 computations (52.1% saved)

regimes32.0ms (1.4%)

Memory
5.0MiB live, 46.4MiB allocated
Counts
10 → 1
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Outputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Calls

8 calls:

7.0ms
u2
4.0ms
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
3.0ms
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
3.0ms
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
3.0ms
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
Results
AccuracySegmentsBranch
98.3%1cosTheta_i
98.3%1u1
98.3%1u2
98.3%1(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
98.3%1(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
98.3%1(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
98.3%1(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
98.3%1(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
Compiler

Compiled 32 to 44 computations (-37.5% saved)

regimes29.0ms (1.3%)

Memory
7.2MiB live, 44.5MiB allocated
Counts
9 → 1
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))
(*.f32 #s(approx (sqrt (/ u1 (- 1 u1))) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))))))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
Calls

8 calls:

7.0ms
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
3.0ms
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
3.0ms
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
3.0ms
cosTheta_i
3.0ms
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
Results
AccuracySegmentsBranch
19.7%1cosTheta_i
19.7%1u1
19.7%1u2
19.7%1(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
19.7%1(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
19.7%1(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
19.7%1(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
19.7%1(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
Compiler

Compiled 32 to 44 computations (-37.5% saved)

regimes21.0ms (0.9%)

Memory
-3.4MiB live, 34.5MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
Calls

8 calls:

5.0ms
(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
2.0ms
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
2.0ms
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
2.0ms
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
2.0ms
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
Results
AccuracySegmentsBranch
18.9%1(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
18.9%1(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
18.9%1u2
18.9%1(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
18.9%1cosTheta_i
18.9%1u1
18.9%1(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
18.9%1(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
Compiler

Compiled 32 to 44 computations (-37.5% saved)

regimes15.0ms (0.7%)

Memory
-9.8MiB live, 28.5MiB allocated
Counts
2 → 1
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Calls

8 calls:

4.0ms
u1
2.0ms
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
2.0ms
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
1.0ms
cosTheta_i
1.0ms
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
Results
AccuracySegmentsBranch
18.8%1cosTheta_i
18.8%1u1
18.8%1(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
18.8%1(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
18.8%1u2
18.8%1(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
18.8%1(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
18.8%1(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
Compiler

Compiled 32 to 44 computations (-37.5% saved)

regimes10.0ms (0.4%)

Memory
20.8MiB live, 20.8MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
Outputs
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
Calls

8 calls:

1.0ms
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
1.0ms
(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
1.0ms
(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
1.0ms
(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
1.0ms
u1
Results
AccuracySegmentsBranch
14.6%1cosTheta_i
14.6%1(sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))
14.6%1u2
14.6%1(*.f32 #s(literal 314159265359/50000000000 binary32) u2)
14.6%1(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
14.6%1u1
14.6%1(sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
14.6%1(/.f32 u1 (-.f32 #s(literal 1 binary32) u1))
Compiler

Compiled 32 to 44 computations (-37.5% saved)

simplify5.0ms (0.2%)

Memory
8.8MiB live, 8.8MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))
Outputs
(*.f32 (sqrt.f32 (/.f32 u1 (-.f32 #s(literal 1 binary32) u1))) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (sin.f32 (*.f32 #s(literal 314159265359/50000000000 binary32) u2))))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (/.f32 u1 (-.f32 #s(literal 1 binary32) u1)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) #s(approx (/ u1 (- 1 u1)) (*.f32 #s(literal 314159265359/50000000000 binary32) u2)))
#s(approx (* (sqrt (/ u1 (- 1 u1))) (sin (* 314159265359/50000000000 u2))) (-.f32 #s(literal 1 binary32) u1))

soundness1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Stop Event
done
Compiler

Compiled 86 to 25 computations (70.9% saved)

preprocess24.0ms (1%)

Memory
-7.0MiB live, 36.7MiB allocated
Compiler

Compiled 194 to 72 computations (62.9% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...