Skip to content

Commit 5b0d655

Browse files
committed
Changed sinNPhiCosNPhi
1 parent da111ba commit 5b0d655

File tree

4 files changed

+61
-3
lines changed

4 files changed

+61
-3
lines changed

tlm3_dihedral/Dihed.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,26 @@ void sinNPhiCosNPhi(int n, float* sinNPhi, float* cosNPhi,
2222
return;
2323
}
2424

25+
template <int N>
26+
struct SinCos {
27+
static void sinNPhiCosNPhi(double& sinNPhi, double& cosNPhi,
28+
double sinPhi, double cosPhi ) {
29+
float sinNm1Phi;
30+
float cosNm1Phi;
31+
sinNPhiCosNPhi<N-1>(sinNm1Phi,cosNm1Phi,sinPhi,cosPhi);
32+
sinNPhi = cosPhi*sinNm1Phi+sinPhi*cosNm1Phi;
33+
cosNPhi = cosPhi*cosNm1Phi-sinPhi*sinNm1Phi;
34+
}
35+
};
36+
37+
template <>
38+
struct SinCos<1> {
39+
static void sinNPhiCosNPhi(double& sinNPhi, double& cosNPhi,
40+
double sinPhi, double cosPhi ) {
41+
sinNPhi = sinPhi;
42+
cosNPhi = cosPhi;
43+
}
44+
};
2545

2646
int enzyme_dup;
2747
int enzyme_out;

tlm3_dihedral/_DihedralEnergy_termCode.cc

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,26 @@
100100
CosPhi=MAX(-1.0,MIN(1.0,CosPhi));
101101
/*CosNPhi = mathCosNPhi[IN,SinPhi,CosPhi];*/
102102
/*SinNPhi = mathSinNPhi[IN,SinPhi,CosPhi];*/
103-
sinNPhiCosNPhi(IN, &SinNPhi, &CosNPhi, SinPhi, CosPhi);
103+
switch(IN) {
104+
case 1:
105+
SinCos<1>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
106+
break;
107+
case 2:
108+
SinCos<2>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
109+
break;
110+
case 3:
111+
SinCos<3>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
112+
break;
113+
case 4:
114+
SinCos<4>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
115+
break;
116+
case 5:
117+
SinCos<5>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
118+
break;
119+
case 6:
120+
SinCos<6>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
121+
break;
122+
};
104123
tx135 = CosNPhi*cosPhase; /* rule 103 */
105124
tx136 = SinNPhi*sinPhase; /* rule 104 */
106125
DihedralDeviation = 1. + tx135 + tx136; /* rule 105 */

tlm3_dihedral/_Dihedral_termCode.cc

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,26 @@
100100
CosPhi=MAX(-1.0,MIN(1.0,CosPhi));
101101
/*CosNPhi = mathCosNPhi[IN,SinPhi,CosPhi];*/
102102
/*SinNPhi = mathSinNPhi[IN,SinPhi,CosPhi];*/
103-
sinNPhiCosNPhi(IN, &SinNPhi, &CosNPhi, SinPhi, CosPhi);
103+
switch(IN) {
104+
case 1:
105+
SinCos<1>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
106+
break;
107+
case 2:
108+
SinCos<2>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
109+
break;
110+
case 3:
111+
SinCos<3>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
112+
break;
113+
case 4:
114+
SinCos<4>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
115+
break;
116+
case 5:
117+
SinCos<5>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
118+
break;
119+
case 6:
120+
SinCos<6>::sinNPhiCosNPhi(SinNPhi,CosNPhi,SinPhi,CosPhi);
121+
break;
122+
};
104123
tx973 = CosNPhi*cosPhase; /* rule 103 */
105124
tx974 = SinNPhi*sinPhase; /* rule 104 */
106125
DihedralDeviation = 1. + tx973 + tx974; /* rule 105 */

tlm3_dihedral/makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ all-Dihed: cmp-Dihed ad-Dihed opt-Dihed lower-Dihed
55
echo done
66

77
cmp-Dihed:
8-
clang-15 Dihed.cc -S -emit-llvm -o Dihed-cmp.ll -O2 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops
8+
clang Dihed.cc -S -emit-llvm -o Dihed-cmp.ll -O2 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops
99

1010
ad-Dihed:
1111
opt-15 Dihed-cmp.ll -enable-new-pm=0 -load=$(ENZYME_so) --enzyme -o Dihed-ad.ll -S

0 commit comments

Comments
 (0)