Hyperbolic arc-(co)tangent

Time bar (total: 3.6s)

analyze4.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
0%0%50%0%0%50%0%3
50%25%25%0%0%50%0%4
75%37.5%12.5%0%0%50%0%5
87.5%43.7%6.2%0%0%50%0%6
93.8%46.9%3.1%0%0%50%0%7
96.9%48.4%1.6%0%0%50%0%8
98.4%49.2%0.8%0%0%50%0%9
99.2%49.6%0.4%0%0%50%0%10
99.6%49.8%0.2%0%0%50%0%11
99.8%49.9%0.1%0%0%50%0%12
Compiler

Compiled 14 to 10 computations (28.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 2.0ms
ival-div: 1.0ms (49.8% of total)
ival-log: 1.0ms (49.8% of total)
ival-sub: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
const: 0.0ms (0% of total)

sample3.2s (89.7%)

Results
1.7s4119×1024valid
508.0ms443×2048valid
459.0ms2029×512valid
158.0ms1665×256valid
1.0ms256invalid
Precisions
Click to see histograms. Total time spent on operations: 2.4s
ival-log: 1.3s (54.8% of total)
ival-div: 574.0ms (23.8% of total)
ival-add: 205.0ms (8.5% of total)
ival-mult: 175.0ms (7.3% of total)
ival-sub: 106.0ms (4.4% of total)
const: 29.0ms (1.2% of total)
Bogosity

preprocess72.0ms (2%)

Algorithm
egg-herbie
Rules
305×fma-define
221×fma-neg
96×times-frac
79×div-sub
50×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
022148
144140
269140
3118140
4214140
5451140
61138140
71432140
81598140
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x)) (-.f64 #s(literal 1 binary64) (neg.f64 x)))))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x)) (-.f64 #s(literal 1 binary64) (neg.f64 x))))))
Outputs
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x)) (-.f64 #s(literal 1 binary64) (neg.f64 x)))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) (neg.f64 x)))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x)) (-.f64 #s(literal 1 binary64) (neg.f64 x))))))
(*.f64 #s(literal -1/2 binary64) (log.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) (neg.f64 x)))))
(*.f64 (log.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))) #s(literal -1/2 binary64))

explain249.0ms (7%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2530-1(0.005840361780314515)(log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x)))
00-0-x
00-0-(/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))
00-0-(+.f64 #s(literal 1 binary64) x)
00-0-#s(literal 2 binary64)
00-0-(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
00-0-(-.f64 #s(literal 1 binary64) x)
00-0-#s(literal 1 binary64)
00-0-(/.f64 #s(literal 1 binary64) #s(literal 2 binary64))
Results
131.0ms242×1024valid
39.0ms148×512valid
26.0ms32×2048valid
10.0ms90×256valid
Compiler

Compiled 95 to 29 computations (69.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 152.0ms
ival-log: 92.0ms (60.7% of total)
ival-div: 32.0ms (21.1% of total)
ival-mult: 11.0ms (7.3% of total)
ival-sub: 7.0ms (4.6% of total)
ival-add: 7.0ms (4.6% of total)
const: 2.0ms (1.3% of total)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
9.1%
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Compiler

Compiled 26 to 18 computations (30.8% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
1-exp
+-commutative
sub-neg
*-commutative
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01535
12435
22835
33035
43135
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Outputs
(*.f64 (/.f64 #s(literal 1 binary64) #s(literal 2 binary64)) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (/.f64 (+.f64 #s(literal 1 binary64) x) (-.f64 #s(literal 1 binary64) x))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 11 to 8 computations (27.3% saved)

preprocess38.0ms (1.1%)

Compiler

Compiled 48 to 34 computations (29.2% saved)

end0.0ms (0%)

Profiling

Loading profile data...