Skip to content

Commit 0a2ec14

Browse files
authored
Merge pull request #1333 from herbie-fp/QuantumWithConstants
New benchmark of Quantum approximation
2 parents d2bca45 + 64acdd1 commit 0a2ec14

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed

bench/demo.fpcore

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,152 @@
7373
:precision binary64
7474
:pre (and (<= 0.0 x 1) (<= 1/3 a 3.0))
7575
(- 1.0 (pow (- 1.0 x) a)))
76+
77+
(FPCore (x)
78+
:name "Quantum aproximation with lots of constants"
79+
:precision binary64
80+
(let* (
81+
(E (exp 1))
82+
(sqrtE (sqrt E))
83+
(invSqrtE (/ 1 sqrtE))
84+
(logTerm (log (- 1 invSqrtE)))
85+
(log2Term (* logTerm logTerm))
86+
(log3Term (* log2Term logTerm))
87+
(E3/2 (pow E 1.5))
88+
(E5/2 (pow E 2.5))
89+
(E7/2 (pow E 3.5))
90+
(dx (- x 1/2))
91+
92+
;; Common denominator
93+
(D (+ (* sqrtE log2Term)
94+
(* 16 sqrtE logTerm)
95+
(* -64 sqrtE)
96+
(* -8 (pow E 2) log2Term)
97+
(* -4 (pow E 2) logTerm)
98+
(* -8 E log2Term)
99+
(* -84 E logTerm)
100+
(* 16 E)
101+
(* 2 E3/2 log2Term)
102+
(* 16 E3/2 logTerm)
103+
(* -4 E3/2)
104+
(* E5/2 log2Term)
105+
-24))
106+
107+
;; Numerators
108+
(n1 (+ (* sqrtE log3Term)
109+
(* 20 sqrtE log2Term)
110+
(* 210 sqrtE logTerm)
111+
(* -1200 sqrtE)
112+
(* -18 (pow E 3) log3Term)
113+
(* -20 (pow E 3) log2Term)
114+
(* -116 (pow E 2) log3Term)
115+
(* -720 (pow E 2) log2Term)
116+
(* 120 (pow E 2) logTerm)
117+
(* -18 E log3Term)
118+
(* -220 E log2Term)
119+
(* -1280 E logTerm)
120+
(* -300 E)
121+
(* 3 E3/2 log3Term)
122+
(* -20 E3/2 log2Term)
123+
(* -930 E3/2 logTerm)
124+
(* 3 E5/2 log3Term)
125+
(* 120 E5/2 log2Term)
126+
(* -20 E5/2 logTerm)
127+
(* E7/2 log3Term)
128+
-120))
129+
130+
(n2 (+ (* sqrtE log3Term)
131+
(* 18 sqrtE log2Term)
132+
(* -108 sqrtE logTerm)
133+
(* -192 sqrtE)
134+
(* (pow E 3) log3Term)
135+
(* -16 (pow E 2) log3Term)
136+
(* 6 (pow E 2) log2Term)
137+
(* -18 (pow E 2) logTerm)
138+
(* -9 E log3Term)
139+
(* -94 E log2Term)
140+
(* -378 E logTerm)
141+
(* 48 E)
142+
(* -16 E3/2 log3Term)
143+
(* -174 E3/2 log2Term)
144+
(* 72 E3/2 logTerm)
145+
(* -12 E3/2)
146+
(* -9 E5/2 log3Term)
147+
(* -4 E5/2 log2Term)
148+
(* -12 logTerm)
149+
-72))
150+
151+
(n3 (+ (* sqrtE logTerm)
152+
(* -216 sqrtE)
153+
(* -8 (pow E 3) logTerm)
154+
(* 2 (pow E 3))
155+
(* -176 (pow E 2) logTerm)
156+
(* 96 (pow E 2))
157+
(* -8 E logTerm)
158+
(* 266 E)
159+
(* 83 E3/2 logTerm)
160+
(* -232 E3/2)
161+
(* 83 E5/2 logTerm)
162+
(* -16 E5/2)
163+
(* E7/2 logTerm)
164+
12))
165+
166+
(n4 (+ (* -18 sqrtE logTerm)
167+
(* -110 sqrtE)
168+
(* (pow E 3) logTerm)
169+
(* 53 (pow E 2) logTerm)
170+
(* 13 E logTerm)
171+
(* 30 E)
172+
(* -66 E3/2 logTerm)
173+
(* 30 E3/2)
174+
(* -8 E5/2 logTerm)
175+
logTerm
176+
10))
177+
178+
(n5 (+ (* -18 sqrtE log2Term)
179+
(* -115 sqrtE logTerm)
180+
(* -340 sqrtE)
181+
(* (pow E 3) log2Term)
182+
(* 3 (pow E 2) log2Term)
183+
(* 90 (pow E 2) logTerm)
184+
(* -10 (pow E 2))
185+
(* 3 E log2Term)
186+
(* 20 E logTerm)
187+
(* -390 E)
188+
(* -116 E3/2 log2Term)
189+
(* -530 E3/2 logTerm)
190+
(* 60 E3/2)
191+
(* -18 E5/2 log2Term)
192+
(* -15 E5/2 logTerm)
193+
log2Term
194+
(* 10 logTerm)
195+
60))
196+
197+
(n6 (+ (* sqrtE log2Term)
198+
(* 15 sqrtE logTerm)
199+
(* -156 sqrtE)
200+
(* (pow E 3) log2Term)
201+
(* -16 (pow E 2) log2Term)
202+
(* 30 (pow E 2) logTerm)
203+
(* -6 (pow E 2))
204+
(* -9 E log2Term)
205+
(* -70 E logTerm)
206+
(* -126 E)
207+
(* -16 E3/2 log2Term)
208+
(* -180 E3/2 logTerm)
209+
(* 24 E3/2)
210+
(* -9 E5/2 log2Term)
211+
(* -7 E5/2 logTerm)
212+
-12))
213+
)
214+
(+ 1
215+
(/
216+
(+
217+
(/ (* n1 (* dx dx)) (* 30 (pow (- 1 sqrtE) 2) D))
218+
(/ (* n2 dx) (* 3 (- 1 sqrtE) D))
219+
(/ (* sqrtE n3 (pow dx 4)) (* 360 (pow (- 1 sqrtE) 4) D))
220+
(/ (* sqrtE n4 (pow dx 3)) (* 30 (pow (- 1 sqrtE) 3) D))
221+
(/ (* sqrtE n5 (pow dx 2)) (* 30 (pow (- 1 sqrtE) 2) D))
222+
(/ (* n6 dx) (* 3 (- 1 sqrtE) D))
223+
logTerm)
224+
))))

0 commit comments

Comments
 (0)