Skip to content

Commit 7452616

Browse files
committed
Falloff fpcore
1 parent 59b1409 commit 7452616

File tree

2 files changed

+123
-1
lines changed

2 files changed

+123
-1
lines changed

bench/growlibm-falloff_hard.fpcore

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
; Hard falloff benchmarks sourced from growlibm/Falloff.cpp. Troe, SRI, and Tsang falloff formulæ mix exponentials, logarithms, and guarded reciprocals, which create cancellation-prone transitions between low- and high-pressure limits.
2+
3+
(FPCore (T m_a m_rt3 m_rt1 m_t2)
4+
:name "falloff-troe-fcent"
5+
:pre (and (> T 0)
6+
(>= m_a 0)
7+
(<= m_a 1)
8+
(> m_rt3 0)
9+
(> m_rt1 0))
10+
(let ((term3 (* (- 1 m_a) (exp (- (* T m_rt3))))))
11+
(let ((term1 (* m_a (exp (- (* T m_rt1))))))
12+
(let ((base (+ term3 term1)))
13+
(if (< (fabs m_t2) 1e-12)
14+
base
15+
(+ base (exp (/ (- m_t2) T))))))))
16+
17+
(FPCore (T m_a m_rt3 m_rt1 m_t2 SmallNumber)
18+
:name "falloff-troe-log-fcent"
19+
:pre (and (> T 0)
20+
(> SmallNumber 0)
21+
(>= m_a 0)
22+
(<= m_a 1)
23+
(> m_rt3 0)
24+
(> m_rt1 0))
25+
(let ((term3 (* (- 1 m_a) (exp (- (* T m_rt3))))))
26+
(let ((term1 (* m_a (exp (- (* T m_rt1))))))
27+
(let ((base (+ term3 term1)))
28+
(let ((fcent (if (< (fabs m_t2) 1e-12)
29+
base
30+
(+ base (exp (/ (- m_t2) T))))))
31+
(let ((safe (if (> fcent SmallNumber) fcent SmallNumber)))
32+
(/ (log safe) (log 10.0))))))))
33+
34+
(FPCore (pr work SmallNumber)
35+
:name "falloff-troe-blend"
36+
:pre (and (> SmallNumber 0)
37+
(> pr 0)
38+
(< (fabs work) 10))
39+
(let ((guard (if (> pr SmallNumber) pr SmallNumber)))
40+
(let ((lpr (/ (log guard) (log 10.0))))
41+
(let ((cc (+ -0.4 (* -0.67 work))))
42+
(let ((nn (+ 0.75 (* -1.27 work))))
43+
(let ((lp (+ lpr cc)))
44+
(let ((den (- nn (* 0.14 lp))))
45+
(let ((f1 (/ lp den)))
46+
(let ((lgf (/ work (+ 1 (* f1 f1)))))
47+
(pow 10.0 lgf))))))))))
48+
49+
(FPCore (T3 SmallNumber)
50+
:name "falloff-troe-inverse-t3"
51+
:pre (and (> SmallNumber 0))
52+
(let ((absT3 (fabs T3)))
53+
(if (< absT3 SmallNumber)
54+
(/ 1.0 SmallNumber)
55+
(/ 1.0 T3))))
56+
57+
(FPCore (T1 SmallNumber)
58+
:name "falloff-troe-inverse-t1"
59+
:pre (and (> SmallNumber 0))
60+
(let ((absT1 (fabs T1)))
61+
(if (< absT1 SmallNumber)
62+
(/ 1.0 SmallNumber)
63+
(/ 1.0 T1))))
64+
65+
(FPCore (T m_a m_b m_c)
66+
:name "falloff-sri-work"
67+
:pre (and (> T 0)
68+
(>= m_a 0)
69+
(>= m_c 0))
70+
(let ((base (* m_a (exp (/ (- m_b) T)))))
71+
(if (< m_c 1e-12)
72+
base
73+
(+ base (exp (/ (- T) m_c))))))
74+
75+
(FPCore (pr work m_d m_e T SmallNumber)
76+
:name "falloff-sri-factor"
77+
:pre (and (> pr 0)
78+
(> work 0)
79+
(> T 0)
80+
(> SmallNumber 0)
81+
(>= m_d 0))
82+
(let ((guard (if (> pr SmallNumber) pr SmallNumber)))
83+
(let ((lpr (/ (log guard) (log 10.0))))
84+
(let ((xx (/ 1.0 (+ 1.0 (* lpr lpr)))))
85+
(let ((amp (* m_d (pow T m_e))))
86+
(* (pow work xx) amp))))))
87+
88+
(FPCore (pr work SmallNumber)
89+
:name "falloff-troe-shape"
90+
:pre (and (> SmallNumber 0)
91+
(> pr 0)
92+
(< (fabs work) 10))
93+
(let ((guard (if (> pr SmallNumber) pr SmallNumber)))
94+
(let ((lpr (/ (log guard) (log 10.0))))
95+
(let ((cc (+ -0.4 (* -0.67 work))))
96+
(let ((nn (+ 0.75 (* -1.27 work))))
97+
(let ((lp (+ lpr cc)))
98+
(let ((den (- nn (* 0.14 lp))))
99+
(/ lp den))))))))
100+
101+
(FPCore (T m_a m_b SmallNumber)
102+
:name "falloff-tsang-work"
103+
:pre (and (> T 0)
104+
(> SmallNumber 0))
105+
(let ((fcent (+ m_a (* m_b T))))
106+
(let ((safe (if (> fcent SmallNumber) fcent SmallNumber)))
107+
(/ (log safe) (log 10.0)))))
108+
109+
(FPCore (pr work SmallNumber)
110+
:name "falloff-tsang-factor"
111+
:pre (and (> SmallNumber 0)
112+
(> pr 0)
113+
(< (fabs work) 10))
114+
(let ((guard (if (> pr SmallNumber) pr SmallNumber)))
115+
(let ((lpr (/ (log guard) (log 10.0))))
116+
(let ((cc (+ -0.4 (* -0.67 work))))
117+
(let ((nn (+ 0.75 (* -1.27 work))))
118+
(let ((lp (+ lpr cc)))
119+
(let ((den (- nn (* 0.14 lp))))
120+
(let ((f1 (/ lp den)))
121+
(let ((lgf (/ work (+ 1 (* f1 f1)))))
122+
(pow 10.0 lgf))))))))))

infra/nightly.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export PATH="$PATH:$HOME/.cargo/bin/"
88

99
# Seed is fixed for the whole day; this way two branches run the same seed
1010
SEED=$(date "+%Y%j")
11-
BENCHDIR="bench/growlibm-helmholtz.fpcore"
11+
BENCHDIR="bench/growlibm-falloff_hard.fpcore"
1212
REPORTDIR="reports"
1313
NUMITERS=10
1414

0 commit comments

Comments
 (0)