File: | src/ten/tenGage.c |
Location: | line 1746, column 9 |
Description: | Value stored to 'axis' is never read |
1 | /* |
2 | Teem: Tools to process and visualize scientific data and images . |
3 | Copyright (C) 2013, 2012, 2011, 2010, 2009 University of Chicago |
4 | Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann |
5 | Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah |
6 | |
7 | This library is free software; you can redistribute it and/or |
8 | modify it under the terms of the GNU Lesser General Public License |
9 | (LGPL) as published by the Free Software Foundation; either |
10 | version 2.1 of the License, or (at your option) any later version. |
11 | The terms of redistributing and/or modifying this software also |
12 | include exceptions to the LGPL that facilitate static linking. |
13 | |
14 | This library is distributed in the hope that it will be useful, |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 | Lesser General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Lesser General Public License |
20 | along with this library; if not, write to Free Software Foundation, Inc., |
21 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
22 | */ |
23 | |
24 | #include "ten.h" |
25 | #include "privateTen.h" |
26 | |
27 | typedef struct { |
28 | double *buffTen, *buffWght; |
29 | tenInterpParm *tip; /* sneakiness: using tip->allocLen to record |
30 | allocation sizes of buffTen and buffWght, too */ |
31 | } _tenGagePvlData; |
32 | |
33 | gageItemEntry |
34 | _tenGageTable[TEN_GAGE_ITEM_MAX207+1] = { |
35 | /* enum value len,deriv, prereqs, parent item, parent index, needData */ |
36 | {tenGageUnknown, 0, 0, {0}, 0, 0, AIR_FALSE0}, |
37 | {tenGageTensor, 7, 0, {0}, 0, 0, AIR_FALSE0}, |
38 | {tenGageConfidence, 1, 0, {tenGageTensor}, tenGageTensor, 0, AIR_FALSE0}, |
39 | |
40 | {tenGageTrace, 1, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
41 | {tenGageNorm, 1, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
42 | {tenGageB, 1, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
43 | {tenGageDet, 1, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
44 | {tenGageS, 1, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
45 | {tenGageQ, 1, 0, {tenGageS, tenGageB}, 0, 0, AIR_FALSE0}, |
46 | {tenGageFA, 1, 0, {tenGageQ, tenGageS}, 0, 0, AIR_FALSE0}, |
47 | {tenGageR, 1, 0, {tenGageTrace, tenGageB, tenGageDet, tenGageS}, 0, 0, AIR_FALSE0}, |
48 | {tenGageMode, 1, 0, {tenGageR, tenGageQ}, 0, 0, AIR_FALSE0}, |
49 | {tenGageTheta, 1, 0, {tenGageMode}, 0, 0, AIR_FALSE0}, |
50 | {tenGageModeWarp, 1, 0, {tenGageMode}, 0, 0, AIR_FALSE0}, |
51 | {tenGageOmega, 1, 0, {tenGageFA, tenGageMode}, 0, 0, AIR_FALSE0}, |
52 | |
53 | {tenGageEval, 3, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
54 | {tenGageEval0, 1, 0, {tenGageEval}, tenGageEval, 0, AIR_FALSE0}, |
55 | {tenGageEval1, 1, 0, {tenGageEval}, tenGageEval, 1, AIR_FALSE0}, |
56 | {tenGageEval2, 1, 0, {tenGageEval}, tenGageEval, 2, AIR_FALSE0}, |
57 | {tenGageEvec, 9, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
58 | {tenGageEvec0, 3, 0, {tenGageEvec}, tenGageEvec, 0, AIR_FALSE0}, |
59 | {tenGageEvec1, 3, 0, {tenGageEvec}, tenGageEvec, 3, AIR_FALSE0}, |
60 | {tenGageEvec2, 3, 0, {tenGageEvec}, tenGageEvec, 6, AIR_FALSE0}, |
61 | |
62 | {tenGageDelNormK2, 7, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
63 | {tenGageDelNormK3, 7, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
64 | {tenGageDelNormR1, 7, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
65 | {tenGageDelNormR2, 7, 0, {tenGageTensor}, 0, 0, AIR_FALSE0}, |
66 | |
67 | {tenGageDelNormPhi1, 7, 0, {tenGageEvec}, 0, 0, AIR_FALSE0}, |
68 | {tenGageDelNormPhi2, 7, 0, {tenGageEvec}, 0, 0, AIR_FALSE0}, |
69 | {tenGageDelNormPhi3, 7, 0, {tenGageEvec}, 0, 0, AIR_FALSE0}, |
70 | |
71 | {tenGageTensorGrad, 21, 1, {0}, 0, 0, AIR_FALSE0}, |
72 | {tenGageTensorGradMag, 3, 1, {tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
73 | {tenGageTensorGradMagMag, 1, 1, {tenGageTensorGradMag}, 0, 0, AIR_FALSE0}, |
74 | |
75 | {tenGageTraceGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
76 | {tenGageTraceGradMag, 1, 1, {tenGageTraceGradVec}, 0, 0, AIR_FALSE0}, |
77 | {tenGageTraceNormal, 3, 1, {tenGageTraceGradVec, tenGageTraceGradMag}, 0, 0, AIR_FALSE0}, |
78 | |
79 | {tenGageNormGradVec, 3, 1, {tenGageNorm, tenGageSGradVec}, 0, 0, AIR_FALSE0}, |
80 | {tenGageNormGradMag, 1, 1, {tenGageNormGradVec}, 0, 0, AIR_FALSE0}, |
81 | {tenGageNormNormal, 3, 1, {tenGageNormGradVec, tenGageNormGradMag}, 0, 0, AIR_FALSE0}, |
82 | |
83 | {tenGageBGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
84 | {tenGageBGradMag, 1, 1, {tenGageBGradVec}, 0, 0, AIR_FALSE0}, |
85 | {tenGageBNormal, 3, 1, {tenGageBGradVec, tenGageBGradMag}, 0, 0, AIR_FALSE0}, |
86 | |
87 | {tenGageDetGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
88 | {tenGageDetGradMag, 1, 1, {tenGageDetGradVec}, 0, 0, AIR_FALSE0}, |
89 | {tenGageDetNormal, 3, 1, {tenGageDetGradVec, tenGageDetGradMag}, 0, 0, AIR_FALSE0}, |
90 | |
91 | {tenGageSGradVec, 3, 1, {tenGageTensor, tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
92 | {tenGageSGradMag, 1, 1, {tenGageSGradVec}, 0, 0, AIR_FALSE0}, |
93 | {tenGageSNormal, 3, 1, {tenGageSGradVec, tenGageSGradMag}, 0, 0, AIR_FALSE0}, |
94 | |
95 | {tenGageQGradVec, 3, 1, {tenGageSGradVec, tenGageBGradVec}, 0, 0, AIR_FALSE0}, |
96 | {tenGageQGradMag, 1, 1, {tenGageQGradVec}, 0, 0, AIR_FALSE0}, |
97 | {tenGageQNormal, 3, 1, {tenGageQGradVec, tenGageQGradMag}, 0, 0, AIR_FALSE0}, |
98 | |
99 | {tenGageFAGradVec, 3, 1, {tenGageQGradVec, tenGageSGradVec, tenGageFA}, 0, 0, AIR_FALSE0}, |
100 | {tenGageFAGradMag, 1, 1, {tenGageFAGradVec}, 0, 0, AIR_FALSE0}, |
101 | {tenGageFANormal, 3, 1, {tenGageFAGradVec, tenGageFAGradMag}, 0, 0, AIR_FALSE0}, |
102 | |
103 | {tenGageRGradVec, 3, 1, {tenGageR, tenGageTraceGradVec, tenGageBGradVec, |
104 | tenGageDetGradVec, tenGageSGradVec}, 0, 0, AIR_FALSE0}, |
105 | {tenGageRGradMag, 1, 1, {tenGageRGradVec}, 0, 0, AIR_FALSE0}, |
106 | {tenGageRNormal, 3, 1, {tenGageRGradVec, tenGageRGradMag}, 0, 0, AIR_FALSE0}, |
107 | |
108 | {tenGageModeGradVec, 3, 1, {tenGageRGradVec, tenGageQGradVec, tenGageMode}, 0, 0, AIR_FALSE0}, |
109 | {tenGageModeGradMag, 1, 1, {tenGageModeGradVec}, 0, 0, AIR_FALSE0}, |
110 | {tenGageModeNormal, 3, 1, {tenGageModeGradVec, tenGageModeGradMag}, 0, 0, AIR_FALSE0}, |
111 | |
112 | {tenGageThetaGradVec, 3, 1, {tenGageRGradVec, tenGageQGradVec, tenGageTheta}, 0, 0, AIR_FALSE0}, |
113 | {tenGageThetaGradMag, 1, 1, {tenGageThetaGradVec}, 0, 0, AIR_FALSE0}, |
114 | {tenGageThetaNormal, 3, 1, {tenGageThetaGradVec, tenGageThetaGradMag}, 0, 0, AIR_FALSE0}, |
115 | |
116 | {tenGageOmegaGradVec, 3, 1, {tenGageFA, tenGageMode, tenGageFAGradVec, tenGageModeGradVec}, 0, 0, AIR_FALSE0}, |
117 | {tenGageOmegaGradMag, 1, 1, {tenGageOmegaGradVec}, 0, 0, AIR_FALSE0}, |
118 | {tenGageOmegaNormal, 3, 1, {tenGageOmegaGradVec, tenGageOmegaGradMag}, 0, 0, AIR_FALSE0}, |
119 | |
120 | {tenGageInvarKGrads, 9, 1, {tenGageDelNormK2, tenGageDelNormK3, tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
121 | {tenGageInvarKGradMags, 3, 1, {tenGageInvarKGrads}, 0, 0, AIR_FALSE0}, |
122 | {tenGageInvarRGrads, 9, 1, {tenGageDelNormR1, tenGageDelNormR2, tenGageDelNormK3, |
123 | tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
124 | {tenGageInvarRGradMags, 3, 1, {tenGageInvarRGrads}, 0, 0, AIR_FALSE0}, |
125 | |
126 | {tenGageRotTans, 9, 1, {tenGageDelNormPhi1, tenGageDelNormPhi2, tenGageDelNormPhi3, |
127 | tenGageTensorGrad}, 0, 0, AIR_FALSE0}, |
128 | {tenGageRotTanMags, 3, 1, {tenGageRotTans}, 0, 0, AIR_FALSE0}, |
129 | |
130 | {tenGageEvalGrads, 9, 1, {tenGageTensorGrad, tenGageEval, tenGageEvec}, 0, 0, AIR_FALSE0}, |
131 | |
132 | {tenGageCl1, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
133 | {tenGageCp1, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
134 | {tenGageCa1, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
135 | {tenGageClpmin1, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
136 | {tenGageCl2, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
137 | {tenGageCp2, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
138 | {tenGageCa2, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
139 | {tenGageClpmin2, 1, 0, {tenGageTensor, tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0}, |
140 | |
141 | {tenGageHessian, 63, 2, {0}, 0, 0, AIR_FALSE0}, |
142 | {tenGageTraceHessian, 9, 2, {tenGageHessian}, 0, 0, AIR_FALSE0}, |
143 | {tenGageTraceHessianEval, 3, 2, {tenGageTraceHessian}, 0, 0, AIR_FALSE0}, |
144 | {tenGageTraceHessianEval0, 1, 2, {tenGageTraceHessianEval}, tenGageTraceHessianEval, 0, AIR_FALSE0}, |
145 | {tenGageTraceHessianEval1, 1, 2, {tenGageTraceHessianEval}, tenGageTraceHessianEval, 1, AIR_FALSE0}, |
146 | {tenGageTraceHessianEval2, 1, 2, {tenGageTraceHessianEval}, tenGageTraceHessianEval, 2, AIR_FALSE0}, |
147 | {tenGageTraceHessianEvec, 9, 2, {tenGageTraceHessian}, 0, 0, AIR_FALSE0}, |
148 | {tenGageTraceHessianEvec0, 3, 2, {tenGageTraceHessianEvec}, tenGageTraceHessianEvec, 0, AIR_FALSE0}, |
149 | {tenGageTraceHessianEvec1, 3, 2, {tenGageTraceHessianEvec}, tenGageTraceHessianEvec, 3, AIR_FALSE0}, |
150 | {tenGageTraceHessianEvec2, 3, 2, {tenGageTraceHessianEvec}, tenGageTraceHessianEvec, 6, AIR_FALSE0}, |
151 | {tenGageTraceHessianFrob, 1, 2, {tenGageTraceHessian}, 0, 0, AIR_FALSE0}, |
152 | {tenGageBHessian, 9, 2, {tenGageTensor, tenGageTensorGrad, tenGageHessian}, 0, 0, AIR_FALSE0}, |
153 | {tenGageDetHessian, 9, 2, {tenGageTensor, tenGageTensorGrad, tenGageHessian}, 0, 0, AIR_FALSE0}, |
154 | {tenGageSHessian, 9, 2, {tenGageTensor, tenGageTensorGrad, tenGageHessian}, 0, 0, AIR_FALSE0}, |
155 | {tenGageQHessian, 9, 2, {tenGageBHessian, tenGageSHessian}, 0, 0, AIR_FALSE0}, |
156 | |
157 | {tenGageFAHessian, 9, 2, {tenGageSHessian, tenGageQHessian, |
158 | tenGageSGradVec, tenGageQGradVec, tenGageFA}, 0, 0, AIR_FALSE0}, |
159 | {tenGageFAHessianEval, 3, 2, {tenGageFAHessian}, 0, 0, AIR_FALSE0}, |
160 | {tenGageFAHessianEval0, 1, 2, {tenGageFAHessianEval}, tenGageFAHessianEval, 0, AIR_FALSE0}, |
161 | {tenGageFAHessianEval1, 1, 2, {tenGageFAHessianEval}, tenGageFAHessianEval, 1, AIR_FALSE0}, |
162 | {tenGageFAHessianEval2, 1, 2, {tenGageFAHessianEval}, tenGageFAHessianEval, 2, AIR_FALSE0}, |
163 | {tenGageFAHessianEvec, 9, 2, {tenGageFAHessian}, 0, 0, AIR_FALSE0}, |
164 | {tenGageFAHessianEvec0, 3, 2, {tenGageFAHessianEvec}, tenGageFAHessianEvec, 0, AIR_FALSE0}, |
165 | {tenGageFAHessianEvec1, 3, 2, {tenGageFAHessianEvec}, tenGageFAHessianEvec, 3, AIR_FALSE0}, |
166 | {tenGageFAHessianEvec2, 3, 2, {tenGageFAHessianEvec}, tenGageFAHessianEvec, 6, AIR_FALSE0}, |
167 | {tenGageFAHessianFrob, 1, 2, {tenGageFAHessian}, 0, 0, AIR_FALSE0}, |
168 | {tenGageFARidgeSurfaceStrength, 1, 2, {tenGageConfidence, tenGageFAHessianEval}, 0, 0, AIR_FALSE0}, |
169 | {tenGageFAValleySurfaceStrength, 1, 2, {tenGageConfidence, tenGageFAHessianEval}, 0, 0, AIR_FALSE0}, |
170 | {tenGageFALaplacian, 1, 2, {tenGageFAHessian}, 0, 0, AIR_FALSE0}, |
171 | {tenGageFAHessianEvalMode, 1, 2, {tenGageFAHessianEval}, 0, 0, AIR_FALSE0}, |
172 | {tenGageFARidgeLineAlignment, 1, 2, {tenGageEvec0, tenGageFAHessianEvec0, tenGageFAHessianEvalMode}, 0, 0, AIR_FALSE0}, |
173 | {tenGageFARidgeSurfaceAlignment, 1, 2, {tenGageEvec0, tenGageFAHessianEvec2, tenGageFAHessianEvalMode}, 0, 0, AIR_FALSE0}, |
174 | {tenGageFA2ndDD, 1, 2, {tenGageFAHessian, tenGageFANormal}, 0, 0, AIR_FALSE0}, |
175 | |
176 | {tenGageFAGeomTens, 9, 2, {tenGageFAHessian, tenGageFAGradMag, tenGageFANormal}, 0, 0, AIR_FALSE0}, |
177 | {tenGageFAKappa1, 1, 2, {tenGageFAGeomTens}, 0, 0, AIR_FALSE0}, |
178 | {tenGageFAKappa2, 1, 2, {tenGageFAGeomTens}, 0, 0, AIR_FALSE0}, |
179 | {tenGageFATotalCurv, 1, 2, {tenGageFAGeomTens}, 0, 0, AIR_FALSE0}, |
180 | {tenGageFAShapeIndex, 1, 2, {tenGageFAKappa1, tenGageFAKappa2}, 0, 0, AIR_FALSE0}, |
181 | {tenGageFAMeanCurv, 1, 2, {tenGageFAKappa1, tenGageFAKappa2}, 0, 0, AIR_FALSE0}, |
182 | {tenGageFAGaussCurv, 1, 2, {tenGageFAKappa1, tenGageFAKappa2}, 0, 0, AIR_FALSE0}, |
183 | {tenGageFACurvDir1, 3, 2, {tenGageFAGeomTens, tenGageFAKappa2}, 0, 0, AIR_FALSE0}, |
184 | {tenGageFACurvDir2, 3, 2, {tenGageFAGeomTens, tenGageFAKappa1}, 0, 0, AIR_FALSE0}, |
185 | {tenGageFAFlowlineCurv, 1, 2, {tenGageFANormal, tenGageFAHessian, tenGageFAGradMag}, 0, 0, AIR_FALSE0}, |
186 | |
187 | {tenGageRHessian, 9, 2, {tenGageR, tenGageRGradVec, tenGageTraceHessian, |
188 | tenGageBHessian, tenGageDetHessian, tenGageSHessian}, 0, 0, AIR_FALSE0}, |
189 | |
190 | {tenGageModeHessian, 9, 2, {tenGageR, tenGageQ, tenGageRGradVec, tenGageQGradVec, |
191 | tenGageRHessian, tenGageQHessian}, 0, 0, AIR_FALSE0}, |
192 | {tenGageModeHessianEval, 3, 2, {tenGageModeHessian}, 0, 0, AIR_FALSE0}, |
193 | {tenGageModeHessianEval0, 1, 2, {tenGageModeHessianEval}, tenGageModeHessianEval, 0, AIR_FALSE0}, |
194 | {tenGageModeHessianEval1, 1, 2, {tenGageModeHessianEval}, tenGageModeHessianEval, 1, AIR_FALSE0}, |
195 | {tenGageModeHessianEval2, 1, 2, {tenGageModeHessianEval}, tenGageModeHessianEval, 2, AIR_FALSE0}, |
196 | {tenGageModeHessianEvec, 9, 2, {tenGageModeHessian}, 0, 0, AIR_FALSE0}, |
197 | {tenGageModeHessianEvec0, 3, 2, {tenGageModeHessianEvec}, tenGageModeHessianEvec, 0, AIR_FALSE0}, |
198 | {tenGageModeHessianEvec1, 3, 2, {tenGageModeHessianEvec}, tenGageModeHessianEvec, 3, AIR_FALSE0}, |
199 | {tenGageModeHessianEvec2, 3, 2, {tenGageModeHessianEvec}, tenGageModeHessianEvec, 6, AIR_FALSE0}, |
200 | {tenGageModeHessianFrob, 1, 2, {tenGageModeHessian}, 0, 0, AIR_FALSE0}, |
201 | |
202 | {tenGageOmegaHessian, 9, 2, {tenGageFA, tenGageMode, tenGageFAGradVec, tenGageModeGradVec, |
203 | tenGageFAHessian, tenGageModeHessian}, 0, 0, AIR_FALSE0}, |
204 | {tenGageOmegaHessianEval, 3, 2, {tenGageOmegaHessian}, 0, 0, AIR_FALSE0}, |
205 | {tenGageOmegaHessianEval0, 1, 2, {tenGageOmegaHessianEval}, tenGageOmegaHessianEval, 0, AIR_FALSE0}, |
206 | {tenGageOmegaHessianEval1, 1, 2, {tenGageOmegaHessianEval}, tenGageOmegaHessianEval, 1, AIR_FALSE0}, |
207 | {tenGageOmegaHessianEval2, 1, 2, {tenGageOmegaHessianEval}, tenGageOmegaHessianEval, 2, AIR_FALSE0}, |
208 | {tenGageOmegaHessianEvec, 9, 2, {tenGageOmegaHessian}, 0, 0, AIR_FALSE0}, |
209 | {tenGageOmegaHessianEvec0, 3, 2, {tenGageOmegaHessianEvec}, tenGageOmegaHessianEvec, 0, AIR_FALSE0}, |
210 | {tenGageOmegaHessianEvec1, 3, 2, {tenGageOmegaHessianEvec}, tenGageOmegaHessianEvec, 3, AIR_FALSE0}, |
211 | {tenGageOmegaHessianEvec2, 3, 2, {tenGageOmegaHessianEvec}, tenGageOmegaHessianEvec, 6, AIR_FALSE0}, |
212 | {tenGageOmegaLaplacian, 1, 2, {tenGageOmegaHessian}, 0, 0, AIR_FALSE0}, |
213 | {tenGageOmega2ndDD, 1, 2, {tenGageOmegaHessian, tenGageOmegaNormal}, 0, 0, AIR_FALSE0}, |
214 | |
215 | {tenGageOmegaHessianContrTenEvec0, 1, 2, {tenGageOmegaHessian, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
216 | {tenGageOmegaHessianContrTenEvec1, 1, 2, {tenGageOmegaHessian, tenGageEvec1}, 0, 0, AIR_FALSE0}, |
217 | {tenGageOmegaHessianContrTenEvec2, 1, 2, {tenGageOmegaHessian, tenGageEvec2}, 0, 0, AIR_FALSE0}, |
218 | |
219 | {tenGageTraceGradVecDotEvec0, 1, 1, {tenGageTraceGradVec, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
220 | {tenGageTraceDiffusionAlign, 1, 1, {tenGageTraceNormal, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
221 | {tenGageTraceDiffusionFraction, 1, 1, {tenGageTraceNormal, tenGageTensor}, 0, 0, AIR_FALSE0}, |
222 | |
223 | {tenGageFAGradVecDotEvec0, 1, 1, {tenGageFAGradVec, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
224 | {tenGageFADiffusionAlign, 1, 1, {tenGageFANormal, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
225 | {tenGageFADiffusionFraction, 1, 1, {tenGageFANormal, tenGageTensor}, 0, 0, AIR_FALSE0}, |
226 | |
227 | {tenGageOmegaGradVecDotEvec0, 1, 1, {tenGageOmegaGradVec, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
228 | {tenGageOmegaDiffusionAlign, 1, 1, {tenGageOmegaNormal, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
229 | {tenGageOmegaDiffusionFraction, 1, 1, {tenGageOmegaNormal, tenGageTensor}, 0, 0, AIR_FALSE0}, |
230 | |
231 | /* currently don't have tenGageConfGradVec */ |
232 | {tenGageConfGradVecDotEvec0, 1, 1, {tenGageTensorGrad, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
233 | {tenGageConfDiffusionAlign, 1, 1, {tenGageTensorGrad, tenGageEvec0}, 0, 0, AIR_FALSE0}, |
234 | {tenGageConfDiffusionFraction, 1, 1, {tenGageTensorGrad, tenGageTensor}, 0, 0, AIR_FALSE0}, |
235 | |
236 | {tenGageCovariance, 21, 0, {tenGageTensor}, /* and all the values in iv3 */ 0, 0, AIR_FALSE0}, |
237 | {tenGageCovarianceRGRT, 21, 0, {tenGageCovariance, |
238 | tenGageDelNormR1, tenGageDelNormR2, tenGageDelNormK3, |
239 | tenGageDelNormPhi1, tenGageDelNormPhi2, tenGageDelNormPhi3}, 0, 0, AIR_FALSE0}, |
240 | {tenGageCovarianceKGRT, 21, 0, {tenGageCovariance, |
241 | tenGageDelNormK2, tenGageDelNormK3, |
242 | tenGageDelNormPhi1, tenGageDelNormPhi2, tenGageDelNormPhi3}, 0, 0, AIR_FALSE0}, |
243 | |
244 | {tenGageTensorLogEuclidean, 7, 0, {0}, 0, 0, AIR_FALSE0}, |
245 | {tenGageTensorQuatGeoLoxK, 7, 0, {0}, 0, 0, AIR_FALSE0}, |
246 | {tenGageTensorQuatGeoLoxR, 7, 0, {0}, 0, 0, AIR_FALSE0}, |
247 | {tenGageTensorRThetaPhiLinear, 7, 0, {0}, 0, 0, AIR_FALSE0}, |
248 | {tenGageCl1GradVec, 3, 1, {tenGageTrace, tenGageEval, tenGageEvalGrads}, 0, 0, AIR_FALSE0}, |
249 | {tenGageCl1GradMag, 1, 1, {tenGageCl1GradVec}, 0, 0, AIR_FALSE0}, |
250 | {tenGageCl1Normal, 3, 1, {tenGageCl1GradVec, tenGageCl1GradMag}, 0, 0, AIR_FALSE0}, |
251 | {tenGageCp1GradVec, 3, 1, {tenGageTrace, tenGageEval, tenGageEvalGrads}, 0, 0, AIR_FALSE0}, |
252 | {tenGageCp1GradMag, 1, 1, {tenGageCp1GradVec}, 0, 0, AIR_FALSE0}, |
253 | {tenGageCp1Normal, 3, 1, {tenGageCp1GradVec, tenGageCp1GradMag}, 0, 0, AIR_FALSE0}, |
254 | {tenGageCa1GradVec, 3, 1, {tenGageTrace, tenGageEval, tenGageEvalGrads}, 0, 0, AIR_FALSE0}, |
255 | {tenGageCa1GradMag, 1, 1, {tenGageCa1GradVec}, 0, 0, AIR_FALSE0}, |
256 | {tenGageCa1Normal, 3, 1, {tenGageCa1GradVec, tenGageCa1GradMag}, 0, 0, AIR_FALSE0}, |
257 | {tenGageTensorGradRotE, 21, 1, {tenGageTensorGrad, tenGageEval, tenGageEvec}, 0, 0, AIR_FALSE0}, |
258 | {tenGageEvalHessian, 27, 2, {tenGageTensorGradRotE, tenGageHessian, tenGageEval}, 0, 0, AIR_FALSE0 }, |
259 | {tenGageCl1Hessian, 9, 2, {tenGageTensorGradRotE, tenGageEvalHessian}, 0, 0, AIR_FALSE0 }, |
260 | {tenGageCl1HessianEval, 3, 2, {tenGageCl1Hessian}, 0, 0, AIR_FALSE0 }, |
261 | {tenGageCl1HessianEval0, 1, 2, {tenGageCl1HessianEval}, tenGageCl1HessianEval, 0, AIR_FALSE0}, |
262 | {tenGageCl1HessianEval1, 1, 2, {tenGageCl1HessianEval}, tenGageCl1HessianEval, 1, AIR_FALSE0}, |
263 | {tenGageCl1HessianEval2, 1, 2, {tenGageCl1HessianEval}, tenGageCl1HessianEval, 2, AIR_FALSE0}, |
264 | {tenGageCl1HessianEvec, 9, 2, {tenGageCl1Hessian}, 0, 0, AIR_FALSE0 }, |
265 | {tenGageCl1HessianEvec0, 3, 2, {tenGageCl1HessianEvec}, tenGageCl1HessianEvec, 0, AIR_FALSE0}, |
266 | {tenGageCl1HessianEvec1, 3, 2, {tenGageCl1HessianEvec}, tenGageCl1HessianEvec, 3, AIR_FALSE0}, |
267 | {tenGageCl1HessianEvec2, 3, 2, {tenGageCl1HessianEvec}, tenGageCl1HessianEvec, 6, AIR_FALSE0}, |
268 | {tenGageCp1Hessian, 9, 2, {tenGageTensorGradRotE, tenGageEvalHessian}, 0, 0, AIR_FALSE0 }, |
269 | {tenGageCp1HessianEval, 3, 2, {tenGageCp1Hessian}, 0, 0, AIR_FALSE0 }, |
270 | {tenGageCp1HessianEval0, 1, 2, {tenGageCp1HessianEval}, tenGageCp1HessianEval, 0, AIR_FALSE0}, |
271 | {tenGageCp1HessianEval1, 1, 2, {tenGageCp1HessianEval}, tenGageCp1HessianEval, 1, AIR_FALSE0}, |
272 | {tenGageCp1HessianEval2, 1, 2, {tenGageCp1HessianEval}, tenGageCp1HessianEval, 2, AIR_FALSE0}, |
273 | {tenGageCp1HessianEvec, 9, 2, {tenGageCp1Hessian}, 0, 0, AIR_FALSE0 }, |
274 | {tenGageCp1HessianEvec0, 3, 2, {tenGageCp1HessianEvec}, tenGageCp1HessianEvec, 0, AIR_FALSE0}, |
275 | {tenGageCp1HessianEvec1, 3, 2, {tenGageCp1HessianEvec}, tenGageCp1HessianEvec, 3, AIR_FALSE0}, |
276 | {tenGageCp1HessianEvec2, 3, 2, {tenGageCp1HessianEvec}, tenGageCp1HessianEvec, 6, AIR_FALSE0}, |
277 | {tenGageCa1Hessian, 9, 2, {tenGageTensorGradRotE, tenGageEvalHessian}, 0, 0, AIR_FALSE0 }, |
278 | {tenGageCa1HessianEval, 3, 2, {tenGageCa1Hessian}, 0, 0, AIR_FALSE0 }, |
279 | {tenGageCa1HessianEval0, 1, 2, {tenGageCa1HessianEval}, tenGageCa1HessianEval, 0, AIR_FALSE0}, |
280 | {tenGageCa1HessianEval1, 1, 2, {tenGageCa1HessianEval}, tenGageCa1HessianEval, 1, AIR_FALSE0}, |
281 | {tenGageCa1HessianEval2, 1, 2, {tenGageCa1HessianEval}, tenGageCa1HessianEval, 2, AIR_FALSE0}, |
282 | {tenGageCa1HessianEvec, 9, 2, {tenGageCa1Hessian}, 0, 0, AIR_FALSE0 }, |
283 | {tenGageCa1HessianEvec0, 3, 2, {tenGageCa1HessianEvec}, tenGageCa1HessianEvec, 0, AIR_FALSE0}, |
284 | {tenGageCa1HessianEvec1, 3, 2, {tenGageCa1HessianEvec}, tenGageCa1HessianEvec, 3, AIR_FALSE0}, |
285 | {tenGageCa1HessianEvec2, 3, 2, {tenGageCa1HessianEvec}, tenGageCa1HessianEvec, 6, AIR_FALSE0}, |
286 | {tenGageFiberCurving, 1, 1, {tenGageRotTans, tenGageEvec}, 0, 0, AIR_FALSE0 }, |
287 | {tenGageFiberDispersion, 1, 1, {tenGageRotTans, tenGageEvec}, 0, 0, AIR_FALSE0 }, |
288 | {tenGageAniso, TEN_ANISO_MAX29+1, 0, {tenGageEval0, tenGageEval1, tenGageEval2}, 0, 0, AIR_FALSE0} |
289 | }; |
290 | |
291 | void |
292 | _tenGageIv3Print(FILE *file, gageContext *ctx, gagePerVolume *pvl) { |
293 | double *iv3; |
294 | int i, fd; |
295 | |
296 | fd = 2*ctx->radius; |
297 | iv3 = pvl->iv3 + fd*fd*fd; |
298 | fprintf(file, "iv3[]'s *Dxx* component:\n"); |
299 | switch(fd) { |
300 | case 2: |
301 | fprintf(file, "% 10.4f % 10.4f\n", (float)iv3[6], (float)iv3[7]); |
302 | fprintf(file, " % 10.4f % 10.4f\n\n", (float)iv3[4], (float)iv3[5]); |
303 | fprintf(file, "% 10.4f % 10.4f\n", (float)iv3[2], (float)iv3[3]); |
304 | fprintf(file, " % 10.4f % 10.4f\n", (float)iv3[0], (float)iv3[1]); |
305 | break; |
306 | case 4: |
307 | for (i=3; i>=0; i--) { |
308 | fprintf(file, "% 10.4f % 10.4f % 10.4f % 10.4f\n", |
309 | (float)iv3[12+16*i], (float)iv3[13+16*i], |
310 | (float)iv3[14+16*i], (float)iv3[15+16*i]); |
311 | fprintf(file, " % 10.4f %c% 10.4f % 10.4f%c % 10.4f\n", |
312 | (float)iv3[ 8+16*i], (i==1||i==2)?'\\':' ', |
313 | (float)iv3[ 9+16*i], (float)iv3[10+16*i], (i==1||i==2)?'\\':' ', |
314 | (float)iv3[11+16*i]); |
315 | fprintf(file, " % 10.4f %c% 10.4f % 10.4f%c % 10.4f\n", |
316 | (float)iv3[ 4+16*i], (i==1||i==2)?'\\':' ', |
317 | (float)iv3[ 5+16*i], (float)iv3[ 6+16*i], (i==1||i==2)?'\\':' ', |
318 | (float)iv3[ 7+16*i]); |
319 | fprintf(file, " % 10.4f % 10.4f % 10.4f % 10.4f\n", |
320 | (float)iv3[ 0+16*i], (float)iv3[ 1+16*i], |
321 | (float)iv3[ 2+16*i], (float)iv3[ 3+16*i]); |
322 | if (i) fprintf(file, "\n"); |
323 | } |
324 | break; |
325 | default: |
326 | for (i=0; i<fd*fd*fd; i++) { |
327 | fprintf(file, " iv3[% 3d,% 3d,% 3d] = % 10.4f\n", |
328 | i%fd, (i/fd)%fd, i/(fd*fd), (float)iv3[i]); |
329 | } |
330 | break; |
331 | } |
332 | return; |
333 | } |
334 | |
335 | void |
336 | _tenGageFilter(gageContext *ctx, gagePerVolume *pvl) { |
337 | char me[]="_tenGageFilter"; |
338 | double *fw00, *fw11, *fw22, *ten, *tgrad, *thess; |
339 | int fd; |
340 | gageScl3PFilter_t *filter[5] = {NULL((void*)0), gageScl3PFilter2, gageScl3PFilter4, |
341 | gageScl3PFilter6, gageScl3PFilter8}; |
342 | unsigned int valIdx; |
343 | |
344 | fd = 2*ctx->radius; |
345 | ten = pvl->directAnswer[tenGageTensor]; |
346 | tgrad = pvl->directAnswer[tenGageTensorGrad]; |
347 | thess = pvl->directAnswer[tenGageHessian]; |
348 | if (!ctx->parm.k3pack) { |
349 | fprintf(stderr__stderrp, "!%s: sorry, 6pack filtering not implemented\n", me); |
350 | return; |
351 | } |
352 | fw00 = ctx->fw + fd*3*gageKernel00; |
353 | fw11 = ctx->fw + fd*3*gageKernel11; |
354 | fw22 = ctx->fw + fd*3*gageKernel22; |
355 | /* perform the filtering */ |
356 | /* HEY: we still want trilinear interpolation of confidence, no? */ |
357 | if (fd <= 8) { |
358 | for (valIdx=0; valIdx<7; valIdx++) { |
359 | filter[ctx->radius](ctx->shape, |
360 | pvl->iv3 + valIdx*fd*fd*fd, |
361 | pvl->iv2 + valIdx*fd*fd, |
362 | pvl->iv1 + valIdx*fd, |
363 | fw00, fw11, fw22, |
364 | ten + valIdx, tgrad + valIdx*3, thess + valIdx*9, |
365 | pvl->needD); |
366 | } |
367 | } else { |
368 | for (valIdx=0; valIdx<7; valIdx++) { |
369 | gageScl3PFilterN(ctx->shape, fd, |
370 | pvl->iv3 + valIdx*fd*fd*fd, |
371 | pvl->iv2 + valIdx*fd*fd, |
372 | pvl->iv1 + valIdx*fd, |
373 | fw00, fw11, fw22, |
374 | ten + valIdx, tgrad + valIdx*3, thess + valIdx*9, |
375 | pvl->needD); |
376 | } |
377 | } |
378 | |
379 | return; |
380 | } |
381 | |
382 | void |
383 | _tenGageAnswer(gageContext *ctx, gagePerVolume *pvl) { |
384 | char me[]="_tenGageAnswer"; |
385 | double *tenAns, *evalAns, *evecAns, *vecTmp=NULL((void*)0), *matTmp=NULL((void*)0), |
386 | *gradDtA=NULL((void*)0), *gradDtB=NULL((void*)0), *gradDtC=NULL((void*)0), |
387 | *gradDtD=NULL((void*)0), *gradDtE=NULL((void*)0), *gradDtF=NULL((void*)0), |
388 | *hessDtA=NULL((void*)0), *hessDtB=NULL((void*)0), *hessDtC=NULL((void*)0), |
389 | *hessDtD=NULL((void*)0), *hessDtE=NULL((void*)0), *hessDtF=NULL((void*)0), |
390 | *gradCbS=NULL((void*)0), *gradCbB=NULL((void*)0), *gradCbQ=NULL((void*)0), *gradCbR=NULL((void*)0), |
391 | *hessCbS=NULL((void*)0), *hessCbB=NULL((void*)0), *hessCbQ=NULL((void*)0), *hessCbR=NULL((void*)0), |
392 | gradDdXYZ[21]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; |
393 | double tmp0, tmp1, tmp3, magTmp=0, |
394 | dtA=0, dtB=0, dtC=0, dtD=0, dtE=0, dtF=0, |
395 | cbQ=0, cbR=0, cbA=0, cbB=0, cbC=0, cbS=0, |
396 | gradCbA[3]={0,0,0}, gradCbC[3]={0,0,0}; |
397 | double hessCbA[9]={0,0,0,0,0,0,0,0,0}, |
398 | hessCbC[9]={0,0,0,0,0,0,0,0,0}; |
399 | int ci; |
400 | |
401 | tenAns = pvl->directAnswer[tenGageTensor]; |
402 | evalAns = pvl->directAnswer[tenGageEval]; |
403 | evecAns = pvl->directAnswer[tenGageEvec]; |
404 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensor)(pvl->query[tenGageTensor/8] & (1 << (tenGageTensor % 8)))) { |
405 | /* done if doV */ |
406 | /* HEY: this was prohibiting a Deft-related hack |
407 | tenAns[0] = AIR_CLAMP(0, tenAns[0], 1); |
408 | */ |
409 | /* HEY: and this was botching using 1-conf as potential energy for push |
410 | tenAns[0] = AIR_MAX(0, tenAns[0]); |
411 | */ |
412 | dtA = tenAns[1]; |
413 | dtB = tenAns[2]; |
414 | dtC = tenAns[3]; |
415 | dtD = tenAns[4]; |
416 | dtE = tenAns[5]; |
417 | dtF = tenAns[6]; |
418 | if (ctx->verbose) { |
419 | fprintf(stderr__stderrp, "!%s: tensor = (%g) %g %g %g %g %g %g\n", me, |
420 | tenAns[0], dtA, dtB, dtC, dtD, dtE, dtF); |
421 | } |
422 | } |
423 | /* done if doV |
424 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageConfidence)) { |
425 | } |
426 | */ |
427 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTrace)(pvl->query[tenGageTrace/8] & (1 << (tenGageTrace % 8)))) { |
428 | cbA = -(pvl->directAnswer[tenGageTrace][0] = dtA + dtD + dtF); |
429 | } |
430 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageNorm)(pvl->query[tenGageNorm/8] & (1 << (tenGageNorm % 8)))) { |
431 | pvl->directAnswer[tenGageNorm][0] = |
432 | sqrt(dtA*dtA + dtD*dtD + dtF*dtF + 2*dtB*dtB + 2*dtC*dtC + 2*dtE*dtE); |
433 | } |
434 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageB)(pvl->query[tenGageB/8] & (1 << (tenGageB % 8)))) { |
435 | cbB = pvl->directAnswer[tenGageB][0] = |
436 | dtA*dtD + dtA*dtF + dtD*dtF - dtB*dtB - dtC*dtC - dtE*dtE; |
437 | } |
438 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDet)(pvl->query[tenGageDet/8] & (1 << (tenGageDet % 8 )))) { |
439 | cbC = -(pvl->directAnswer[tenGageDet][0] = |
440 | 2*dtB*dtC*dtE + dtA*dtD*dtF |
441 | - dtC*dtC*dtD - dtA*dtE*dtE - dtB*dtB*dtF); |
442 | } |
443 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageS)(pvl->query[tenGageS/8] & (1 << (tenGageS % 8)))) { |
444 | cbS = (pvl->directAnswer[tenGageS][0] = |
445 | dtA*dtA + dtD*dtD + dtF*dtF |
446 | + 2*dtB*dtB + 2*dtC*dtC + 2*dtE*dtE); |
447 | } |
448 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQ)(pvl->query[tenGageQ/8] & (1 << (tenGageQ % 8)))) { |
449 | cbQ = pvl->directAnswer[tenGageQ][0] = (cbS - cbB)/9; |
450 | } |
451 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFA)(pvl->query[tenGageFA/8] & (1 << (tenGageFA % 8) ))) { |
452 | tmp0 = (cbS |
453 | ? cbQ/cbS |
454 | : 0); |
455 | tmp0 = AIR_MAX(0, tmp0)((0) > (tmp0) ? (0) : (tmp0)); |
456 | pvl->directAnswer[tenGageFA][0] = 3*sqrt(tmp0); |
457 | /* |
458 | if (!AIR_EXISTS(pvl->directAnswer[tenGageFA][0])) { |
459 | fprintf(stderr, "!%s: cbS = %g, cbQ = %g, cbQ/(epsilon + cbS) = %g\n" |
460 | "tmp0 = max(0, cbQ/(epsilon + cbS)) = %g\n" |
461 | "sqrt(tmp0) = %g --> %g\n", me, |
462 | cbS, cbQ, cbQ/(epsilon + cbS), |
463 | tmp0, sqrt(tmp0), pvl->directAnswer[tenGageFA][0]); |
464 | } |
465 | */ |
466 | } |
467 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageR)(pvl->query[tenGageR/8] & (1 << (tenGageR % 8)))) { |
468 | cbR = pvl->directAnswer[tenGageR][0] = |
469 | (5*cbA*cbB - 27*cbC - 2*cbA*cbS)/54; |
470 | } |
471 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageMode)(pvl->query[tenGageMode/8] & (1 << (tenGageMode % 8)))) { |
472 | double cbQQQ; |
473 | cbQQQ = 2*AIR_MAX(0, cbQ*cbQ*cbQ)((0) > (cbQ*cbQ*cbQ) ? (0) : (cbQ*cbQ*cbQ)); |
474 | tmp0 = 1.41421356237309504880*(cbQQQ ? cbR/(sqrt(cbQQQ)) : 0); |
475 | pvl->directAnswer[tenGageMode][0] = AIR_CLAMP(-1, tmp0, 1)((tmp0) < (-1) ? (-1) : ((tmp0) > (1) ? (1) : (tmp0))); |
476 | } |
477 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmega)(pvl->query[tenGageOmega/8] & (1 << (tenGageOmega % 8)))) { |
478 | pvl->directAnswer[tenGageOmega][0] = |
479 | pvl->directAnswer[tenGageFA][0]*(1+pvl->directAnswer[tenGageMode][0])/2; |
480 | } |
481 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTheta)(pvl->query[tenGageTheta/8] & (1 << (tenGageTheta % 8)))) { |
482 | pvl->directAnswer[tenGageTheta][0] = |
483 | acos(-pvl->directAnswer[tenGageMode][0])/AIR_PI3.14159265358979323846; |
484 | } |
485 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeWarp)(pvl->query[tenGageModeWarp/8] & (1 << (tenGageModeWarp % 8)))) { |
486 | pvl->directAnswer[tenGageModeWarp][0] = |
487 | cos((1-pvl->directAnswer[tenGageMode][0])*AIR_PI3.14159265358979323846/2); |
488 | } |
489 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEvec)(pvl->query[tenGageEvec/8] & (1 << (tenGageEvec % 8)))) { |
490 | /* we do the longer process to get eigenvectors, and in the process |
491 | we always find the eigenvalues, whether or not they were asked for */ |
492 | tenEigensolve_d(evalAns, evecAns, tenAns); |
493 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEval)(pvl->query[tenGageEval/8] & (1 << (tenGageEval % 8)))) { |
494 | /* else eigenvectors are NOT needed, but eigenvalues ARE needed */ |
495 | tenEigensolve_d(evalAns, NULL((void*)0), tenAns); |
496 | } |
497 | |
498 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormK2)(pvl->query[tenGageDelNormK2/8] & (1 << (tenGageDelNormK2 % 8))) |
499 | || GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormK3)(pvl->query[tenGageDelNormK3/8] & (1 << (tenGageDelNormK3 % 8)))) { |
500 | double tmp[7]; |
501 | tenInvariantGradientsK_d(tmp, |
502 | pvl->directAnswer[tenGageDelNormK2], |
503 | pvl->directAnswer[tenGageDelNormK3], |
504 | tenAns, 0.0000001); |
505 | } |
506 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormR1)(pvl->query[tenGageDelNormR1/8] & (1 << (tenGageDelNormR1 % 8))) |
507 | || GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormR2)(pvl->query[tenGageDelNormR2/8] & (1 << (tenGageDelNormR2 % 8)))) { |
508 | tenInvariantGradientsR_d(pvl->directAnswer[tenGageDelNormR1], |
509 | pvl->directAnswer[tenGageDelNormR2], |
510 | pvl->directAnswer[tenGageDelNormK3], |
511 | tenAns, 0.0000001); |
512 | } |
513 | |
514 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormPhi1)(pvl->query[tenGageDelNormPhi1/8] & (1 << (tenGageDelNormPhi1 % 8))) |
515 | || GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormPhi2)(pvl->query[tenGageDelNormPhi2/8] & (1 << (tenGageDelNormPhi2 % 8))) |
516 | || GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDelNormPhi3)(pvl->query[tenGageDelNormPhi3/8] & (1 << (tenGageDelNormPhi3 % 8)))) { |
517 | tenRotationTangents_d(pvl->directAnswer[tenGageDelNormPhi1], |
518 | pvl->directAnswer[tenGageDelNormPhi2], |
519 | pvl->directAnswer[tenGageDelNormPhi3], |
520 | evecAns); |
521 | } |
522 | |
523 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorGrad)(pvl->query[tenGageTensorGrad/8] & (1 << (tenGageTensorGrad % 8)))) { |
524 | /* done if doD1 */ |
525 | /* still have to set up pointer variables that item answers |
526 | below will rely on as short-cuts */ |
527 | vecTmp = pvl->directAnswer[tenGageTensorGrad]; |
528 | gradDtA = vecTmp + 1*3; |
529 | gradDtB = vecTmp + 2*3; |
530 | gradDtC = vecTmp + 3*3; |
531 | gradDtD = vecTmp + 4*3; |
532 | gradDtE = vecTmp + 5*3; |
533 | gradDtF = vecTmp + 6*3; |
534 | TEN_T_SET(gradDdXYZ + 0*7, tenAns[0],( (gradDdXYZ + 0*7)[0] = (tenAns[0]), (gradDdXYZ + 0*7)[1] = ( gradDtA[0]), (gradDdXYZ + 0*7)[2] = (gradDtB[0]), (gradDdXYZ + 0*7)[3] = (gradDtC[0]), (gradDdXYZ + 0*7)[4] = (gradDtD[0]), (gradDdXYZ + 0*7)[5] = (gradDtE[0]), (gradDdXYZ + 0*7)[6] = ( gradDtF[0]) ) |
535 | gradDtA[0], gradDtB[0], gradDtC[0],( (gradDdXYZ + 0*7)[0] = (tenAns[0]), (gradDdXYZ + 0*7)[1] = ( gradDtA[0]), (gradDdXYZ + 0*7)[2] = (gradDtB[0]), (gradDdXYZ + 0*7)[3] = (gradDtC[0]), (gradDdXYZ + 0*7)[4] = (gradDtD[0]), (gradDdXYZ + 0*7)[5] = (gradDtE[0]), (gradDdXYZ + 0*7)[6] = ( gradDtF[0]) ) |
536 | gradDtD[0], gradDtE[0],( (gradDdXYZ + 0*7)[0] = (tenAns[0]), (gradDdXYZ + 0*7)[1] = ( gradDtA[0]), (gradDdXYZ + 0*7)[2] = (gradDtB[0]), (gradDdXYZ + 0*7)[3] = (gradDtC[0]), (gradDdXYZ + 0*7)[4] = (gradDtD[0]), (gradDdXYZ + 0*7)[5] = (gradDtE[0]), (gradDdXYZ + 0*7)[6] = ( gradDtF[0]) ) |
537 | gradDtF[0])( (gradDdXYZ + 0*7)[0] = (tenAns[0]), (gradDdXYZ + 0*7)[1] = ( gradDtA[0]), (gradDdXYZ + 0*7)[2] = (gradDtB[0]), (gradDdXYZ + 0*7)[3] = (gradDtC[0]), (gradDdXYZ + 0*7)[4] = (gradDtD[0]), (gradDdXYZ + 0*7)[5] = (gradDtE[0]), (gradDdXYZ + 0*7)[6] = ( gradDtF[0]) ); |
538 | TEN_T_SET(gradDdXYZ + 1*7, tenAns[0],( (gradDdXYZ + 1*7)[0] = (tenAns[0]), (gradDdXYZ + 1*7)[1] = ( gradDtA[1]), (gradDdXYZ + 1*7)[2] = (gradDtB[1]), (gradDdXYZ + 1*7)[3] = (gradDtC[1]), (gradDdXYZ + 1*7)[4] = (gradDtD[1]), (gradDdXYZ + 1*7)[5] = (gradDtE[1]), (gradDdXYZ + 1*7)[6] = ( gradDtF[1]) ) |
539 | gradDtA[1], gradDtB[1], gradDtC[1],( (gradDdXYZ + 1*7)[0] = (tenAns[0]), (gradDdXYZ + 1*7)[1] = ( gradDtA[1]), (gradDdXYZ + 1*7)[2] = (gradDtB[1]), (gradDdXYZ + 1*7)[3] = (gradDtC[1]), (gradDdXYZ + 1*7)[4] = (gradDtD[1]), (gradDdXYZ + 1*7)[5] = (gradDtE[1]), (gradDdXYZ + 1*7)[6] = ( gradDtF[1]) ) |
540 | gradDtD[1], gradDtE[1],( (gradDdXYZ + 1*7)[0] = (tenAns[0]), (gradDdXYZ + 1*7)[1] = ( gradDtA[1]), (gradDdXYZ + 1*7)[2] = (gradDtB[1]), (gradDdXYZ + 1*7)[3] = (gradDtC[1]), (gradDdXYZ + 1*7)[4] = (gradDtD[1]), (gradDdXYZ + 1*7)[5] = (gradDtE[1]), (gradDdXYZ + 1*7)[6] = ( gradDtF[1]) ) |
541 | gradDtF[1])( (gradDdXYZ + 1*7)[0] = (tenAns[0]), (gradDdXYZ + 1*7)[1] = ( gradDtA[1]), (gradDdXYZ + 1*7)[2] = (gradDtB[1]), (gradDdXYZ + 1*7)[3] = (gradDtC[1]), (gradDdXYZ + 1*7)[4] = (gradDtD[1]), (gradDdXYZ + 1*7)[5] = (gradDtE[1]), (gradDdXYZ + 1*7)[6] = ( gradDtF[1]) ); |
542 | TEN_T_SET(gradDdXYZ + 2*7, tenAns[0],( (gradDdXYZ + 2*7)[0] = (tenAns[0]), (gradDdXYZ + 2*7)[1] = ( gradDtA[2]), (gradDdXYZ + 2*7)[2] = (gradDtB[2]), (gradDdXYZ + 2*7)[3] = (gradDtC[2]), (gradDdXYZ + 2*7)[4] = (gradDtD[2]), (gradDdXYZ + 2*7)[5] = (gradDtE[2]), (gradDdXYZ + 2*7)[6] = ( gradDtF[2]) ) |
543 | gradDtA[2], gradDtB[2], gradDtC[2],( (gradDdXYZ + 2*7)[0] = (tenAns[0]), (gradDdXYZ + 2*7)[1] = ( gradDtA[2]), (gradDdXYZ + 2*7)[2] = (gradDtB[2]), (gradDdXYZ + 2*7)[3] = (gradDtC[2]), (gradDdXYZ + 2*7)[4] = (gradDtD[2]), (gradDdXYZ + 2*7)[5] = (gradDtE[2]), (gradDdXYZ + 2*7)[6] = ( gradDtF[2]) ) |
544 | gradDtD[2], gradDtE[2],( (gradDdXYZ + 2*7)[0] = (tenAns[0]), (gradDdXYZ + 2*7)[1] = ( gradDtA[2]), (gradDdXYZ + 2*7)[2] = (gradDtB[2]), (gradDdXYZ + 2*7)[3] = (gradDtC[2]), (gradDdXYZ + 2*7)[4] = (gradDtD[2]), (gradDdXYZ + 2*7)[5] = (gradDtE[2]), (gradDdXYZ + 2*7)[6] = ( gradDtF[2]) ) |
545 | gradDtF[2])( (gradDdXYZ + 2*7)[0] = (tenAns[0]), (gradDdXYZ + 2*7)[1] = ( gradDtA[2]), (gradDdXYZ + 2*7)[2] = (gradDtB[2]), (gradDdXYZ + 2*7)[3] = (gradDtC[2]), (gradDdXYZ + 2*7)[4] = (gradDtD[2]), (gradDdXYZ + 2*7)[5] = (gradDtE[2]), (gradDdXYZ + 2*7)[6] = ( gradDtF[2]) ); |
546 | } |
547 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorGradMag)(pvl->query[tenGageTensorGradMag/8] & (1 << (tenGageTensorGradMag % 8)))) { |
548 | vecTmp = pvl->directAnswer[tenGageTensorGradMag]; |
549 | vecTmp[0] = sqrt(TEN_T_DOT(gradDdXYZ + 0*7, gradDdXYZ + 0*7)( (gradDdXYZ + 0*7)[1]*(gradDdXYZ + 0*7)[1] + 2*(gradDdXYZ + 0 *7)[2]*(gradDdXYZ + 0*7)[2] + 2*(gradDdXYZ + 0*7)[3]*(gradDdXYZ + 0*7)[3] + (gradDdXYZ + 0*7)[4]*(gradDdXYZ + 0*7)[4] + 2*(gradDdXYZ + 0*7)[5]*(gradDdXYZ + 0*7)[5] + (gradDdXYZ + 0*7)[6]*(gradDdXYZ + 0*7)[6] )); |
550 | vecTmp[1] = sqrt(TEN_T_DOT(gradDdXYZ + 1*7, gradDdXYZ + 1*7)( (gradDdXYZ + 1*7)[1]*(gradDdXYZ + 1*7)[1] + 2*(gradDdXYZ + 1 *7)[2]*(gradDdXYZ + 1*7)[2] + 2*(gradDdXYZ + 1*7)[3]*(gradDdXYZ + 1*7)[3] + (gradDdXYZ + 1*7)[4]*(gradDdXYZ + 1*7)[4] + 2*(gradDdXYZ + 1*7)[5]*(gradDdXYZ + 1*7)[5] + (gradDdXYZ + 1*7)[6]*(gradDdXYZ + 1*7)[6] )); |
551 | vecTmp[2] = sqrt(TEN_T_DOT(gradDdXYZ + 2*7, gradDdXYZ + 2*7)( (gradDdXYZ + 2*7)[1]*(gradDdXYZ + 2*7)[1] + 2*(gradDdXYZ + 2 *7)[2]*(gradDdXYZ + 2*7)[2] + 2*(gradDdXYZ + 2*7)[3]*(gradDdXYZ + 2*7)[3] + (gradDdXYZ + 2*7)[4]*(gradDdXYZ + 2*7)[4] + 2*(gradDdXYZ + 2*7)[5]*(gradDdXYZ + 2*7)[5] + (gradDdXYZ + 2*7)[6]*(gradDdXYZ + 2*7)[6] )); |
552 | } |
553 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorGradMag)(pvl->query[tenGageTensorGradMag/8] & (1 << (tenGageTensorGradMag % 8)))) { |
554 | pvl->directAnswer[tenGageTensorGradMagMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
555 | } |
556 | |
557 | /* --- Trace --- */ |
558 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceGradVec)(pvl->query[tenGageTraceGradVec/8] & (1 << (tenGageTraceGradVec % 8)))) { |
559 | vecTmp = pvl->directAnswer[tenGageTraceGradVec]; |
560 | ELL_3V_ADD3(vecTmp, gradDtA, gradDtD, gradDtF)((vecTmp)[0] = (gradDtA)[0] + (gradDtD)[0] + (gradDtF)[0], (vecTmp )[1] = (gradDtA)[1] + (gradDtD)[1] + (gradDtF)[1], (vecTmp)[2 ] = (gradDtA)[2] + (gradDtD)[2] + (gradDtF)[2]); |
561 | ELL_3V_SCALE(gradCbA, -1, vecTmp)((gradCbA)[0] = (-1)*(vecTmp)[0], (gradCbA)[1] = (-1)*(vecTmp )[1], (gradCbA)[2] = (-1)*(vecTmp)[2]); |
562 | } |
563 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceGradMag)(pvl->query[tenGageTraceGradMag/8] & (1 << (tenGageTraceGradMag % 8)))) { |
564 | magTmp = pvl->directAnswer[tenGageTraceGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
565 | } |
566 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceNormal)(pvl->query[tenGageTraceNormal/8] & (1 << (tenGageTraceNormal % 8)))) { |
567 | ELL_3V_SCALE(pvl->directAnswer[tenGageTraceNormal],((pvl->directAnswer[tenGageTraceNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageTraceNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageTraceNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]) |
568 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageTraceNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageTraceNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageTraceNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]); |
569 | } |
570 | |
571 | /* ---- Norm stuff handled after S */ |
572 | |
573 | /* --- B --- */ |
574 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBGradVec)(pvl->query[tenGageBGradVec/8] & (1 << (tenGageBGradVec % 8)))) { |
575 | gradCbB = vecTmp = pvl->directAnswer[tenGageBGradVec]; |
576 | ELL_3V_SCALE_ADD6(vecTmp,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
577 | dtD + dtF, gradDtA,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
578 | dtA + dtF, gradDtD,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
579 | dtA + dtD, gradDtF,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
580 | -2*dtB, gradDtB,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
581 | -2*dtC, gradDtC,((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]) |
582 | -2*dtE, gradDtE)((vecTmp)[0] = (dtD + dtF)*(gradDtA)[0] + (dtA + dtF)*(gradDtD )[0] + (dtA + dtD)*(gradDtF)[0] + (-2*dtB)*(gradDtB)[0] + (-2 *dtC)*(gradDtC)[0] + (-2*dtE)*(gradDtE)[0], (vecTmp)[1] = (dtD + dtF)*(gradDtA)[1] + (dtA + dtF)*(gradDtD)[1] + (dtA + dtD) *(gradDtF)[1] + (-2*dtB)*(gradDtB)[1] + (-2*dtC)*(gradDtC)[1] + (-2*dtE)*(gradDtE)[1], (vecTmp)[2] = (dtD + dtF)*(gradDtA) [2] + (dtA + dtF)*(gradDtD)[2] + (dtA + dtD)*(gradDtF)[2] + ( -2*dtB)*(gradDtB)[2] + (-2*dtC)*(gradDtC)[2] + (-2*dtE)*(gradDtE )[2]); |
583 | } |
584 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBGradMag)(pvl->query[tenGageBGradMag/8] & (1 << (tenGageBGradMag % 8)))) { |
585 | magTmp = pvl->directAnswer[tenGageBGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
586 | } |
587 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBNormal)(pvl->query[tenGageBNormal/8] & (1 << (tenGageBNormal % 8)))) { |
588 | ELL_3V_SCALE(pvl->directAnswer[tenGageBNormal],((pvl->directAnswer[tenGageBNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageBNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageBNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
589 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageBNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageBNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageBNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
590 | } |
591 | /* --- Det --- */ |
592 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetGradVec)(pvl->query[tenGageDetGradVec/8] & (1 << (tenGageDetGradVec % 8)))) { |
593 | vecTmp = pvl->directAnswer[tenGageDetGradVec]; |
594 | ELL_3V_SCALE_ADD6(vecTmp,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
595 | dtD*dtF - dtE*dtE, gradDtA,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
596 | 2*(dtC*dtE - dtB*dtF), gradDtB,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
597 | 2*(dtB*dtE - dtC*dtD), gradDtC,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
598 | dtA*dtF - dtC*dtC, gradDtD,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
599 | 2*(dtB*dtC - dtA*dtE), gradDtE,((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]) |
600 | dtA*dtD - dtB*dtB, gradDtF)((vecTmp)[0] = (dtD*dtF - dtE*dtE)*(gradDtA)[0] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[0] + (2*(dtB*dtE - dtC*dtD))*(gradDtC) [0] + (dtA*dtF - dtC*dtC)*(gradDtD)[0] + (2*(dtB*dtC - dtA*dtE ))*(gradDtE)[0] + (dtA*dtD - dtB*dtB)*(gradDtF)[0], (vecTmp)[ 1] = (dtD*dtF - dtE*dtE)*(gradDtA)[1] + (2*(dtC*dtE - dtB*dtF ))*(gradDtB)[1] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[1] + (dtA *dtF - dtC*dtC)*(gradDtD)[1] + (2*(dtB*dtC - dtA*dtE))*(gradDtE )[1] + (dtA*dtD - dtB*dtB)*(gradDtF)[1], (vecTmp)[2] = (dtD*dtF - dtE*dtE)*(gradDtA)[2] + (2*(dtC*dtE - dtB*dtF))*(gradDtB)[ 2] + (2*(dtB*dtE - dtC*dtD))*(gradDtC)[2] + (dtA*dtF - dtC*dtC )*(gradDtD)[2] + (2*(dtB*dtC - dtA*dtE))*(gradDtE)[2] + (dtA* dtD - dtB*dtB)*(gradDtF)[2]); |
601 | ELL_3V_SCALE(gradCbC, -1, vecTmp)((gradCbC)[0] = (-1)*(vecTmp)[0], (gradCbC)[1] = (-1)*(vecTmp )[1], (gradCbC)[2] = (-1)*(vecTmp)[2]); |
602 | } |
603 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetGradMag)(pvl->query[tenGageDetGradMag/8] & (1 << (tenGageDetGradMag % 8)))) { |
604 | magTmp = pvl->directAnswer[tenGageDetGradMag][0] = |
605 | AIR_CAST(float, ELL_3V_LEN(vecTmp))((float)((sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*( (vecTmp))[1] + ((vecTmp))[2]*((vecTmp))[2]))))); |
606 | } |
607 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetNormal)(pvl->query[tenGageDetNormal/8] & (1 << (tenGageDetNormal % 8)))) { |
608 | ELL_3V_SCALE(pvl->directAnswer[tenGageDetNormal],((pvl->directAnswer[tenGageDetNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageDetNormal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageDetNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
609 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageDetNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageDetNormal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageDetNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
610 | } |
611 | /* --- S --- */ |
612 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSGradVec)(pvl->query[tenGageSGradVec/8] & (1 << (tenGageSGradVec % 8)))) { |
613 | gradCbS = vecTmp = pvl->directAnswer[tenGageSGradVec]; |
614 | ELL_3V_SCALE_ADD6(vecTmp,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
615 | 2*dtA, gradDtA,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
616 | 2*dtD, gradDtD,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
617 | 2*dtF, gradDtF,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
618 | 4*dtB, gradDtB,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
619 | 4*dtC, gradDtC,((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]) |
620 | 4*dtE, gradDtE)((vecTmp)[0] = (2*dtA)*(gradDtA)[0] + (2*dtD)*(gradDtD)[0] + ( 2*dtF)*(gradDtF)[0] + (4*dtB)*(gradDtB)[0] + (4*dtC)*(gradDtC )[0] + (4*dtE)*(gradDtE)[0], (vecTmp)[1] = (2*dtA)*(gradDtA)[ 1] + (2*dtD)*(gradDtD)[1] + (2*dtF)*(gradDtF)[1] + (4*dtB)*(gradDtB )[1] + (4*dtC)*(gradDtC)[1] + (4*dtE)*(gradDtE)[1], (vecTmp)[ 2] = (2*dtA)*(gradDtA)[2] + (2*dtD)*(gradDtD)[2] + (2*dtF)*(gradDtF )[2] + (4*dtB)*(gradDtB)[2] + (4*dtC)*(gradDtC)[2] + (4*dtE)* (gradDtE)[2]); |
621 | } |
622 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSGradMag)(pvl->query[tenGageSGradMag/8] & (1 << (tenGageSGradMag % 8)))) { |
623 | magTmp = pvl->directAnswer[tenGageSGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
624 | } |
625 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSNormal)(pvl->query[tenGageSNormal/8] & (1 << (tenGageSNormal % 8)))) { |
626 | ELL_3V_SCALE(pvl->directAnswer[tenGageSNormal],((pvl->directAnswer[tenGageSNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageSNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageSNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
627 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageSNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageSNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageSNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
628 | } |
629 | |
630 | /* --- Norm --- */ |
631 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageNormGradVec)(pvl->query[tenGageNormGradVec/8] & (1 << (tenGageNormGradVec % 8)))) { |
632 | double nslc; |
633 | nslc = pvl->directAnswer[tenGageNorm][0]; |
634 | nslc = nslc ? 1/(2*nslc) : 0.0; |
635 | vecTmp = pvl->directAnswer[tenGageNormGradVec]; |
636 | ELL_3V_SCALE(vecTmp, nslc, pvl->directAnswer[tenGageSGradVec])((vecTmp)[0] = (nslc)*(pvl->directAnswer[tenGageSGradVec]) [0], (vecTmp)[1] = (nslc)*(pvl->directAnswer[tenGageSGradVec ])[1], (vecTmp)[2] = (nslc)*(pvl->directAnswer[tenGageSGradVec ])[2]); |
637 | } |
638 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageNormGradMag)(pvl->query[tenGageNormGradMag/8] & (1 << (tenGageNormGradMag % 8)))) { |
639 | magTmp = pvl->directAnswer[tenGageNormGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
640 | } |
641 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageNormNormal)(pvl->query[tenGageNormNormal/8] & (1 << (tenGageNormNormal % 8)))) { |
642 | ELL_3V_SCALE(pvl->directAnswer[tenGageNormNormal],((pvl->directAnswer[tenGageNormNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageNormNormal])[ 1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageNormNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2] ) |
643 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageNormNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageNormNormal])[ 1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageNormNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2] ); |
644 | } |
645 | |
646 | /* --- Q --- */ |
647 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQGradVec)(pvl->query[tenGageQGradVec/8] & (1 << (tenGageQGradVec % 8)))) { |
648 | gradCbQ = vecTmp = pvl->directAnswer[tenGageQGradVec]; |
649 | ELL_3V_SCALE_ADD2(vecTmp,((vecTmp)[0] = (1.0/9)*(gradCbS)[0] + (-1.0/9)*(gradCbB)[0], ( vecTmp)[1] = (1.0/9)*(gradCbS)[1] + (-1.0/9)*(gradCbB)[1], (vecTmp )[2] = (1.0/9)*(gradCbS)[2] + (-1.0/9)*(gradCbB)[2]) |
650 | 1.0/9, gradCbS,((vecTmp)[0] = (1.0/9)*(gradCbS)[0] + (-1.0/9)*(gradCbB)[0], ( vecTmp)[1] = (1.0/9)*(gradCbS)[1] + (-1.0/9)*(gradCbB)[1], (vecTmp )[2] = (1.0/9)*(gradCbS)[2] + (-1.0/9)*(gradCbB)[2]) |
651 | -1.0/9, gradCbB)((vecTmp)[0] = (1.0/9)*(gradCbS)[0] + (-1.0/9)*(gradCbB)[0], ( vecTmp)[1] = (1.0/9)*(gradCbS)[1] + (-1.0/9)*(gradCbB)[1], (vecTmp )[2] = (1.0/9)*(gradCbS)[2] + (-1.0/9)*(gradCbB)[2]); |
652 | |
653 | } |
654 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQGradMag)(pvl->query[tenGageQGradMag/8] & (1 << (tenGageQGradMag % 8)))) { |
655 | magTmp = pvl->directAnswer[tenGageQGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
656 | } |
657 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQNormal)(pvl->query[tenGageQNormal/8] & (1 << (tenGageQNormal % 8)))) { |
658 | ELL_3V_SCALE(pvl->directAnswer[tenGageQNormal],((pvl->directAnswer[tenGageQNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageQNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageQNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
659 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageQNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageQNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageQNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
660 | } |
661 | /* --- FA --- */ |
662 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGradVec)(pvl->query[tenGageFAGradVec/8] & (1 << (tenGageFAGradVec % 8)))) { |
663 | vecTmp = pvl->directAnswer[tenGageFAGradVec]; |
664 | tmp3 = AIR_MAX(0, pvl->directAnswer[tenGageFA][0])((0) > (pvl->directAnswer[tenGageFA][0]) ? (0) : (pvl-> directAnswer[tenGageFA][0])); |
665 | tmp0 = cbQ ? tmp3/(2*cbQ) : 0; |
666 | tmp1 = cbS ? -tmp3/(2*cbS) : 0; |
667 | ELL_3V_SCALE_ADD2(vecTmp,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbS)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbS)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbS)[2]) |
668 | tmp0, gradCbQ,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbS)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbS)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbS)[2]) |
669 | tmp1, gradCbS)((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbS)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbS)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbS)[2]); |
670 | } |
671 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGradMag)(pvl->query[tenGageFAGradMag/8] & (1 << (tenGageFAGradMag % 8)))) { |
672 | magTmp = pvl->directAnswer[tenGageFAGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
673 | } |
674 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFANormal)(pvl->query[tenGageFANormal/8] & (1 << (tenGageFANormal % 8)))) { |
675 | ELL_3V_SCALE(pvl->directAnswer[tenGageFANormal],((pvl->directAnswer[tenGageFANormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageFANormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageFANormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
676 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageFANormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageFANormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageFANormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
677 | } |
678 | /* --- R --- */ |
679 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRGradVec)(pvl->query[tenGageRGradVec/8] & (1 << (tenGageRGradVec % 8)))) { |
680 | gradCbR = vecTmp = pvl->directAnswer[tenGageRGradVec]; |
681 | ELL_3V_SCALE_ADD4(vecTmp,((vecTmp)[0] = ((5*cbB - 2*cbS)/54)*(gradCbA)[0] + (5*cbA/54) *(gradCbB)[0] + (-0.5)*(gradCbC)[0] + (-cbA/27)*(gradCbS)[0], (vecTmp)[1] = ((5*cbB - 2*cbS)/54)*(gradCbA)[1] + (5*cbA/54) *(gradCbB)[1] + (-0.5)*(gradCbC)[1] + (-cbA/27)*(gradCbS)[1], (vecTmp)[2] = ((5*cbB - 2*cbS)/54)*(gradCbA)[2] + (5*cbA/54) *(gradCbB)[2] + (-0.5)*(gradCbC)[2] + (-cbA/27)*(gradCbS)[2]) |
682 | (5*cbB - 2*cbS)/54, gradCbA,((vecTmp)[0] = ((5*cbB - 2*cbS)/54)*(gradCbA)[0] + (5*cbA/54) *(gradCbB)[0] + (-0.5)*(gradCbC)[0] + (-cbA/27)*(gradCbS)[0], (vecTmp)[1] = ((5*cbB - 2*cbS)/54)*(gradCbA)[1] + (5*cbA/54) *(gradCbB)[1] + (-0.5)*(gradCbC)[1] + (-cbA/27)*(gradCbS)[1], (vecTmp)[2] = ((5*cbB - 2*cbS)/54)*(gradCbA)[2] + (5*cbA/54) *(gradCbB)[2] + (-0.5)*(gradCbC)[2] + (-cbA/27)*(gradCbS)[2]) |
683 | 5*cbA/54, gradCbB,((vecTmp)[0] = ((5*cbB - 2*cbS)/54)*(gradCbA)[0] + (5*cbA/54) *(gradCbB)[0] + (-0.5)*(gradCbC)[0] + (-cbA/27)*(gradCbS)[0], (vecTmp)[1] = ((5*cbB - 2*cbS)/54)*(gradCbA)[1] + (5*cbA/54) *(gradCbB)[1] + (-0.5)*(gradCbC)[1] + (-cbA/27)*(gradCbS)[1], (vecTmp)[2] = ((5*cbB - 2*cbS)/54)*(gradCbA)[2] + (5*cbA/54) *(gradCbB)[2] + (-0.5)*(gradCbC)[2] + (-cbA/27)*(gradCbS)[2]) |
684 | -0.5, gradCbC,((vecTmp)[0] = ((5*cbB - 2*cbS)/54)*(gradCbA)[0] + (5*cbA/54) *(gradCbB)[0] + (-0.5)*(gradCbC)[0] + (-cbA/27)*(gradCbS)[0], (vecTmp)[1] = ((5*cbB - 2*cbS)/54)*(gradCbA)[1] + (5*cbA/54) *(gradCbB)[1] + (-0.5)*(gradCbC)[1] + (-cbA/27)*(gradCbS)[1], (vecTmp)[2] = ((5*cbB - 2*cbS)/54)*(gradCbA)[2] + (5*cbA/54) *(gradCbB)[2] + (-0.5)*(gradCbC)[2] + (-cbA/27)*(gradCbS)[2]) |
685 | -cbA/27, gradCbS)((vecTmp)[0] = ((5*cbB - 2*cbS)/54)*(gradCbA)[0] + (5*cbA/54) *(gradCbB)[0] + (-0.5)*(gradCbC)[0] + (-cbA/27)*(gradCbS)[0], (vecTmp)[1] = ((5*cbB - 2*cbS)/54)*(gradCbA)[1] + (5*cbA/54) *(gradCbB)[1] + (-0.5)*(gradCbC)[1] + (-cbA/27)*(gradCbS)[1], (vecTmp)[2] = ((5*cbB - 2*cbS)/54)*(gradCbA)[2] + (5*cbA/54) *(gradCbB)[2] + (-0.5)*(gradCbC)[2] + (-cbA/27)*(gradCbS)[2]); |
686 | } |
687 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRGradMag)(pvl->query[tenGageRGradMag/8] & (1 << (tenGageRGradMag % 8)))) { |
688 | magTmp = pvl->directAnswer[tenGageRGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
689 | } |
690 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRNormal)(pvl->query[tenGageRNormal/8] & (1 << (tenGageRNormal % 8)))) { |
691 | ELL_3V_SCALE(pvl->directAnswer[tenGageRNormal],((pvl->directAnswer[tenGageRNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageRNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageRNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
692 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageRNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageRNormal])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer[tenGageRNormal ])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
693 | } |
694 | /* --- Mode --- */ |
695 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeGradVec)(pvl->query[tenGageModeGradVec/8] & (1 << (tenGageModeGradVec % 8)))) { |
696 | vecTmp = pvl->directAnswer[tenGageModeGradVec]; |
697 | tmp1 = AIR_MAX(0, cbQ*cbQ*cbQ)((0) > (cbQ*cbQ*cbQ) ? (0) : (cbQ*cbQ*cbQ)); |
698 | tmp1 = tmp1 ? sqrt(1/tmp1) : 0; |
699 | tmp0 = cbQ ? -tmp1*3*cbR/(2*cbQ) : 0; |
700 | ELL_3V_SCALE_ADD2(vecTmp,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]) |
701 | tmp0, gradCbQ,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]) |
702 | tmp1, gradCbR)((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]); |
703 | } |
704 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeGradMag)(pvl->query[tenGageModeGradMag/8] & (1 << (tenGageModeGradMag % 8)))) { |
705 | magTmp = pvl->directAnswer[tenGageModeGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
706 | } |
707 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeNormal)(pvl->query[tenGageModeNormal/8] & (1 << (tenGageModeNormal % 8)))) { |
708 | ELL_3V_SCALE(pvl->directAnswer[tenGageModeNormal],((pvl->directAnswer[tenGageModeNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageModeNormal])[ 1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageModeNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2] ) |
709 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageModeNormal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageModeNormal])[ 1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageModeNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2] ); |
710 | } |
711 | /* --- Theta --- */ |
712 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageThetaGradVec)(pvl->query[tenGageThetaGradVec/8] & (1 << (tenGageThetaGradVec % 8)))) { |
713 | vecTmp = pvl->directAnswer[tenGageThetaGradVec]; |
714 | tmp1 = AIR_MAX(0, cbQ*cbQ*cbQ)((0) > (cbQ*cbQ*cbQ) ? (0) : (cbQ*cbQ*cbQ)); |
715 | tmp0 = tmp1 ? cbR*cbR/tmp1 : 0; |
716 | tmp1 = sqrt(tmp1)*sqrt(1.0 - tmp0); |
717 | tmp1 = tmp1 ? 1/(AIR_PI3.14159265358979323846*tmp1) : 0.0; |
718 | tmp0 = cbQ ? -tmp1*3*cbR/(2*cbQ) : 0.0; |
719 | ELL_3V_SCALE_ADD2(vecTmp,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]) |
720 | tmp0, gradCbQ,((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]) |
721 | tmp1, gradCbR)((vecTmp)[0] = (tmp0)*(gradCbQ)[0] + (tmp1)*(gradCbR)[0], (vecTmp )[1] = (tmp0)*(gradCbQ)[1] + (tmp1)*(gradCbR)[1], (vecTmp)[2] = (tmp0)*(gradCbQ)[2] + (tmp1)*(gradCbR)[2]); |
722 | } |
723 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageThetaGradMag)(pvl->query[tenGageThetaGradMag/8] & (1 << (tenGageThetaGradMag % 8)))) { |
724 | magTmp = pvl->directAnswer[tenGageThetaGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
725 | } |
726 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageThetaNormal)(pvl->query[tenGageThetaNormal/8] & (1 << (tenGageThetaNormal % 8)))) { |
727 | ELL_3V_SCALE(pvl->directAnswer[tenGageThetaNormal],((pvl->directAnswer[tenGageThetaNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageThetaNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageThetaNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]) |
728 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageThetaNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageThetaNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageThetaNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]); |
729 | } |
730 | /* --- Omega --- */ |
731 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaGradVec)(pvl->query[tenGageOmegaGradVec/8] & (1 << (tenGageOmegaGradVec % 8)))) { |
732 | double fa, mode, *faGrad, *modeGrad; |
733 | vecTmp = pvl->directAnswer[tenGageOmegaGradVec]; |
734 | fa = pvl->directAnswer[tenGageFA][0]; |
735 | mode = pvl->directAnswer[tenGageMode][0]; |
736 | faGrad = pvl->directAnswer[tenGageFAGradVec]; |
737 | modeGrad = pvl->directAnswer[tenGageModeGradVec]; |
738 | ELL_3V_SCALE_ADD2(vecTmp,((vecTmp)[0] = ((1+mode)/2)*(faGrad)[0] + (fa/2)*(modeGrad)[0 ], (vecTmp)[1] = ((1+mode)/2)*(faGrad)[1] + (fa/2)*(modeGrad) [1], (vecTmp)[2] = ((1+mode)/2)*(faGrad)[2] + (fa/2)*(modeGrad )[2]) |
739 | (1+mode)/2, faGrad,((vecTmp)[0] = ((1+mode)/2)*(faGrad)[0] + (fa/2)*(modeGrad)[0 ], (vecTmp)[1] = ((1+mode)/2)*(faGrad)[1] + (fa/2)*(modeGrad) [1], (vecTmp)[2] = ((1+mode)/2)*(faGrad)[2] + (fa/2)*(modeGrad )[2]) |
740 | fa/2, modeGrad)((vecTmp)[0] = ((1+mode)/2)*(faGrad)[0] + (fa/2)*(modeGrad)[0 ], (vecTmp)[1] = ((1+mode)/2)*(faGrad)[1] + (fa/2)*(modeGrad) [1], (vecTmp)[2] = ((1+mode)/2)*(faGrad)[2] + (fa/2)*(modeGrad )[2]); |
741 | } |
742 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaGradMag)(pvl->query[tenGageOmegaGradMag/8] & (1 << (tenGageOmegaGradMag % 8)))) { |
743 | magTmp = pvl->directAnswer[tenGageOmegaGradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
744 | } |
745 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaNormal)(pvl->query[tenGageOmegaNormal/8] & (1 << (tenGageOmegaNormal % 8)))) { |
746 | ELL_3V_SCALE(pvl->directAnswer[tenGageOmegaNormal],((pvl->directAnswer[tenGageOmegaNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageOmegaNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageOmegaNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]) |
747 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageOmegaNormal])[0] = (magTmp ? 1/ magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageOmegaNormal ])[1] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageOmegaNormal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2 ]); |
748 | } |
749 | |
750 | #define SQRT_1_OVER_30.57735026918962576450 0.57735026918962576450 |
751 | |
752 | /* --- Invariant gradients + rotation tangents --- */ |
753 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageInvarKGrads)(pvl->query[tenGageInvarKGrads/8] & (1 << (tenGageInvarKGrads % 8)))) { |
754 | double mu1Grad[7], *mu2Grad, *skwGrad; |
755 | |
756 | TEN_T_SET(mu1Grad, 1,( (mu1Grad)[0] = (1), (mu1Grad)[1] = (0.57735026918962576450) , (mu1Grad)[2] = (0), (mu1Grad)[3] = (0), (mu1Grad)[4] = (0.57735026918962576450 ), (mu1Grad)[5] = (0), (mu1Grad)[6] = (0.57735026918962576450 ) ) |
757 | SQRT_1_OVER_3, 0, 0,( (mu1Grad)[0] = (1), (mu1Grad)[1] = (0.57735026918962576450) , (mu1Grad)[2] = (0), (mu1Grad)[3] = (0), (mu1Grad)[4] = (0.57735026918962576450 ), (mu1Grad)[5] = (0), (mu1Grad)[6] = (0.57735026918962576450 ) ) |
758 | SQRT_1_OVER_3, 0,( (mu1Grad)[0] = (1), (mu1Grad)[1] = (0.57735026918962576450) , (mu1Grad)[2] = (0), (mu1Grad)[3] = (0), (mu1Grad)[4] = (0.57735026918962576450 ), (mu1Grad)[5] = (0), (mu1Grad)[6] = (0.57735026918962576450 ) ) |
759 | SQRT_1_OVER_3)( (mu1Grad)[0] = (1), (mu1Grad)[1] = (0.57735026918962576450) , (mu1Grad)[2] = (0), (mu1Grad)[3] = (0), (mu1Grad)[4] = (0.57735026918962576450 ), (mu1Grad)[5] = (0), (mu1Grad)[6] = (0.57735026918962576450 ) ); |
760 | mu2Grad = pvl->directAnswer[tenGageDelNormK2]; |
761 | skwGrad = pvl->directAnswer[tenGageDelNormK3]; |
762 | |
763 | ELL_3V_SET(pvl->directAnswer[tenGageInvarKGrads] + 0*3,((pvl->directAnswer[tenGageInvarKGrads] + 0*3)[0] = (( (mu1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu1Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu1Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 0*3)[1] = (( (mu1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu1Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 0*3)[2] = (( (mu1Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu1Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
764 | TEN_T_DOT(mu1Grad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarKGrads] + 0*3)[0] = (( (mu1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu1Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu1Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 0*3)[1] = (( (mu1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu1Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 0*3)[2] = (( (mu1Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu1Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
765 | TEN_T_DOT(mu1Grad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarKGrads] + 0*3)[0] = (( (mu1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu1Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu1Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 0*3)[1] = (( (mu1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu1Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 0*3)[2] = (( (mu1Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu1Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
766 | TEN_T_DOT(mu1Grad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarKGrads] + 0*3)[0] = (( (mu1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu1Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu1Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 0*3)[1] = (( (mu1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu1Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 0*3)[2] = (( (mu1Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu1Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu1Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu1Grad)[6]*(gradDdXYZ + 2*7)[6] ))); |
767 | ELL_3V_SET(pvl->directAnswer[tenGageInvarKGrads] + 1*3,((pvl->directAnswer[tenGageInvarKGrads] + 1*3)[0] = (( (mu2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu2Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu2Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 1*3)[1] = (( (mu2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu2Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 1*3)[2] = (( (mu2Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu2Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
768 | TEN_T_DOT(mu2Grad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarKGrads] + 1*3)[0] = (( (mu2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu2Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu2Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 1*3)[1] = (( (mu2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu2Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 1*3)[2] = (( (mu2Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu2Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
769 | TEN_T_DOT(mu2Grad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarKGrads] + 1*3)[0] = (( (mu2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu2Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu2Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 1*3)[1] = (( (mu2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu2Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 1*3)[2] = (( (mu2Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu2Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 2*7)[6] ))) |
770 | TEN_T_DOT(mu2Grad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarKGrads] + 1*3)[0] = (( (mu2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(mu2Grad)[3]*(gradDdXYZ + 0*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 0*7)[5] + (mu2Grad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 1*3)[1] = (( (mu2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(mu2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(mu2Grad)[3]*(gradDdXYZ + 1*7)[ 3] + (mu2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 1*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 1*3)[2] = (( (mu2Grad)[1]*(gradDdXYZ + 2*7)[1] + 2*(mu2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(mu2Grad)[ 3]*(gradDdXYZ + 2*7)[3] + (mu2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(mu2Grad)[5]*(gradDdXYZ + 2*7)[5] + (mu2Grad)[6]*(gradDdXYZ + 2*7)[6] ))); |
771 | ELL_3V_SET(pvl->directAnswer[tenGageInvarKGrads] + 2*3,((pvl->directAnswer[tenGageInvarKGrads] + 2*3)[0] = (( (skwGrad )[1]*(gradDdXYZ + 0*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(skwGrad)[3]*(gradDdXYZ + 0*7)[3] + (skwGrad)[4]*(gradDdXYZ + 0*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 0*7)[5] + (skwGrad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 2*3)[1] = (( (skwGrad)[1]*(gradDdXYZ + 1*7)[1] + 2*(skwGrad )[2]*(gradDdXYZ + 1*7)[2] + 2*(skwGrad)[3]*(gradDdXYZ + 1*7)[ 3] + (skwGrad)[4]*(gradDdXYZ + 1*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 1*7)[5] + (skwGrad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 2*3)[2] = (( (skwGrad)[1]*(gradDdXYZ + 2*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 2*7)[2] + 2*(skwGrad)[ 3]*(gradDdXYZ + 2*7)[3] + (skwGrad)[4]*(gradDdXYZ + 2*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 2*7)[5] + (skwGrad)[6]*(gradDdXYZ + 2*7)[6] ))) |
772 | TEN_T_DOT(skwGrad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarKGrads] + 2*3)[0] = (( (skwGrad )[1]*(gradDdXYZ + 0*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(skwGrad)[3]*(gradDdXYZ + 0*7)[3] + (skwGrad)[4]*(gradDdXYZ + 0*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 0*7)[5] + (skwGrad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 2*3)[1] = (( (skwGrad)[1]*(gradDdXYZ + 1*7)[1] + 2*(skwGrad )[2]*(gradDdXYZ + 1*7)[2] + 2*(skwGrad)[3]*(gradDdXYZ + 1*7)[ 3] + (skwGrad)[4]*(gradDdXYZ + 1*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 1*7)[5] + (skwGrad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 2*3)[2] = (( (skwGrad)[1]*(gradDdXYZ + 2*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 2*7)[2] + 2*(skwGrad)[ 3]*(gradDdXYZ + 2*7)[3] + (skwGrad)[4]*(gradDdXYZ + 2*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 2*7)[5] + (skwGrad)[6]*(gradDdXYZ + 2*7)[6] ))) |
773 | TEN_T_DOT(skwGrad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarKGrads] + 2*3)[0] = (( (skwGrad )[1]*(gradDdXYZ + 0*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(skwGrad)[3]*(gradDdXYZ + 0*7)[3] + (skwGrad)[4]*(gradDdXYZ + 0*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 0*7)[5] + (skwGrad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 2*3)[1] = (( (skwGrad)[1]*(gradDdXYZ + 1*7)[1] + 2*(skwGrad )[2]*(gradDdXYZ + 1*7)[2] + 2*(skwGrad)[3]*(gradDdXYZ + 1*7)[ 3] + (skwGrad)[4]*(gradDdXYZ + 1*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 1*7)[5] + (skwGrad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 2*3)[2] = (( (skwGrad)[1]*(gradDdXYZ + 2*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 2*7)[2] + 2*(skwGrad)[ 3]*(gradDdXYZ + 2*7)[3] + (skwGrad)[4]*(gradDdXYZ + 2*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 2*7)[5] + (skwGrad)[6]*(gradDdXYZ + 2*7)[6] ))) |
774 | TEN_T_DOT(skwGrad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarKGrads] + 2*3)[0] = (( (skwGrad )[1]*(gradDdXYZ + 0*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 0*7)[ 2] + 2*(skwGrad)[3]*(gradDdXYZ + 0*7)[3] + (skwGrad)[4]*(gradDdXYZ + 0*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 0*7)[5] + (skwGrad)[ 6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarKGrads ] + 2*3)[1] = (( (skwGrad)[1]*(gradDdXYZ + 1*7)[1] + 2*(skwGrad )[2]*(gradDdXYZ + 1*7)[2] + 2*(skwGrad)[3]*(gradDdXYZ + 1*7)[ 3] + (skwGrad)[4]*(gradDdXYZ + 1*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 1*7)[5] + (skwGrad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarKGrads] + 2*3)[2] = (( (skwGrad)[1]*(gradDdXYZ + 2*7)[1] + 2*(skwGrad)[2]*(gradDdXYZ + 2*7)[2] + 2*(skwGrad)[ 3]*(gradDdXYZ + 2*7)[3] + (skwGrad)[4]*(gradDdXYZ + 2*7)[4] + 2*(skwGrad)[5]*(gradDdXYZ + 2*7)[5] + (skwGrad)[6]*(gradDdXYZ + 2*7)[6] ))); |
775 | } |
776 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageInvarKGradMags)(pvl->query[tenGageInvarKGradMags/8] & (1 << (tenGageInvarKGradMags % 8)))) { |
777 | ELL_3V_SET(pvl->directAnswer[tenGageInvarKGradMags],((pvl->directAnswer[tenGageInvarKGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarKGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarKGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarKGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarKGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarKGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarKGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarKGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarKGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarKGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarKGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3 ))[2]))))) |
778 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarKGrads] + 0*3),((pvl->directAnswer[tenGageInvarKGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarKGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarKGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarKGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarKGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarKGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarKGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarKGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarKGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarKGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarKGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3 ))[2]))))) |
779 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarKGrads] + 1*3),((pvl->directAnswer[tenGageInvarKGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarKGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarKGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarKGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarKGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarKGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarKGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarKGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarKGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarKGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarKGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3 ))[2]))))) |
780 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarKGrads] + 2*3))((pvl->directAnswer[tenGageInvarKGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarKGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarKGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarKGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarKGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarKGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarKGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarKGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarKGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarKGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarKGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarKGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarKGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarKGrads] + 2*3 ))[2]))))); |
781 | } |
782 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageInvarRGrads)(pvl->query[tenGageInvarRGrads/8] & (1 << (tenGageInvarRGrads % 8)))) { |
783 | double *R1Grad, *R2Grad, *R3Grad; |
784 | |
785 | R1Grad = pvl->directAnswer[tenGageDelNormR1]; |
786 | R2Grad = pvl->directAnswer[tenGageDelNormR2]; |
787 | R3Grad = pvl->directAnswer[tenGageDelNormK3]; |
788 | |
789 | ELL_3V_SET(pvl->directAnswer[tenGageInvarRGrads] + 0*3,((pvl->directAnswer[tenGageInvarRGrads] + 0*3)[0] = (( (R1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R1Grad)[3]*(gradDdXYZ + 0*7)[3] + (R1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 0*7)[5] + (R1Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 0*3)[1] = (( (R1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R1Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 1*7)[5] + (R1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 0*3)[2] = (( (R1Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R1Grad)[3]*( gradDdXYZ + 2*7)[3] + (R1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R1Grad )[5]*(gradDdXYZ + 2*7)[5] + (R1Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
790 | TEN_T_DOT(R1Grad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarRGrads] + 0*3)[0] = (( (R1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R1Grad)[3]*(gradDdXYZ + 0*7)[3] + (R1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 0*7)[5] + (R1Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 0*3)[1] = (( (R1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R1Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 1*7)[5] + (R1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 0*3)[2] = (( (R1Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R1Grad)[3]*( gradDdXYZ + 2*7)[3] + (R1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R1Grad )[5]*(gradDdXYZ + 2*7)[5] + (R1Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
791 | TEN_T_DOT(R1Grad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarRGrads] + 0*3)[0] = (( (R1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R1Grad)[3]*(gradDdXYZ + 0*7)[3] + (R1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 0*7)[5] + (R1Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 0*3)[1] = (( (R1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R1Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 1*7)[5] + (R1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 0*3)[2] = (( (R1Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R1Grad)[3]*( gradDdXYZ + 2*7)[3] + (R1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R1Grad )[5]*(gradDdXYZ + 2*7)[5] + (R1Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
792 | TEN_T_DOT(R1Grad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarRGrads] + 0*3)[0] = (( (R1Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R1Grad)[3]*(gradDdXYZ + 0*7)[3] + (R1Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 0*7)[5] + (R1Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 0*3)[1] = (( (R1Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R1Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R1Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R1Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R1Grad)[5]*(gradDdXYZ + 1*7)[5] + (R1Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 0*3)[2] = (( (R1Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R1Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R1Grad)[3]*( gradDdXYZ + 2*7)[3] + (R1Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R1Grad )[5]*(gradDdXYZ + 2*7)[5] + (R1Grad)[6]*(gradDdXYZ + 2*7)[6] ) )); |
793 | ELL_3V_SET(pvl->directAnswer[tenGageInvarRGrads] + 1*3,((pvl->directAnswer[tenGageInvarRGrads] + 1*3)[0] = (( (R2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R2Grad)[3]*(gradDdXYZ + 0*7)[3] + (R2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 0*7)[5] + (R2Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 1*3)[1] = (( (R2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R2Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 1*7)[5] + (R2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 1*3)[2] = (( (R2Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R2Grad)[3]*( gradDdXYZ + 2*7)[3] + (R2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R2Grad )[5]*(gradDdXYZ + 2*7)[5] + (R2Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
794 | TEN_T_DOT(R2Grad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarRGrads] + 1*3)[0] = (( (R2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R2Grad)[3]*(gradDdXYZ + 0*7)[3] + (R2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 0*7)[5] + (R2Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 1*3)[1] = (( (R2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R2Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 1*7)[5] + (R2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 1*3)[2] = (( (R2Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R2Grad)[3]*( gradDdXYZ + 2*7)[3] + (R2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R2Grad )[5]*(gradDdXYZ + 2*7)[5] + (R2Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
795 | TEN_T_DOT(R2Grad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarRGrads] + 1*3)[0] = (( (R2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R2Grad)[3]*(gradDdXYZ + 0*7)[3] + (R2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 0*7)[5] + (R2Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 1*3)[1] = (( (R2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R2Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 1*7)[5] + (R2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 1*3)[2] = (( (R2Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R2Grad)[3]*( gradDdXYZ + 2*7)[3] + (R2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R2Grad )[5]*(gradDdXYZ + 2*7)[5] + (R2Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
796 | TEN_T_DOT(R2Grad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarRGrads] + 1*3)[0] = (( (R2Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R2Grad)[3]*(gradDdXYZ + 0*7)[3] + (R2Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 0*7)[5] + (R2Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 1*3)[1] = (( (R2Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R2Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R2Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R2Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R2Grad)[5]*(gradDdXYZ + 1*7)[5] + (R2Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 1*3)[2] = (( (R2Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R2Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R2Grad)[3]*( gradDdXYZ + 2*7)[3] + (R2Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R2Grad )[5]*(gradDdXYZ + 2*7)[5] + (R2Grad)[6]*(gradDdXYZ + 2*7)[6] ) )); |
797 | ELL_3V_SET(pvl->directAnswer[tenGageInvarRGrads] + 2*3,((pvl->directAnswer[tenGageInvarRGrads] + 2*3)[0] = (( (R3Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R3Grad)[3]*(gradDdXYZ + 0*7)[3] + (R3Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 0*7)[5] + (R3Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 2*3)[1] = (( (R3Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R3Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R3Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R3Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 1*7)[5] + (R3Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 2*3)[2] = (( (R3Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R3Grad)[3]*( gradDdXYZ + 2*7)[3] + (R3Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R3Grad )[5]*(gradDdXYZ + 2*7)[5] + (R3Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
798 | TEN_T_DOT(R3Grad, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageInvarRGrads] + 2*3)[0] = (( (R3Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R3Grad)[3]*(gradDdXYZ + 0*7)[3] + (R3Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 0*7)[5] + (R3Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 2*3)[1] = (( (R3Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R3Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R3Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R3Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 1*7)[5] + (R3Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 2*3)[2] = (( (R3Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R3Grad)[3]*( gradDdXYZ + 2*7)[3] + (R3Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R3Grad )[5]*(gradDdXYZ + 2*7)[5] + (R3Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
799 | TEN_T_DOT(R3Grad, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageInvarRGrads] + 2*3)[0] = (( (R3Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R3Grad)[3]*(gradDdXYZ + 0*7)[3] + (R3Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 0*7)[5] + (R3Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 2*3)[1] = (( (R3Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R3Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R3Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R3Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 1*7)[5] + (R3Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 2*3)[2] = (( (R3Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R3Grad)[3]*( gradDdXYZ + 2*7)[3] + (R3Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R3Grad )[5]*(gradDdXYZ + 2*7)[5] + (R3Grad)[6]*(gradDdXYZ + 2*7)[6] ) )) |
800 | TEN_T_DOT(R3Grad, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageInvarRGrads] + 2*3)[0] = (( (R3Grad )[1]*(gradDdXYZ + 0*7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 0*7)[2 ] + 2*(R3Grad)[3]*(gradDdXYZ + 0*7)[3] + (R3Grad)[4]*(gradDdXYZ + 0*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 0*7)[5] + (R3Grad)[6] *(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageInvarRGrads ] + 2*3)[1] = (( (R3Grad)[1]*(gradDdXYZ + 1*7)[1] + 2*(R3Grad )[2]*(gradDdXYZ + 1*7)[2] + 2*(R3Grad)[3]*(gradDdXYZ + 1*7)[3 ] + (R3Grad)[4]*(gradDdXYZ + 1*7)[4] + 2*(R3Grad)[5]*(gradDdXYZ + 1*7)[5] + (R3Grad)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer [tenGageInvarRGrads] + 2*3)[2] = (( (R3Grad)[1]*(gradDdXYZ + 2 *7)[1] + 2*(R3Grad)[2]*(gradDdXYZ + 2*7)[2] + 2*(R3Grad)[3]*( gradDdXYZ + 2*7)[3] + (R3Grad)[4]*(gradDdXYZ + 2*7)[4] + 2*(R3Grad )[5]*(gradDdXYZ + 2*7)[5] + (R3Grad)[6]*(gradDdXYZ + 2*7)[6] ) )); |
801 | } |
802 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageInvarRGradMags)(pvl->query[tenGageInvarRGradMags/8] & (1 << (tenGageInvarRGradMags % 8)))) { |
803 | ELL_3V_SET(pvl->directAnswer[tenGageInvarRGradMags],((pvl->directAnswer[tenGageInvarRGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarRGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarRGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarRGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarRGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarRGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarRGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarRGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarRGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarRGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarRGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3 ))[2]))))) |
804 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarRGrads] + 0*3),((pvl->directAnswer[tenGageInvarRGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarRGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarRGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarRGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarRGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarRGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarRGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarRGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarRGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarRGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarRGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3 ))[2]))))) |
805 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarRGrads] + 1*3),((pvl->directAnswer[tenGageInvarRGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarRGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarRGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarRGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarRGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarRGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarRGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarRGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarRGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarRGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarRGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3 ))[2]))))) |
806 | ELL_3V_LEN(pvl->directAnswer[tenGageInvarRGrads] + 2*3))((pvl->directAnswer[tenGageInvarRGradMags])[0] = ((sqrt((( (pvl->directAnswer[tenGageInvarRGrads] + 0*3))[0]*((pvl-> directAnswer[tenGageInvarRGrads] + 0*3))[0] + ((pvl->directAnswer [tenGageInvarRGrads] + 0*3))[1]*((pvl->directAnswer[tenGageInvarRGrads ] + 0*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads] + 0 *3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 0*3))[2] )))), (pvl->directAnswer[tenGageInvarRGradMags])[1] = ((sqrt ((((pvl->directAnswer[tenGageInvarRGrads] + 1*3))[0]*((pvl ->directAnswer[tenGageInvarRGrads] + 1*3))[0] + ((pvl-> directAnswer[tenGageInvarRGrads] + 1*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 1*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 1*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 1*3 ))[2])))), (pvl->directAnswer[tenGageInvarRGradMags])[2] = ((sqrt((((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0 ]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3))[0] + ((pvl ->directAnswer[tenGageInvarRGrads] + 2*3))[1]*((pvl->directAnswer [tenGageInvarRGrads] + 2*3))[1] + ((pvl->directAnswer[tenGageInvarRGrads ] + 2*3))[2]*((pvl->directAnswer[tenGageInvarRGrads] + 2*3 ))[2]))))); |
807 | } |
808 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEvalGrads)(pvl->query[tenGageEvalGrads/8] & (1 << (tenGageEvalGrads % 8)))) { |
809 | double matOut[9], tenOut[9], tmpRes[9], |
810 | rel1, rel2, w1, w2, eps; |
811 | unsigned int evi; |
812 | for (evi=0; evi<=2; evi++) { |
813 | ELL_3MV_OUTER(matOut, evecAns + evi*3, evecAns + evi*3)((((matOut)+0)[0] = ((evecAns + evi*3)[0])*((evecAns + evi*3) )[0], ((matOut)+0)[1] = ((evecAns + evi*3)[0])*((evecAns + evi *3))[1], ((matOut)+0)[2] = ((evecAns + evi*3)[0])*((evecAns + evi*3))[2]), (((matOut)+3)[0] = ((evecAns + evi*3)[1])*((evecAns + evi*3))[0], ((matOut)+3)[1] = ((evecAns + evi*3)[1])*((evecAns + evi*3))[1], ((matOut)+3)[2] = ((evecAns + evi*3)[1])*((evecAns + evi*3))[2]), (((matOut)+6)[0] = ((evecAns + evi*3)[2])*((evecAns + evi*3))[0], ((matOut)+6)[1] = ((evecAns + evi*3)[2])*((evecAns + evi*3))[1], ((matOut)+6)[2] = ((evecAns + evi*3)[2])*((evecAns + evi*3))[2])); |
814 | TEN_M2T(tenOut, matOut)( (tenOut)[1] = (matOut)[0], (tenOut)[2] = ((matOut)[1]+(matOut )[3])/2.0, (tenOut)[3] = ((matOut)[2]+(matOut)[6])/2.0, (tenOut )[4] = (matOut)[4], (tenOut)[5] = ((matOut)[5]+(matOut)[7])/2.0 , (tenOut)[6] = (matOut)[8] ); |
815 | ELL_3V_SET(tmpRes + evi*3,((tmpRes + evi*3)[0] = (( (tenOut)[1]*(gradDdXYZ + 0*7)[1] + 2 *(tenOut)[2]*(gradDdXYZ + 0*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 0*7)[3] + (tenOut)[4]*(gradDdXYZ + 0*7)[4] + 2*(tenOut)[5]*( gradDdXYZ + 0*7)[5] + (tenOut)[6]*(gradDdXYZ + 0*7)[6] )), (tmpRes + evi*3)[1] = (( (tenOut)[1]*(gradDdXYZ + 1*7)[1] + 2*(tenOut )[2]*(gradDdXYZ + 1*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 1*7)[3 ] + (tenOut)[4]*(gradDdXYZ + 1*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 1*7)[5] + (tenOut)[6]*(gradDdXYZ + 1*7)[6] )), (tmpRes + evi *3)[2] = (( (tenOut)[1]*(gradDdXYZ + 2*7)[1] + 2*(tenOut)[2]* (gradDdXYZ + 2*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 2*7)[3] + ( tenOut)[4]*(gradDdXYZ + 2*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 2 *7)[5] + (tenOut)[6]*(gradDdXYZ + 2*7)[6] ))) |
816 | TEN_T_DOT(tenOut, gradDdXYZ + 0*7),((tmpRes + evi*3)[0] = (( (tenOut)[1]*(gradDdXYZ + 0*7)[1] + 2 *(tenOut)[2]*(gradDdXYZ + 0*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 0*7)[3] + (tenOut)[4]*(gradDdXYZ + 0*7)[4] + 2*(tenOut)[5]*( gradDdXYZ + 0*7)[5] + (tenOut)[6]*(gradDdXYZ + 0*7)[6] )), (tmpRes + evi*3)[1] = (( (tenOut)[1]*(gradDdXYZ + 1*7)[1] + 2*(tenOut )[2]*(gradDdXYZ + 1*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 1*7)[3 ] + (tenOut)[4]*(gradDdXYZ + 1*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 1*7)[5] + (tenOut)[6]*(gradDdXYZ + 1*7)[6] )), (tmpRes + evi *3)[2] = (( (tenOut)[1]*(gradDdXYZ + 2*7)[1] + 2*(tenOut)[2]* (gradDdXYZ + 2*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 2*7)[3] + ( tenOut)[4]*(gradDdXYZ + 2*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 2 *7)[5] + (tenOut)[6]*(gradDdXYZ + 2*7)[6] ))) |
817 | TEN_T_DOT(tenOut, gradDdXYZ + 1*7),((tmpRes + evi*3)[0] = (( (tenOut)[1]*(gradDdXYZ + 0*7)[1] + 2 *(tenOut)[2]*(gradDdXYZ + 0*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 0*7)[3] + (tenOut)[4]*(gradDdXYZ + 0*7)[4] + 2*(tenOut)[5]*( gradDdXYZ + 0*7)[5] + (tenOut)[6]*(gradDdXYZ + 0*7)[6] )), (tmpRes + evi*3)[1] = (( (tenOut)[1]*(gradDdXYZ + 1*7)[1] + 2*(tenOut )[2]*(gradDdXYZ + 1*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 1*7)[3 ] + (tenOut)[4]*(gradDdXYZ + 1*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 1*7)[5] + (tenOut)[6]*(gradDdXYZ + 1*7)[6] )), (tmpRes + evi *3)[2] = (( (tenOut)[1]*(gradDdXYZ + 2*7)[1] + 2*(tenOut)[2]* (gradDdXYZ + 2*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 2*7)[3] + ( tenOut)[4]*(gradDdXYZ + 2*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 2 *7)[5] + (tenOut)[6]*(gradDdXYZ + 2*7)[6] ))) |
818 | TEN_T_DOT(tenOut, gradDdXYZ + 2*7))((tmpRes + evi*3)[0] = (( (tenOut)[1]*(gradDdXYZ + 0*7)[1] + 2 *(tenOut)[2]*(gradDdXYZ + 0*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 0*7)[3] + (tenOut)[4]*(gradDdXYZ + 0*7)[4] + 2*(tenOut)[5]*( gradDdXYZ + 0*7)[5] + (tenOut)[6]*(gradDdXYZ + 0*7)[6] )), (tmpRes + evi*3)[1] = (( (tenOut)[1]*(gradDdXYZ + 1*7)[1] + 2*(tenOut )[2]*(gradDdXYZ + 1*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 1*7)[3 ] + (tenOut)[4]*(gradDdXYZ + 1*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 1*7)[5] + (tenOut)[6]*(gradDdXYZ + 1*7)[6] )), (tmpRes + evi *3)[2] = (( (tenOut)[1]*(gradDdXYZ + 2*7)[1] + 2*(tenOut)[2]* (gradDdXYZ + 2*7)[2] + 2*(tenOut)[3]*(gradDdXYZ + 2*7)[3] + ( tenOut)[4]*(gradDdXYZ + 2*7)[4] + 2*(tenOut)[5]*(gradDdXYZ + 2 *7)[5] + (tenOut)[6]*(gradDdXYZ + 2*7)[6] ))); |
819 | } |
820 | |
821 | /* Added 2008-06-27: In case there are duplicate eigenvalues, |
822 | * average their derivatives to avoid visible artifacs in edge |
823 | * maps. Provide a smooth transition to the ill-defined case */ |
824 | eps=0.05; /* threshold at which we start the transition */ |
825 | |
826 | /* interpolation weights from relative eigenvalue distance */ |
827 | rel1=(evalAns[0]-evalAns[1])/(fabs(evalAns[0])+fabs(evalAns[1])); |
828 | rel2=(evalAns[1]-evalAns[2])/(fabs(evalAns[1])+fabs(evalAns[2])); |
829 | w1=rel1/eps-1; |
830 | w1*=w1; |
831 | w2=rel2/eps-1; |
832 | w2*=w2; |
833 | |
834 | if (rel1>eps) { |
835 | ELL_3V_COPY(pvl->directAnswer[tenGageEvalGrads], tmpRes)((pvl->directAnswer[tenGageEvalGrads])[0] = (tmpRes)[0], ( pvl->directAnswer[tenGageEvalGrads])[1] = (tmpRes)[1], (pvl ->directAnswer[tenGageEvalGrads])[2] = (tmpRes)[2]); |
836 | } else { |
837 | if (rel2>eps) { |
838 | ELL_3V_SCALE_ADD2(pvl->directAnswer[tenGageEvalGrads],((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1)*(tmpRes )[0] + (0.5*w1)*(tmpRes+3)[0], (pvl->directAnswer[tenGageEvalGrads ])[1] = (1-0.5*w1)*(tmpRes)[1] + (0.5*w1)*(tmpRes+3)[1], (pvl ->directAnswer[tenGageEvalGrads])[2] = (1-0.5*w1)*(tmpRes) [2] + (0.5*w1)*(tmpRes+3)[2]) |
839 | 1-0.5*w1, tmpRes, 0.5*w1, tmpRes+3)((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1)*(tmpRes )[0] + (0.5*w1)*(tmpRes+3)[0], (pvl->directAnswer[tenGageEvalGrads ])[1] = (1-0.5*w1)*(tmpRes)[1] + (0.5*w1)*(tmpRes+3)[1], (pvl ->directAnswer[tenGageEvalGrads])[2] = (1-0.5*w1)*(tmpRes) [2] + (0.5*w1)*(tmpRes+3)[2]); |
840 | } else { |
841 | ELL_3V_SCALE_ADD3(pvl->directAnswer[tenGageEvalGrads],((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1-w1*w2 /6.0)*(tmpRes)[0] + (0.5*w1-w1*w2/6.0)*(tmpRes+3)[0] + (w1*w2 /3.0)*(tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads]) [1] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[1] + (0.5*w1-w1*w2/6.0)*( tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes+6)[1], (pvl->directAnswer [tenGageEvalGrads])[2] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[2] + ( 0.5*w1-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes+6)[2]) |
842 | 1-0.5*w1-w1*w2/6.0, tmpRes,((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1-w1*w2 /6.0)*(tmpRes)[0] + (0.5*w1-w1*w2/6.0)*(tmpRes+3)[0] + (w1*w2 /3.0)*(tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads]) [1] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[1] + (0.5*w1-w1*w2/6.0)*( tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes+6)[1], (pvl->directAnswer [tenGageEvalGrads])[2] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[2] + ( 0.5*w1-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes+6)[2]) |
843 | 0.5*w1-w1*w2/6.0, tmpRes+3,((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1-w1*w2 /6.0)*(tmpRes)[0] + (0.5*w1-w1*w2/6.0)*(tmpRes+3)[0] + (w1*w2 /3.0)*(tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads]) [1] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[1] + (0.5*w1-w1*w2/6.0)*( tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes+6)[1], (pvl->directAnswer [tenGageEvalGrads])[2] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[2] + ( 0.5*w1-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes+6)[2]) |
844 | w1*w2/3.0, tmpRes+6)((pvl->directAnswer[tenGageEvalGrads])[0] = (1-0.5*w1-w1*w2 /6.0)*(tmpRes)[0] + (0.5*w1-w1*w2/6.0)*(tmpRes+3)[0] + (w1*w2 /3.0)*(tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads]) [1] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[1] + (0.5*w1-w1*w2/6.0)*( tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes+6)[1], (pvl->directAnswer [tenGageEvalGrads])[2] = (1-0.5*w1-w1*w2/6.0)*(tmpRes)[2] + ( 0.5*w1-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes+6)[2]); |
845 | } |
846 | } |
847 | |
848 | if (rel2>eps) { |
849 | ELL_3V_COPY(pvl->directAnswer[tenGageEvalGrads]+6, tmpRes+6)((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (tmpRes+6)[0 ], (pvl->directAnswer[tenGageEvalGrads]+6)[1] = (tmpRes+6) [1], (pvl->directAnswer[tenGageEvalGrads]+6)[2] = (tmpRes+ 6)[2]); |
850 | } else { |
851 | if (rel1>eps) { |
852 | ELL_3V_SCALE_ADD2(pvl->directAnswer[tenGageEvalGrads]+6,((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2)*( tmpRes+6)[0] + (0.5*w2)*(tmpRes+3)[0], (pvl->directAnswer[ tenGageEvalGrads]+6)[1] = (1-0.5*w2)*(tmpRes+6)[1] + (0.5*w2) *(tmpRes+3)[1], (pvl->directAnswer[tenGageEvalGrads]+6)[2] = (1-0.5*w2)*(tmpRes+6)[2] + (0.5*w2)*(tmpRes+3)[2]) |
853 | 1-0.5*w2, tmpRes+6, 0.5*w2, tmpRes+3)((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2)*( tmpRes+6)[0] + (0.5*w2)*(tmpRes+3)[0], (pvl->directAnswer[ tenGageEvalGrads]+6)[1] = (1-0.5*w2)*(tmpRes+6)[1] + (0.5*w2) *(tmpRes+3)[1], (pvl->directAnswer[tenGageEvalGrads]+6)[2] = (1-0.5*w2)*(tmpRes+6)[2] + (0.5*w2)*(tmpRes+3)[2]); |
854 | } else { |
855 | ELL_3V_SCALE_ADD3(pvl->directAnswer[tenGageEvalGrads]+6,((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2-w1 *w2/6.0)*(tmpRes+6)[0] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[0] + ( w1*w2/3.0)*(tmpRes)[0], (pvl->directAnswer[tenGageEvalGrads ]+6)[1] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[1] + (0.5*w2-w1*w2/ 6.0)*(tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes)[1], (pvl->directAnswer [tenGageEvalGrads]+6)[2] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[2] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes)[2] ) |
856 | 1-0.5*w2-w1*w2/6.0, tmpRes+6,((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2-w1 *w2/6.0)*(tmpRes+6)[0] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[0] + ( w1*w2/3.0)*(tmpRes)[0], (pvl->directAnswer[tenGageEvalGrads ]+6)[1] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[1] + (0.5*w2-w1*w2/ 6.0)*(tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes)[1], (pvl->directAnswer [tenGageEvalGrads]+6)[2] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[2] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes)[2] ) |
857 | 0.5*w2-w1*w2/6.0, tmpRes+3,((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2-w1 *w2/6.0)*(tmpRes+6)[0] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[0] + ( w1*w2/3.0)*(tmpRes)[0], (pvl->directAnswer[tenGageEvalGrads ]+6)[1] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[1] + (0.5*w2-w1*w2/ 6.0)*(tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes)[1], (pvl->directAnswer [tenGageEvalGrads]+6)[2] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[2] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes)[2] ) |
858 | w1*w2/3.0, tmpRes)((pvl->directAnswer[tenGageEvalGrads]+6)[0] = (1-0.5*w2-w1 *w2/6.0)*(tmpRes+6)[0] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[0] + ( w1*w2/3.0)*(tmpRes)[0], (pvl->directAnswer[tenGageEvalGrads ]+6)[1] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[1] + (0.5*w2-w1*w2/ 6.0)*(tmpRes+3)[1] + (w1*w2/3.0)*(tmpRes)[1], (pvl->directAnswer [tenGageEvalGrads]+6)[2] = (1-0.5*w2-w1*w2/6.0)*(tmpRes+6)[2] + (0.5*w2-w1*w2/6.0)*(tmpRes+3)[2] + (w1*w2/3.0)*(tmpRes)[2] ); |
859 | } |
860 | } |
861 | |
862 | ELL_3V_ADD3(pvl->directAnswer[tenGageEvalGrads]+3,((pvl->directAnswer[tenGageEvalGrads]+3)[0] = (tmpRes)[0] + (tmpRes+3)[0] + (tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads ]+3)[1] = (tmpRes)[1] + (tmpRes+3)[1] + (tmpRes+6)[1], (pvl-> directAnswer[tenGageEvalGrads]+3)[2] = (tmpRes)[2] + (tmpRes+ 3)[2] + (tmpRes+6)[2]) |
863 | tmpRes, tmpRes+3, tmpRes+6)((pvl->directAnswer[tenGageEvalGrads]+3)[0] = (tmpRes)[0] + (tmpRes+3)[0] + (tmpRes+6)[0], (pvl->directAnswer[tenGageEvalGrads ]+3)[1] = (tmpRes)[1] + (tmpRes+3)[1] + (tmpRes+6)[1], (pvl-> directAnswer[tenGageEvalGrads]+3)[2] = (tmpRes)[2] + (tmpRes+ 3)[2] + (tmpRes+6)[2]); |
864 | ELL_3V_ADD2(tmpRes, pvl->directAnswer[tenGageEvalGrads],((tmpRes)[0] = (pvl->directAnswer[tenGageEvalGrads])[0] + ( pvl->directAnswer[tenGageEvalGrads]+6)[0], (tmpRes)[1] = ( pvl->directAnswer[tenGageEvalGrads])[1] + (pvl->directAnswer [tenGageEvalGrads]+6)[1], (tmpRes)[2] = (pvl->directAnswer [tenGageEvalGrads])[2] + (pvl->directAnswer[tenGageEvalGrads ]+6)[2]) |
865 | pvl->directAnswer[tenGageEvalGrads]+6)((tmpRes)[0] = (pvl->directAnswer[tenGageEvalGrads])[0] + ( pvl->directAnswer[tenGageEvalGrads]+6)[0], (tmpRes)[1] = ( pvl->directAnswer[tenGageEvalGrads])[1] + (pvl->directAnswer [tenGageEvalGrads]+6)[1], (tmpRes)[2] = (pvl->directAnswer [tenGageEvalGrads])[2] + (pvl->directAnswer[tenGageEvalGrads ]+6)[2]); |
866 | ELL_3V_SUB(pvl->directAnswer[tenGageEvalGrads]+3,((pvl->directAnswer[tenGageEvalGrads]+3)[0] = (pvl->directAnswer [tenGageEvalGrads]+3)[0] - (tmpRes)[0], (pvl->directAnswer [tenGageEvalGrads]+3)[1] = (pvl->directAnswer[tenGageEvalGrads ]+3)[1] - (tmpRes)[1], (pvl->directAnswer[tenGageEvalGrads ]+3)[2] = (pvl->directAnswer[tenGageEvalGrads]+3)[2] - (tmpRes )[2]) |
867 | pvl->directAnswer[tenGageEvalGrads]+3,((pvl->directAnswer[tenGageEvalGrads]+3)[0] = (pvl->directAnswer [tenGageEvalGrads]+3)[0] - (tmpRes)[0], (pvl->directAnswer [tenGageEvalGrads]+3)[1] = (pvl->directAnswer[tenGageEvalGrads ]+3)[1] - (tmpRes)[1], (pvl->directAnswer[tenGageEvalGrads ]+3)[2] = (pvl->directAnswer[tenGageEvalGrads]+3)[2] - (tmpRes )[2]) |
868 | tmpRes)((pvl->directAnswer[tenGageEvalGrads]+3)[0] = (pvl->directAnswer [tenGageEvalGrads]+3)[0] - (tmpRes)[0], (pvl->directAnswer [tenGageEvalGrads]+3)[1] = (pvl->directAnswer[tenGageEvalGrads ]+3)[1] - (tmpRes)[1], (pvl->directAnswer[tenGageEvalGrads ]+3)[2] = (pvl->directAnswer[tenGageEvalGrads]+3)[2] - (tmpRes )[2]); /* l2 = trace - l1 - l3 */ |
869 | } |
870 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRotTans)(pvl->query[tenGageRotTans/8] & (1 << (tenGageRotTans % 8)))) { |
871 | double phi1[7], phi2[7], phi3[7]; |
872 | |
873 | tenRotationTangents_d(phi1, phi2, phi3, evecAns); |
874 | ELL_3V_SET(pvl->directAnswer[tenGageRotTans] + 0*3,((pvl->directAnswer[tenGageRotTans] + 0*3)[0] = (( (phi1)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi1)[3]*(gradDdXYZ + 0*7)[3] + (phi1)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi1)[5]*(gradDdXYZ + 0*7)[5] + (phi1)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[1 ] = (( (phi1)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 1*7)[3] + (phi1)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 1*7)[5] + (phi1)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[2 ] = (( (phi1)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 2*7)[3] + (phi1)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 2*7)[5] + (phi1)[6]*(gradDdXYZ + 2*7)[6] ))) |
875 | TEN_T_DOT(phi1, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageRotTans] + 0*3)[0] = (( (phi1)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi1)[3]*(gradDdXYZ + 0*7)[3] + (phi1)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi1)[5]*(gradDdXYZ + 0*7)[5] + (phi1)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[1 ] = (( (phi1)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 1*7)[3] + (phi1)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 1*7)[5] + (phi1)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[2 ] = (( (phi1)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 2*7)[3] + (phi1)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 2*7)[5] + (phi1)[6]*(gradDdXYZ + 2*7)[6] ))) |
876 | TEN_T_DOT(phi1, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageRotTans] + 0*3)[0] = (( (phi1)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi1)[3]*(gradDdXYZ + 0*7)[3] + (phi1)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi1)[5]*(gradDdXYZ + 0*7)[5] + (phi1)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[1 ] = (( (phi1)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 1*7)[3] + (phi1)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 1*7)[5] + (phi1)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[2 ] = (( (phi1)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 2*7)[3] + (phi1)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 2*7)[5] + (phi1)[6]*(gradDdXYZ + 2*7)[6] ))) |
877 | TEN_T_DOT(phi1, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageRotTans] + 0*3)[0] = (( (phi1)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi1)[3]*(gradDdXYZ + 0*7)[3] + (phi1)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi1)[5]*(gradDdXYZ + 0*7)[5] + (phi1)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[1 ] = (( (phi1)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 1*7)[3] + (phi1)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 1*7)[5] + (phi1)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 0*3)[2 ] = (( (phi1)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi1)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi1)[3]*(gradDdXYZ + 2*7)[3] + (phi1)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi1)[5]*(gradDdXYZ + 2*7)[5] + (phi1)[6]*(gradDdXYZ + 2*7)[6] ))); |
878 | ELL_3V_SET(pvl->directAnswer[tenGageRotTans] + 1*3,((pvl->directAnswer[tenGageRotTans] + 1*3)[0] = (( (phi2)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi2)[3]*(gradDdXYZ + 0*7)[3] + (phi2)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi2)[5]*(gradDdXYZ + 0*7)[5] + (phi2)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[1 ] = (( (phi2)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 1*7)[3] + (phi2)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 1*7)[5] + (phi2)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[2 ] = (( (phi2)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 2*7)[3] + (phi2)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 2*7)[5] + (phi2)[6]*(gradDdXYZ + 2*7)[6] ))) |
879 | TEN_T_DOT(phi2, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageRotTans] + 1*3)[0] = (( (phi2)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi2)[3]*(gradDdXYZ + 0*7)[3] + (phi2)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi2)[5]*(gradDdXYZ + 0*7)[5] + (phi2)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[1 ] = (( (phi2)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 1*7)[3] + (phi2)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 1*7)[5] + (phi2)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[2 ] = (( (phi2)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 2*7)[3] + (phi2)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 2*7)[5] + (phi2)[6]*(gradDdXYZ + 2*7)[6] ))) |
880 | TEN_T_DOT(phi2, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageRotTans] + 1*3)[0] = (( (phi2)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi2)[3]*(gradDdXYZ + 0*7)[3] + (phi2)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi2)[5]*(gradDdXYZ + 0*7)[5] + (phi2)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[1 ] = (( (phi2)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 1*7)[3] + (phi2)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 1*7)[5] + (phi2)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[2 ] = (( (phi2)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 2*7)[3] + (phi2)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 2*7)[5] + (phi2)[6]*(gradDdXYZ + 2*7)[6] ))) |
881 | TEN_T_DOT(phi2, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageRotTans] + 1*3)[0] = (( (phi2)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi2)[3]*(gradDdXYZ + 0*7)[3] + (phi2)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi2)[5]*(gradDdXYZ + 0*7)[5] + (phi2)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[1 ] = (( (phi2)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 1*7)[3] + (phi2)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 1*7)[5] + (phi2)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 1*3)[2 ] = (( (phi2)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi2)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi2)[3]*(gradDdXYZ + 2*7)[3] + (phi2)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi2)[5]*(gradDdXYZ + 2*7)[5] + (phi2)[6]*(gradDdXYZ + 2*7)[6] ))); |
882 | ELL_3V_SET(pvl->directAnswer[tenGageRotTans] + 2*3,((pvl->directAnswer[tenGageRotTans] + 2*3)[0] = (( (phi3)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi3)[3]*(gradDdXYZ + 0*7)[3] + (phi3)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi3)[5]*(gradDdXYZ + 0*7)[5] + (phi3)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[1 ] = (( (phi3)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 1*7)[3] + (phi3)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 1*7)[5] + (phi3)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[2 ] = (( (phi3)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 2*7)[3] + (phi3)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 2*7)[5] + (phi3)[6]*(gradDdXYZ + 2*7)[6] ))) |
883 | TEN_T_DOT(phi3, gradDdXYZ + 0*7),((pvl->directAnswer[tenGageRotTans] + 2*3)[0] = (( (phi3)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi3)[3]*(gradDdXYZ + 0*7)[3] + (phi3)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi3)[5]*(gradDdXYZ + 0*7)[5] + (phi3)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[1 ] = (( (phi3)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 1*7)[3] + (phi3)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 1*7)[5] + (phi3)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[2 ] = (( (phi3)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 2*7)[3] + (phi3)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 2*7)[5] + (phi3)[6]*(gradDdXYZ + 2*7)[6] ))) |
884 | TEN_T_DOT(phi3, gradDdXYZ + 1*7),((pvl->directAnswer[tenGageRotTans] + 2*3)[0] = (( (phi3)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi3)[3]*(gradDdXYZ + 0*7)[3] + (phi3)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi3)[5]*(gradDdXYZ + 0*7)[5] + (phi3)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[1 ] = (( (phi3)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 1*7)[3] + (phi3)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 1*7)[5] + (phi3)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[2 ] = (( (phi3)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 2*7)[3] + (phi3)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 2*7)[5] + (phi3)[6]*(gradDdXYZ + 2*7)[6] ))) |
885 | TEN_T_DOT(phi3, gradDdXYZ + 2*7))((pvl->directAnswer[tenGageRotTans] + 2*3)[0] = (( (phi3)[ 1]*(gradDdXYZ + 0*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 0*7)[2] + 2 *(phi3)[3]*(gradDdXYZ + 0*7)[3] + (phi3)[4]*(gradDdXYZ + 0*7) [4] + 2*(phi3)[5]*(gradDdXYZ + 0*7)[5] + (phi3)[6]*(gradDdXYZ + 0*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[1 ] = (( (phi3)[1]*(gradDdXYZ + 1*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 1*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 1*7)[3] + (phi3)[4]*(gradDdXYZ + 1*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 1*7)[5] + (phi3)[6]*(gradDdXYZ + 1*7)[6] )), (pvl->directAnswer[tenGageRotTans] + 2*3)[2 ] = (( (phi3)[1]*(gradDdXYZ + 2*7)[1] + 2*(phi3)[2]*(gradDdXYZ + 2*7)[2] + 2*(phi3)[3]*(gradDdXYZ + 2*7)[3] + (phi3)[4]*(gradDdXYZ + 2*7)[4] + 2*(phi3)[5]*(gradDdXYZ + 2*7)[5] + (phi3)[6]*(gradDdXYZ + 2*7)[6] ))); |
886 | } |
887 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRotTanMags)(pvl->query[tenGageRotTanMags/8] & (1 << (tenGageRotTanMags % 8)))) { |
888 | ELL_3V_SET(pvl->directAnswer[tenGageRotTanMags],((pvl->directAnswer[tenGageRotTanMags])[0] = ((sqrt((((pvl ->directAnswer[tenGageRotTans] + 0*3))[0]*((pvl->directAnswer [tenGageRotTans] + 0*3))[0] + ((pvl->directAnswer[tenGageRotTans ] + 0*3))[1]*((pvl->directAnswer[tenGageRotTans] + 0*3))[1 ] + ((pvl->directAnswer[tenGageRotTans] + 0*3))[2]*((pvl-> directAnswer[tenGageRotTans] + 0*3))[2])))), (pvl->directAnswer [tenGageRotTanMags])[1] = ((sqrt((((pvl->directAnswer[tenGageRotTans ] + 1*3))[0]*((pvl->directAnswer[tenGageRotTans] + 1*3))[0 ] + ((pvl->directAnswer[tenGageRotTans] + 1*3))[1]*((pvl-> directAnswer[tenGageRotTans] + 1*3))[1] + ((pvl->directAnswer [tenGageRotTans] + 1*3))[2]*((pvl->directAnswer[tenGageRotTans ] + 1*3))[2])))), (pvl->directAnswer[tenGageRotTanMags])[2 ] = ((sqrt((((pvl->directAnswer[tenGageRotTans] + 2*3))[0] *((pvl->directAnswer[tenGageRotTans] + 2*3))[0] + ((pvl-> directAnswer[tenGageRotTans] + 2*3))[1]*((pvl->directAnswer [tenGageRotTans] + 2*3))[1] + ((pvl->directAnswer[tenGageRotTans ] + 2*3))[2]*((pvl->directAnswer[tenGageRotTans] + 2*3))[2 ]))))) |
889 | ELL_3V_LEN(pvl->directAnswer[tenGageRotTans] + 0*3),((pvl->directAnswer[tenGageRotTanMags])[0] = ((sqrt((((pvl ->directAnswer[tenGageRotTans] + 0*3))[0]*((pvl->directAnswer [tenGageRotTans] + 0*3))[0] + ((pvl->directAnswer[tenGageRotTans ] + 0*3))[1]*((pvl->directAnswer[tenGageRotTans] + 0*3))[1 ] + ((pvl->directAnswer[tenGageRotTans] + 0*3))[2]*((pvl-> directAnswer[tenGageRotTans] + 0*3))[2])))), (pvl->directAnswer [tenGageRotTanMags])[1] = ((sqrt((((pvl->directAnswer[tenGageRotTans ] + 1*3))[0]*((pvl->directAnswer[tenGageRotTans] + 1*3))[0 ] + ((pvl->directAnswer[tenGageRotTans] + 1*3))[1]*((pvl-> directAnswer[tenGageRotTans] + 1*3))[1] + ((pvl->directAnswer [tenGageRotTans] + 1*3))[2]*((pvl->directAnswer[tenGageRotTans ] + 1*3))[2])))), (pvl->directAnswer[tenGageRotTanMags])[2 ] = ((sqrt((((pvl->directAnswer[tenGageRotTans] + 2*3))[0] *((pvl->directAnswer[tenGageRotTans] + 2*3))[0] + ((pvl-> directAnswer[tenGageRotTans] + 2*3))[1]*((pvl->directAnswer [tenGageRotTans] + 2*3))[1] + ((pvl->directAnswer[tenGageRotTans ] + 2*3))[2]*((pvl->directAnswer[tenGageRotTans] + 2*3))[2 ]))))) |
890 | ELL_3V_LEN(pvl->directAnswer[tenGageRotTans] + 1*3),((pvl->directAnswer[tenGageRotTanMags])[0] = ((sqrt((((pvl ->directAnswer[tenGageRotTans] + 0*3))[0]*((pvl->directAnswer [tenGageRotTans] + 0*3))[0] + ((pvl->directAnswer[tenGageRotTans ] + 0*3))[1]*((pvl->directAnswer[tenGageRotTans] + 0*3))[1 ] + ((pvl->directAnswer[tenGageRotTans] + 0*3))[2]*((pvl-> directAnswer[tenGageRotTans] + 0*3))[2])))), (pvl->directAnswer [tenGageRotTanMags])[1] = ((sqrt((((pvl->directAnswer[tenGageRotTans ] + 1*3))[0]*((pvl->directAnswer[tenGageRotTans] + 1*3))[0 ] + ((pvl->directAnswer[tenGageRotTans] + 1*3))[1]*((pvl-> directAnswer[tenGageRotTans] + 1*3))[1] + ((pvl->directAnswer [tenGageRotTans] + 1*3))[2]*((pvl->directAnswer[tenGageRotTans ] + 1*3))[2])))), (pvl->directAnswer[tenGageRotTanMags])[2 ] = ((sqrt((((pvl->directAnswer[tenGageRotTans] + 2*3))[0] *((pvl->directAnswer[tenGageRotTans] + 2*3))[0] + ((pvl-> directAnswer[tenGageRotTans] + 2*3))[1]*((pvl->directAnswer [tenGageRotTans] + 2*3))[1] + ((pvl->directAnswer[tenGageRotTans ] + 2*3))[2]*((pvl->directAnswer[tenGageRotTans] + 2*3))[2 ]))))) |
891 | ELL_3V_LEN(pvl->directAnswer[tenGageRotTans] + 2*3))((pvl->directAnswer[tenGageRotTanMags])[0] = ((sqrt((((pvl ->directAnswer[tenGageRotTans] + 0*3))[0]*((pvl->directAnswer [tenGageRotTans] + 0*3))[0] + ((pvl->directAnswer[tenGageRotTans ] + 0*3))[1]*((pvl->directAnswer[tenGageRotTans] + 0*3))[1 ] + ((pvl->directAnswer[tenGageRotTans] + 0*3))[2]*((pvl-> directAnswer[tenGageRotTans] + 0*3))[2])))), (pvl->directAnswer [tenGageRotTanMags])[1] = ((sqrt((((pvl->directAnswer[tenGageRotTans ] + 1*3))[0]*((pvl->directAnswer[tenGageRotTans] + 1*3))[0 ] + ((pvl->directAnswer[tenGageRotTans] + 1*3))[1]*((pvl-> directAnswer[tenGageRotTans] + 1*3))[1] + ((pvl->directAnswer [tenGageRotTans] + 1*3))[2]*((pvl->directAnswer[tenGageRotTans ] + 1*3))[2])))), (pvl->directAnswer[tenGageRotTanMags])[2 ] = ((sqrt((((pvl->directAnswer[tenGageRotTans] + 2*3))[0] *((pvl->directAnswer[tenGageRotTans] + 2*3))[0] + ((pvl-> directAnswer[tenGageRotTans] + 2*3))[1]*((pvl->directAnswer [tenGageRotTans] + 2*3))[1] + ((pvl->directAnswer[tenGageRotTans ] + 2*3))[2]*((pvl->directAnswer[tenGageRotTans] + 2*3))[2 ]))))); |
892 | } |
893 | /* --- C{l,p,a,lpmin}1 --- */ |
894 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1)(pvl->query[tenGageCl1/8] & (1 << (tenGageCl1 % 8 )))) { |
895 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Cl1); |
896 | pvl->directAnswer[tenGageCl1][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
897 | } |
898 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1)(pvl->query[tenGageCp1/8] & (1 << (tenGageCp1 % 8 )))) { |
899 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Cp1); |
900 | pvl->directAnswer[tenGageCp1][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
901 | } |
902 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1)(pvl->query[tenGageCa1/8] & (1 << (tenGageCa1 % 8 )))) { |
903 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Ca1); |
904 | pvl->directAnswer[tenGageCa1][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
905 | } |
906 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageClpmin1)(pvl->query[tenGageClpmin1/8] & (1 << (tenGageClpmin1 % 8)))) { |
907 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Clpmin1); |
908 | pvl->directAnswer[tenGageClpmin1][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
909 | } |
910 | /* --- C{l,p,a,lpmin}2 --- */ |
911 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl2)(pvl->query[tenGageCl2/8] & (1 << (tenGageCl2 % 8 )))) { |
912 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Cl2); |
913 | pvl->directAnswer[tenGageCl2][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
914 | } |
915 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp2)(pvl->query[tenGageCp2/8] & (1 << (tenGageCp2 % 8 )))) { |
916 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Cp2); |
917 | pvl->directAnswer[tenGageCp2][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
918 | } |
919 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa2)(pvl->query[tenGageCa2/8] & (1 << (tenGageCa2 % 8 )))) { |
920 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Ca2); |
921 | pvl->directAnswer[tenGageCa2][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
922 | } |
923 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageClpmin2)(pvl->query[tenGageClpmin2/8] & (1 << (tenGageClpmin2 % 8)))) { |
924 | tmp0 = tenAnisoEval_d(evalAns, tenAniso_Clpmin2); |
925 | pvl->directAnswer[tenGageClpmin2][0] = AIR_CLAMP(0, tmp0, 1)((tmp0) < (0) ? (0) : ((tmp0) > (1) ? (1) : (tmp0))); |
926 | } |
927 | /* --- Hessian madness (the derivative, not the soldier) --- */ |
928 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageHessian)(pvl->query[tenGageHessian/8] & (1 << (tenGageHessian % 8)))) { |
929 | /* done if doD2; still have to set up pointers */ |
930 | matTmp = pvl->directAnswer[tenGageHessian]; |
931 | hessDtA = matTmp + 1*9; |
932 | hessDtB = matTmp + 2*9; |
933 | hessDtC = matTmp + 3*9; |
934 | hessDtD = matTmp + 4*9; |
935 | hessDtE = matTmp + 5*9; |
936 | hessDtF = matTmp + 6*9; |
937 | } |
938 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceHessian)(pvl->query[tenGageTraceHessian/8] & (1 << (tenGageTraceHessian % 8)))) { |
939 | ELL_3M_SCALE_ADD3(pvl->directAnswer[tenGageTraceHessian],((((pvl->directAnswer[tenGageTraceHessian])+0)[0] = ((1.0) )*((hessDtA)+0)[0] + ((1.0))*((hessDtD)+0)[0] + ((1.0))*((hessDtF )+0)[0], ((pvl->directAnswer[tenGageTraceHessian])+0)[1] = ((1.0))*((hessDtA)+0)[1] + ((1.0))*((hessDtD)+0)[1] + ((1.0) )*((hessDtF)+0)[1], ((pvl->directAnswer[tenGageTraceHessian ])+0)[2] = ((1.0))*((hessDtA)+0)[2] + ((1.0))*((hessDtD)+0)[2 ] + ((1.0))*((hessDtF)+0)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+3)[0] = ((1.0))*((hessDtA)+3)[0] + ((1.0))*((hessDtD)+3)[0 ] + ((1.0))*((hessDtF)+3)[0], ((pvl->directAnswer[tenGageTraceHessian ])+3)[1] = ((1.0))*((hessDtA)+3)[1] + ((1.0))*((hessDtD)+3)[1 ] + ((1.0))*((hessDtF)+3)[1], ((pvl->directAnswer[tenGageTraceHessian ])+3)[2] = ((1.0))*((hessDtA)+3)[2] + ((1.0))*((hessDtD)+3)[2 ] + ((1.0))*((hessDtF)+3)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+6)[0] = ((1.0))*((hessDtA)+6)[0] + ((1.0))*((hessDtD)+6)[0 ] + ((1.0))*((hessDtF)+6)[0], ((pvl->directAnswer[tenGageTraceHessian ])+6)[1] = ((1.0))*((hessDtA)+6)[1] + ((1.0))*((hessDtD)+6)[1 ] + ((1.0))*((hessDtF)+6)[1], ((pvl->directAnswer[tenGageTraceHessian ])+6)[2] = ((1.0))*((hessDtA)+6)[2] + ((1.0))*((hessDtD)+6)[2 ] + ((1.0))*((hessDtF)+6)[2])) |
940 | 1.0, hessDtA,((((pvl->directAnswer[tenGageTraceHessian])+0)[0] = ((1.0) )*((hessDtA)+0)[0] + ((1.0))*((hessDtD)+0)[0] + ((1.0))*((hessDtF )+0)[0], ((pvl->directAnswer[tenGageTraceHessian])+0)[1] = ((1.0))*((hessDtA)+0)[1] + ((1.0))*((hessDtD)+0)[1] + ((1.0) )*((hessDtF)+0)[1], ((pvl->directAnswer[tenGageTraceHessian ])+0)[2] = ((1.0))*((hessDtA)+0)[2] + ((1.0))*((hessDtD)+0)[2 ] + ((1.0))*((hessDtF)+0)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+3)[0] = ((1.0))*((hessDtA)+3)[0] + ((1.0))*((hessDtD)+3)[0 ] + ((1.0))*((hessDtF)+3)[0], ((pvl->directAnswer[tenGageTraceHessian ])+3)[1] = ((1.0))*((hessDtA)+3)[1] + ((1.0))*((hessDtD)+3)[1 ] + ((1.0))*((hessDtF)+3)[1], ((pvl->directAnswer[tenGageTraceHessian ])+3)[2] = ((1.0))*((hessDtA)+3)[2] + ((1.0))*((hessDtD)+3)[2 ] + ((1.0))*((hessDtF)+3)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+6)[0] = ((1.0))*((hessDtA)+6)[0] + ((1.0))*((hessDtD)+6)[0 ] + ((1.0))*((hessDtF)+6)[0], ((pvl->directAnswer[tenGageTraceHessian ])+6)[1] = ((1.0))*((hessDtA)+6)[1] + ((1.0))*((hessDtD)+6)[1 ] + ((1.0))*((hessDtF)+6)[1], ((pvl->directAnswer[tenGageTraceHessian ])+6)[2] = ((1.0))*((hessDtA)+6)[2] + ((1.0))*((hessDtD)+6)[2 ] + ((1.0))*((hessDtF)+6)[2])) |
941 | 1.0, hessDtD,((((pvl->directAnswer[tenGageTraceHessian])+0)[0] = ((1.0) )*((hessDtA)+0)[0] + ((1.0))*((hessDtD)+0)[0] + ((1.0))*((hessDtF )+0)[0], ((pvl->directAnswer[tenGageTraceHessian])+0)[1] = ((1.0))*((hessDtA)+0)[1] + ((1.0))*((hessDtD)+0)[1] + ((1.0) )*((hessDtF)+0)[1], ((pvl->directAnswer[tenGageTraceHessian ])+0)[2] = ((1.0))*((hessDtA)+0)[2] + ((1.0))*((hessDtD)+0)[2 ] + ((1.0))*((hessDtF)+0)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+3)[0] = ((1.0))*((hessDtA)+3)[0] + ((1.0))*((hessDtD)+3)[0 ] + ((1.0))*((hessDtF)+3)[0], ((pvl->directAnswer[tenGageTraceHessian ])+3)[1] = ((1.0))*((hessDtA)+3)[1] + ((1.0))*((hessDtD)+3)[1 ] + ((1.0))*((hessDtF)+3)[1], ((pvl->directAnswer[tenGageTraceHessian ])+3)[2] = ((1.0))*((hessDtA)+3)[2] + ((1.0))*((hessDtD)+3)[2 ] + ((1.0))*((hessDtF)+3)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+6)[0] = ((1.0))*((hessDtA)+6)[0] + ((1.0))*((hessDtD)+6)[0 ] + ((1.0))*((hessDtF)+6)[0], ((pvl->directAnswer[tenGageTraceHessian ])+6)[1] = ((1.0))*((hessDtA)+6)[1] + ((1.0))*((hessDtD)+6)[1 ] + ((1.0))*((hessDtF)+6)[1], ((pvl->directAnswer[tenGageTraceHessian ])+6)[2] = ((1.0))*((hessDtA)+6)[2] + ((1.0))*((hessDtD)+6)[2 ] + ((1.0))*((hessDtF)+6)[2])) |
942 | 1.0, hessDtF)((((pvl->directAnswer[tenGageTraceHessian])+0)[0] = ((1.0) )*((hessDtA)+0)[0] + ((1.0))*((hessDtD)+0)[0] + ((1.0))*((hessDtF )+0)[0], ((pvl->directAnswer[tenGageTraceHessian])+0)[1] = ((1.0))*((hessDtA)+0)[1] + ((1.0))*((hessDtD)+0)[1] + ((1.0) )*((hessDtF)+0)[1], ((pvl->directAnswer[tenGageTraceHessian ])+0)[2] = ((1.0))*((hessDtA)+0)[2] + ((1.0))*((hessDtD)+0)[2 ] + ((1.0))*((hessDtF)+0)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+3)[0] = ((1.0))*((hessDtA)+3)[0] + ((1.0))*((hessDtD)+3)[0 ] + ((1.0))*((hessDtF)+3)[0], ((pvl->directAnswer[tenGageTraceHessian ])+3)[1] = ((1.0))*((hessDtA)+3)[1] + ((1.0))*((hessDtD)+3)[1 ] + ((1.0))*((hessDtF)+3)[1], ((pvl->directAnswer[tenGageTraceHessian ])+3)[2] = ((1.0))*((hessDtA)+3)[2] + ((1.0))*((hessDtD)+3)[2 ] + ((1.0))*((hessDtF)+3)[2]), (((pvl->directAnswer[tenGageTraceHessian ])+6)[0] = ((1.0))*((hessDtA)+6)[0] + ((1.0))*((hessDtD)+6)[0 ] + ((1.0))*((hessDtF)+6)[0], ((pvl->directAnswer[tenGageTraceHessian ])+6)[1] = ((1.0))*((hessDtA)+6)[1] + ((1.0))*((hessDtD)+6)[1 ] + ((1.0))*((hessDtF)+6)[1], ((pvl->directAnswer[tenGageTraceHessian ])+6)[2] = ((1.0))*((hessDtA)+6)[2] + ((1.0))*((hessDtD)+6)[2 ] + ((1.0))*((hessDtF)+6)[2])); |
943 | ELL_3M_SCALE(hessCbA, -1, pvl->directAnswer[tenGageTraceHessian])((((hessCbA)+0)[0] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+0)[0], ((hessCbA)+0)[1] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+0)[1], ((hessCbA)+0)[2] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+0)[2]), (((hessCbA)+3)[0] = ((-1))*((pvl->directAnswer[ tenGageTraceHessian])+3)[0], ((hessCbA)+3)[1] = ((-1))*((pvl-> directAnswer[tenGageTraceHessian])+3)[1], ((hessCbA)+3)[2] = ( (-1))*((pvl->directAnswer[tenGageTraceHessian])+3)[2]), (( (hessCbA)+6)[0] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+6)[0], ((hessCbA)+6)[1] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+6)[1], ((hessCbA)+6)[2] = ((-1))*((pvl->directAnswer[tenGageTraceHessian ])+6)[2])); |
944 | } |
945 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceHessianEvec)(pvl->query[tenGageTraceHessianEvec/8] & (1 << ( tenGageTraceHessianEvec % 8)))) { |
946 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageTraceHessianEval], |
947 | pvl->directAnswer[tenGageTraceHessianEvec], |
948 | pvl->directAnswer[tenGageTraceHessian], AIR_TRUE1); |
949 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceHessianEval)(pvl->query[tenGageTraceHessianEval/8] & (1 << ( tenGageTraceHessianEval % 8)))) { |
950 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageTraceHessianEval], |
951 | pvl->directAnswer[tenGageTraceHessian], AIR_TRUE1); |
952 | } |
953 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceHessianFrob)(pvl->query[tenGageTraceHessianFrob/8] & (1 << ( tenGageTraceHessianFrob % 8)))) { |
954 | pvl->directAnswer[tenGageTraceHessianFrob][0] |
955 | = ELL_3M_FROB(pvl->directAnswer[tenGageTraceHessian])(sqrt((((pvl->directAnswer[tenGageTraceHessian])+0)[0]*((pvl ->directAnswer[tenGageTraceHessian])+0)[0] + ((pvl->directAnswer [tenGageTraceHessian])+0)[1]*((pvl->directAnswer[tenGageTraceHessian ])+0)[1] + ((pvl->directAnswer[tenGageTraceHessian])+0)[2] *((pvl->directAnswer[tenGageTraceHessian])+0)[2]) + (((pvl ->directAnswer[tenGageTraceHessian])+3)[0]*((pvl->directAnswer [tenGageTraceHessian])+3)[0] + ((pvl->directAnswer[tenGageTraceHessian ])+3)[1]*((pvl->directAnswer[tenGageTraceHessian])+3)[1] + ((pvl->directAnswer[tenGageTraceHessian])+3)[2]*((pvl-> directAnswer[tenGageTraceHessian])+3)[2]) + (((pvl->directAnswer [tenGageTraceHessian])+6)[0]*((pvl->directAnswer[tenGageTraceHessian ])+6)[0] + ((pvl->directAnswer[tenGageTraceHessian])+6)[1] *((pvl->directAnswer[tenGageTraceHessian])+6)[1] + ((pvl-> directAnswer[tenGageTraceHessian])+6)[2]*((pvl->directAnswer [tenGageTraceHessian])+6)[2]))); |
956 | } |
957 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageBHessian)(pvl->query[tenGageBHessian/8] & (1 << (tenGageBHessian % 8)))) { |
958 | hessCbB = matTmp = pvl->directAnswer[tenGageBHessian]; |
959 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
960 | ELL_3M_SCALE_INCR(matTmp, dtB, hessDtB)((((matTmp)+0)[0] += ((dtB))*((hessDtB)+0)[0], ((matTmp)+0)[1 ] += ((dtB))*((hessDtB)+0)[1], ((matTmp)+0)[2] += ((dtB))*((hessDtB )+0)[2]), (((matTmp)+3)[0] += ((dtB))*((hessDtB)+3)[0], ((matTmp )+3)[1] += ((dtB))*((hessDtB)+3)[1], ((matTmp)+3)[2] += ((dtB ))*((hessDtB)+3)[2]), (((matTmp)+6)[0] += ((dtB))*((hessDtB)+ 6)[0], ((matTmp)+6)[1] += ((dtB))*((hessDtB)+6)[1], ((matTmp) +6)[2] += ((dtB))*((hessDtB)+6)[2])); |
961 | ELL_3M_SCALE_INCR(matTmp, dtC, hessDtC)((((matTmp)+0)[0] += ((dtC))*((hessDtC)+0)[0], ((matTmp)+0)[1 ] += ((dtC))*((hessDtC)+0)[1], ((matTmp)+0)[2] += ((dtC))*((hessDtC )+0)[2]), (((matTmp)+3)[0] += ((dtC))*((hessDtC)+3)[0], ((matTmp )+3)[1] += ((dtC))*((hessDtC)+3)[1], ((matTmp)+3)[2] += ((dtC ))*((hessDtC)+3)[2]), (((matTmp)+6)[0] += ((dtC))*((hessDtC)+ 6)[0], ((matTmp)+6)[1] += ((dtC))*((hessDtC)+6)[1], ((matTmp) +6)[2] += ((dtC))*((hessDtC)+6)[2])); |
962 | ELL_3M_SCALE_INCR(matTmp, dtE, hessDtE)((((matTmp)+0)[0] += ((dtE))*((hessDtE)+0)[0], ((matTmp)+0)[1 ] += ((dtE))*((hessDtE)+0)[1], ((matTmp)+0)[2] += ((dtE))*((hessDtE )+0)[2]), (((matTmp)+3)[0] += ((dtE))*((hessDtE)+3)[0], ((matTmp )+3)[1] += ((dtE))*((hessDtE)+3)[1], ((matTmp)+3)[2] += ((dtE ))*((hessDtE)+3)[2]), (((matTmp)+6)[0] += ((dtE))*((hessDtE)+ 6)[0], ((matTmp)+6)[1] += ((dtE))*((hessDtE)+6)[1], ((matTmp) +6)[2] += ((dtE))*((hessDtE)+6)[2])); |
963 | ELL_3MV_OUTER_INCR(matTmp, gradDtB, gradDtB)((((matTmp)+0)[0] += ((gradDtB)[0])*((gradDtB))[0], ((matTmp) +0)[1] += ((gradDtB)[0])*((gradDtB))[1], ((matTmp)+0)[2] += ( (gradDtB)[0])*((gradDtB))[2]), (((matTmp)+3)[0] += ((gradDtB) [1])*((gradDtB))[0], ((matTmp)+3)[1] += ((gradDtB)[1])*((gradDtB ))[1], ((matTmp)+3)[2] += ((gradDtB)[1])*((gradDtB))[2]), ((( matTmp)+6)[0] += ((gradDtB)[2])*((gradDtB))[0], ((matTmp)+6)[ 1] += ((gradDtB)[2])*((gradDtB))[1], ((matTmp)+6)[2] += ((gradDtB )[2])*((gradDtB))[2])); |
964 | ELL_3MV_OUTER_INCR(matTmp, gradDtC, gradDtC)((((matTmp)+0)[0] += ((gradDtC)[0])*((gradDtC))[0], ((matTmp) +0)[1] += ((gradDtC)[0])*((gradDtC))[1], ((matTmp)+0)[2] += ( (gradDtC)[0])*((gradDtC))[2]), (((matTmp)+3)[0] += ((gradDtC) [1])*((gradDtC))[0], ((matTmp)+3)[1] += ((gradDtC)[1])*((gradDtC ))[1], ((matTmp)+3)[2] += ((gradDtC)[1])*((gradDtC))[2]), ((( matTmp)+6)[0] += ((gradDtC)[2])*((gradDtC))[0], ((matTmp)+6)[ 1] += ((gradDtC)[2])*((gradDtC))[1], ((matTmp)+6)[2] += ((gradDtC )[2])*((gradDtC))[2])); |
965 | ELL_3MV_OUTER_INCR(matTmp, gradDtE, gradDtE)((((matTmp)+0)[0] += ((gradDtE)[0])*((gradDtE))[0], ((matTmp) +0)[1] += ((gradDtE)[0])*((gradDtE))[1], ((matTmp)+0)[2] += ( (gradDtE)[0])*((gradDtE))[2]), (((matTmp)+3)[0] += ((gradDtE) [1])*((gradDtE))[0], ((matTmp)+3)[1] += ((gradDtE)[1])*((gradDtE ))[1], ((matTmp)+3)[2] += ((gradDtE)[1])*((gradDtE))[2]), ((( matTmp)+6)[0] += ((gradDtE)[2])*((gradDtE))[0], ((matTmp)+6)[ 1] += ((gradDtE)[2])*((gradDtE))[1], ((matTmp)+6)[2] += ((gradDtE )[2])*((gradDtE))[2])); |
966 | ELL_3M_SCALE(matTmp, -2, matTmp)((((matTmp)+0)[0] = ((-2))*((matTmp)+0)[0], ((matTmp)+0)[1] = ((-2))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((-2))*((matTmp)+0 )[2]), (((matTmp)+3)[0] = ((-2))*((matTmp)+3)[0], ((matTmp)+3 )[1] = ((-2))*((matTmp)+3)[1], ((matTmp)+3)[2] = ((-2))*((matTmp )+3)[2]), (((matTmp)+6)[0] = ((-2))*((matTmp)+6)[0], ((matTmp )+6)[1] = ((-2))*((matTmp)+6)[1], ((matTmp)+6)[2] = ((-2))*(( matTmp)+6)[2])); |
967 | ELL_3MV_OUTER_INCR(matTmp, gradDtD, gradDtA)((((matTmp)+0)[0] += ((gradDtD)[0])*((gradDtA))[0], ((matTmp) +0)[1] += ((gradDtD)[0])*((gradDtA))[1], ((matTmp)+0)[2] += ( (gradDtD)[0])*((gradDtA))[2]), (((matTmp)+3)[0] += ((gradDtD) [1])*((gradDtA))[0], ((matTmp)+3)[1] += ((gradDtD)[1])*((gradDtA ))[1], ((matTmp)+3)[2] += ((gradDtD)[1])*((gradDtA))[2]), ((( matTmp)+6)[0] += ((gradDtD)[2])*((gradDtA))[0], ((matTmp)+6)[ 1] += ((gradDtD)[2])*((gradDtA))[1], ((matTmp)+6)[2] += ((gradDtD )[2])*((gradDtA))[2])); |
968 | ELL_3MV_OUTER_INCR(matTmp, gradDtF, gradDtA)((((matTmp)+0)[0] += ((gradDtF)[0])*((gradDtA))[0], ((matTmp) +0)[1] += ((gradDtF)[0])*((gradDtA))[1], ((matTmp)+0)[2] += ( (gradDtF)[0])*((gradDtA))[2]), (((matTmp)+3)[0] += ((gradDtF) [1])*((gradDtA))[0], ((matTmp)+3)[1] += ((gradDtF)[1])*((gradDtA ))[1], ((matTmp)+3)[2] += ((gradDtF)[1])*((gradDtA))[2]), ((( matTmp)+6)[0] += ((gradDtF)[2])*((gradDtA))[0], ((matTmp)+6)[ 1] += ((gradDtF)[2])*((gradDtA))[1], ((matTmp)+6)[2] += ((gradDtF )[2])*((gradDtA))[2])); |
969 | ELL_3MV_OUTER_INCR(matTmp, gradDtA, gradDtD)((((matTmp)+0)[0] += ((gradDtA)[0])*((gradDtD))[0], ((matTmp) +0)[1] += ((gradDtA)[0])*((gradDtD))[1], ((matTmp)+0)[2] += ( (gradDtA)[0])*((gradDtD))[2]), (((matTmp)+3)[0] += ((gradDtA) [1])*((gradDtD))[0], ((matTmp)+3)[1] += ((gradDtA)[1])*((gradDtD ))[1], ((matTmp)+3)[2] += ((gradDtA)[1])*((gradDtD))[2]), ((( matTmp)+6)[0] += ((gradDtA)[2])*((gradDtD))[0], ((matTmp)+6)[ 1] += ((gradDtA)[2])*((gradDtD))[1], ((matTmp)+6)[2] += ((gradDtA )[2])*((gradDtD))[2])); |
970 | ELL_3MV_OUTER_INCR(matTmp, gradDtF, gradDtD)((((matTmp)+0)[0] += ((gradDtF)[0])*((gradDtD))[0], ((matTmp) +0)[1] += ((gradDtF)[0])*((gradDtD))[1], ((matTmp)+0)[2] += ( (gradDtF)[0])*((gradDtD))[2]), (((matTmp)+3)[0] += ((gradDtF) [1])*((gradDtD))[0], ((matTmp)+3)[1] += ((gradDtF)[1])*((gradDtD ))[1], ((matTmp)+3)[2] += ((gradDtF)[1])*((gradDtD))[2]), ((( matTmp)+6)[0] += ((gradDtF)[2])*((gradDtD))[0], ((matTmp)+6)[ 1] += ((gradDtF)[2])*((gradDtD))[1], ((matTmp)+6)[2] += ((gradDtF )[2])*((gradDtD))[2])); |
971 | ELL_3MV_OUTER_INCR(matTmp, gradDtA, gradDtF)((((matTmp)+0)[0] += ((gradDtA)[0])*((gradDtF))[0], ((matTmp) +0)[1] += ((gradDtA)[0])*((gradDtF))[1], ((matTmp)+0)[2] += ( (gradDtA)[0])*((gradDtF))[2]), (((matTmp)+3)[0] += ((gradDtA) [1])*((gradDtF))[0], ((matTmp)+3)[1] += ((gradDtA)[1])*((gradDtF ))[1], ((matTmp)+3)[2] += ((gradDtA)[1])*((gradDtF))[2]), ((( matTmp)+6)[0] += ((gradDtA)[2])*((gradDtF))[0], ((matTmp)+6)[ 1] += ((gradDtA)[2])*((gradDtF))[1], ((matTmp)+6)[2] += ((gradDtA )[2])*((gradDtF))[2])); |
972 | ELL_3MV_OUTER_INCR(matTmp, gradDtD, gradDtF)((((matTmp)+0)[0] += ((gradDtD)[0])*((gradDtF))[0], ((matTmp) +0)[1] += ((gradDtD)[0])*((gradDtF))[1], ((matTmp)+0)[2] += ( (gradDtD)[0])*((gradDtF))[2]), (((matTmp)+3)[0] += ((gradDtD) [1])*((gradDtF))[0], ((matTmp)+3)[1] += ((gradDtD)[1])*((gradDtF ))[1], ((matTmp)+3)[2] += ((gradDtD)[1])*((gradDtF))[2]), ((( matTmp)+6)[0] += ((gradDtD)[2])*((gradDtF))[0], ((matTmp)+6)[ 1] += ((gradDtD)[2])*((gradDtF))[1], ((matTmp)+6)[2] += ((gradDtD )[2])*((gradDtF))[2])); |
973 | ELL_3M_SCALE_INCR(matTmp, dtD + dtF, hessDtA)((((matTmp)+0)[0] += ((dtD + dtF))*((hessDtA)+0)[0], ((matTmp )+0)[1] += ((dtD + dtF))*((hessDtA)+0)[1], ((matTmp)+0)[2] += ((dtD + dtF))*((hessDtA)+0)[2]), (((matTmp)+3)[0] += ((dtD + dtF))*((hessDtA)+3)[0], ((matTmp)+3)[1] += ((dtD + dtF))*((hessDtA )+3)[1], ((matTmp)+3)[2] += ((dtD + dtF))*((hessDtA)+3)[2]), ( ((matTmp)+6)[0] += ((dtD + dtF))*((hessDtA)+6)[0], ((matTmp)+ 6)[1] += ((dtD + dtF))*((hessDtA)+6)[1], ((matTmp)+6)[2] += ( (dtD + dtF))*((hessDtA)+6)[2])); |
974 | ELL_3M_SCALE_INCR(matTmp, dtA + dtF, hessDtD)((((matTmp)+0)[0] += ((dtA + dtF))*((hessDtD)+0)[0], ((matTmp )+0)[1] += ((dtA + dtF))*((hessDtD)+0)[1], ((matTmp)+0)[2] += ((dtA + dtF))*((hessDtD)+0)[2]), (((matTmp)+3)[0] += ((dtA + dtF))*((hessDtD)+3)[0], ((matTmp)+3)[1] += ((dtA + dtF))*((hessDtD )+3)[1], ((matTmp)+3)[2] += ((dtA + dtF))*((hessDtD)+3)[2]), ( ((matTmp)+6)[0] += ((dtA + dtF))*((hessDtD)+6)[0], ((matTmp)+ 6)[1] += ((dtA + dtF))*((hessDtD)+6)[1], ((matTmp)+6)[2] += ( (dtA + dtF))*((hessDtD)+6)[2])); |
975 | ELL_3M_SCALE_INCR(matTmp, dtA + dtD, hessDtF)((((matTmp)+0)[0] += ((dtA + dtD))*((hessDtF)+0)[0], ((matTmp )+0)[1] += ((dtA + dtD))*((hessDtF)+0)[1], ((matTmp)+0)[2] += ((dtA + dtD))*((hessDtF)+0)[2]), (((matTmp)+3)[0] += ((dtA + dtD))*((hessDtF)+3)[0], ((matTmp)+3)[1] += ((dtA + dtD))*((hessDtF )+3)[1], ((matTmp)+3)[2] += ((dtA + dtD))*((hessDtF)+3)[2]), ( ((matTmp)+6)[0] += ((dtA + dtD))*((hessDtF)+6)[0], ((matTmp)+ 6)[1] += ((dtA + dtD))*((hessDtF)+6)[1], ((matTmp)+6)[2] += ( (dtA + dtD))*((hessDtF)+6)[2])); |
976 | } |
977 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageDetHessian)(pvl->query[tenGageDetHessian/8] & (1 << (tenGageDetHessian % 8)))) { |
978 | double tmp[3]; |
979 | matTmp = pvl->directAnswer[tenGageDetHessian]; |
980 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
981 | ELL_3V_SCALE_ADD3(tmp, dtD, gradDtF,((tmp)[0] = (dtD)*(gradDtF)[0] + (dtF)*(gradDtD)[0] + (-2*dtE )*(gradDtE)[0], (tmp)[1] = (dtD)*(gradDtF)[1] + (dtF)*(gradDtD )[1] + (-2*dtE)*(gradDtE)[1], (tmp)[2] = (dtD)*(gradDtF)[2] + (dtF)*(gradDtD)[2] + (-2*dtE)*(gradDtE)[2]) |
982 | dtF, gradDtD,((tmp)[0] = (dtD)*(gradDtF)[0] + (dtF)*(gradDtD)[0] + (-2*dtE )*(gradDtE)[0], (tmp)[1] = (dtD)*(gradDtF)[1] + (dtF)*(gradDtD )[1] + (-2*dtE)*(gradDtE)[1], (tmp)[2] = (dtD)*(gradDtF)[2] + (dtF)*(gradDtD)[2] + (-2*dtE)*(gradDtE)[2]) |
983 | -2*dtE, gradDtE)((tmp)[0] = (dtD)*(gradDtF)[0] + (dtF)*(gradDtD)[0] + (-2*dtE )*(gradDtE)[0], (tmp)[1] = (dtD)*(gradDtF)[1] + (dtF)*(gradDtD )[1] + (-2*dtE)*(gradDtE)[1], (tmp)[2] = (dtD)*(gradDtF)[2] + (dtF)*(gradDtD)[2] + (-2*dtE)*(gradDtE)[2]); |
984 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtA)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtA))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtA))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtA))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtA)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtA))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtA))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtA))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtA ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtA))[2])); |
985 | ELL_3M_SCALE_INCR(matTmp, dtD*dtF - dtE*dtE, hessDtA)((((matTmp)+0)[0] += ((dtD*dtF - dtE*dtE))*((hessDtA)+0)[0], ( (matTmp)+0)[1] += ((dtD*dtF - dtE*dtE))*((hessDtA)+0)[1], ((matTmp )+0)[2] += ((dtD*dtF - dtE*dtE))*((hessDtA)+0)[2]), (((matTmp )+3)[0] += ((dtD*dtF - dtE*dtE))*((hessDtA)+3)[0], ((matTmp)+ 3)[1] += ((dtD*dtF - dtE*dtE))*((hessDtA)+3)[1], ((matTmp)+3) [2] += ((dtD*dtF - dtE*dtE))*((hessDtA)+3)[2]), (((matTmp)+6) [0] += ((dtD*dtF - dtE*dtE))*((hessDtA)+6)[0], ((matTmp)+6)[1 ] += ((dtD*dtF - dtE*dtE))*((hessDtA)+6)[1], ((matTmp)+6)[2] += ((dtD*dtF - dtE*dtE))*((hessDtA)+6)[2])); |
986 | ELL_3V_SCALE_ADD4(tmp, 2*dtC, gradDtE,((tmp)[0] = (2*dtC)*(gradDtE)[0] + (2*dtE)*(gradDtC)[0] + (-2 *dtB)*(gradDtF)[0] + (-2*dtF)*(gradDtB)[0], (tmp)[1] = (2*dtC )*(gradDtE)[1] + (2*dtE)*(gradDtC)[1] + (-2*dtB)*(gradDtF)[1] + (-2*dtF)*(gradDtB)[1], (tmp)[2] = (2*dtC)*(gradDtE)[2] + ( 2*dtE)*(gradDtC)[2] + (-2*dtB)*(gradDtF)[2] + (-2*dtF)*(gradDtB )[2]) |
987 | 2*dtE, gradDtC,((tmp)[0] = (2*dtC)*(gradDtE)[0] + (2*dtE)*(gradDtC)[0] + (-2 *dtB)*(gradDtF)[0] + (-2*dtF)*(gradDtB)[0], (tmp)[1] = (2*dtC )*(gradDtE)[1] + (2*dtE)*(gradDtC)[1] + (-2*dtB)*(gradDtF)[1] + (-2*dtF)*(gradDtB)[1], (tmp)[2] = (2*dtC)*(gradDtE)[2] + ( 2*dtE)*(gradDtC)[2] + (-2*dtB)*(gradDtF)[2] + (-2*dtF)*(gradDtB )[2]) |
988 | -2*dtB, gradDtF,((tmp)[0] = (2*dtC)*(gradDtE)[0] + (2*dtE)*(gradDtC)[0] + (-2 *dtB)*(gradDtF)[0] + (-2*dtF)*(gradDtB)[0], (tmp)[1] = (2*dtC )*(gradDtE)[1] + (2*dtE)*(gradDtC)[1] + (-2*dtB)*(gradDtF)[1] + (-2*dtF)*(gradDtB)[1], (tmp)[2] = (2*dtC)*(gradDtE)[2] + ( 2*dtE)*(gradDtC)[2] + (-2*dtB)*(gradDtF)[2] + (-2*dtF)*(gradDtB )[2]) |
989 | -2*dtF, gradDtB)((tmp)[0] = (2*dtC)*(gradDtE)[0] + (2*dtE)*(gradDtC)[0] + (-2 *dtB)*(gradDtF)[0] + (-2*dtF)*(gradDtB)[0], (tmp)[1] = (2*dtC )*(gradDtE)[1] + (2*dtE)*(gradDtC)[1] + (-2*dtB)*(gradDtF)[1] + (-2*dtF)*(gradDtB)[1], (tmp)[2] = (2*dtC)*(gradDtE)[2] + ( 2*dtE)*(gradDtC)[2] + (-2*dtB)*(gradDtF)[2] + (-2*dtF)*(gradDtB )[2]); |
990 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtB)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtB))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtB))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtB))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtB)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtB))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtB))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtB))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtB ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtB))[2])); |
991 | ELL_3M_SCALE_INCR(matTmp, 2*(dtC*dtE - dtB*dtF), hessDtB)((((matTmp)+0)[0] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB)+0)[ 0], ((matTmp)+0)[1] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB)+0 )[1], ((matTmp)+0)[2] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB) +0)[2]), (((matTmp)+3)[0] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+3)[0], ((matTmp)+3)[1] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+3)[1], ((matTmp)+3)[2] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+3)[2]), (((matTmp)+6)[0] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+6)[0], ((matTmp)+6)[1] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+6)[1], ((matTmp)+6)[2] += ((2*(dtC*dtE - dtB*dtF)))*((hessDtB )+6)[2])); |
992 | ELL_3V_SCALE_ADD4(tmp, 2*dtB, gradDtE,((tmp)[0] = (2*dtB)*(gradDtE)[0] + (2*dtE)*(gradDtB)[0] + (-2 *dtC)*(gradDtD)[0] + (-2*dtD)*(gradDtC)[0], (tmp)[1] = (2*dtB )*(gradDtE)[1] + (2*dtE)*(gradDtB)[1] + (-2*dtC)*(gradDtD)[1] + (-2*dtD)*(gradDtC)[1], (tmp)[2] = (2*dtB)*(gradDtE)[2] + ( 2*dtE)*(gradDtB)[2] + (-2*dtC)*(gradDtD)[2] + (-2*dtD)*(gradDtC )[2]) |
993 | 2*dtE, gradDtB,((tmp)[0] = (2*dtB)*(gradDtE)[0] + (2*dtE)*(gradDtB)[0] + (-2 *dtC)*(gradDtD)[0] + (-2*dtD)*(gradDtC)[0], (tmp)[1] = (2*dtB )*(gradDtE)[1] + (2*dtE)*(gradDtB)[1] + (-2*dtC)*(gradDtD)[1] + (-2*dtD)*(gradDtC)[1], (tmp)[2] = (2*dtB)*(gradDtE)[2] + ( 2*dtE)*(gradDtB)[2] + (-2*dtC)*(gradDtD)[2] + (-2*dtD)*(gradDtC )[2]) |
994 | -2*dtC, gradDtD,((tmp)[0] = (2*dtB)*(gradDtE)[0] + (2*dtE)*(gradDtB)[0] + (-2 *dtC)*(gradDtD)[0] + (-2*dtD)*(gradDtC)[0], (tmp)[1] = (2*dtB )*(gradDtE)[1] + (2*dtE)*(gradDtB)[1] + (-2*dtC)*(gradDtD)[1] + (-2*dtD)*(gradDtC)[1], (tmp)[2] = (2*dtB)*(gradDtE)[2] + ( 2*dtE)*(gradDtB)[2] + (-2*dtC)*(gradDtD)[2] + (-2*dtD)*(gradDtC )[2]) |
995 | -2*dtD, gradDtC)((tmp)[0] = (2*dtB)*(gradDtE)[0] + (2*dtE)*(gradDtB)[0] + (-2 *dtC)*(gradDtD)[0] + (-2*dtD)*(gradDtC)[0], (tmp)[1] = (2*dtB )*(gradDtE)[1] + (2*dtE)*(gradDtB)[1] + (-2*dtC)*(gradDtD)[1] + (-2*dtD)*(gradDtC)[1], (tmp)[2] = (2*dtB)*(gradDtE)[2] + ( 2*dtE)*(gradDtB)[2] + (-2*dtC)*(gradDtD)[2] + (-2*dtD)*(gradDtC )[2]); |
996 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtC)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtC))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtC))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtC))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtC)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtC))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtC))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtC))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtC ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtC))[2])); |
997 | ELL_3M_SCALE_INCR(matTmp, 2*(dtB*dtE - dtC*dtD), hessDtC)((((matTmp)+0)[0] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC)+0)[ 0], ((matTmp)+0)[1] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC)+0 )[1], ((matTmp)+0)[2] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC) +0)[2]), (((matTmp)+3)[0] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+3)[0], ((matTmp)+3)[1] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+3)[1], ((matTmp)+3)[2] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+3)[2]), (((matTmp)+6)[0] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+6)[0], ((matTmp)+6)[1] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+6)[1], ((matTmp)+6)[2] += ((2*(dtB*dtE - dtC*dtD)))*((hessDtC )+6)[2])); |
998 | ELL_3V_SCALE_ADD3(tmp, dtA, gradDtF,((tmp)[0] = (dtA)*(gradDtF)[0] + (dtF)*(gradDtA)[0] + (-2*dtC )*(gradDtC)[0], (tmp)[1] = (dtA)*(gradDtF)[1] + (dtF)*(gradDtA )[1] + (-2*dtC)*(gradDtC)[1], (tmp)[2] = (dtA)*(gradDtF)[2] + (dtF)*(gradDtA)[2] + (-2*dtC)*(gradDtC)[2]) |
999 | dtF, gradDtA,((tmp)[0] = (dtA)*(gradDtF)[0] + (dtF)*(gradDtA)[0] + (-2*dtC )*(gradDtC)[0], (tmp)[1] = (dtA)*(gradDtF)[1] + (dtF)*(gradDtA )[1] + (-2*dtC)*(gradDtC)[1], (tmp)[2] = (dtA)*(gradDtF)[2] + (dtF)*(gradDtA)[2] + (-2*dtC)*(gradDtC)[2]) |
1000 | -2*dtC, gradDtC)((tmp)[0] = (dtA)*(gradDtF)[0] + (dtF)*(gradDtA)[0] + (-2*dtC )*(gradDtC)[0], (tmp)[1] = (dtA)*(gradDtF)[1] + (dtF)*(gradDtA )[1] + (-2*dtC)*(gradDtC)[1], (tmp)[2] = (dtA)*(gradDtF)[2] + (dtF)*(gradDtA)[2] + (-2*dtC)*(gradDtC)[2]); |
1001 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtD)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtD))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtD))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtD))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtD)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtD))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtD))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtD))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtD ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtD))[2])); |
1002 | ELL_3M_SCALE_INCR(matTmp, dtA*dtF - dtC*dtC, hessDtD)((((matTmp)+0)[0] += ((dtA*dtF - dtC*dtC))*((hessDtD)+0)[0], ( (matTmp)+0)[1] += ((dtA*dtF - dtC*dtC))*((hessDtD)+0)[1], ((matTmp )+0)[2] += ((dtA*dtF - dtC*dtC))*((hessDtD)+0)[2]), (((matTmp )+3)[0] += ((dtA*dtF - dtC*dtC))*((hessDtD)+3)[0], ((matTmp)+ 3)[1] += ((dtA*dtF - dtC*dtC))*((hessDtD)+3)[1], ((matTmp)+3) [2] += ((dtA*dtF - dtC*dtC))*((hessDtD)+3)[2]), (((matTmp)+6) [0] += ((dtA*dtF - dtC*dtC))*((hessDtD)+6)[0], ((matTmp)+6)[1 ] += ((dtA*dtF - dtC*dtC))*((hessDtD)+6)[1], ((matTmp)+6)[2] += ((dtA*dtF - dtC*dtC))*((hessDtD)+6)[2])); |
1003 | ELL_3V_SCALE_ADD4(tmp, 2*dtB, gradDtC,((tmp)[0] = (2*dtB)*(gradDtC)[0] + (2*dtC)*(gradDtB)[0] + (-2 *dtA)*(gradDtE)[0] + (-2*dtE)*(gradDtA)[0], (tmp)[1] = (2*dtB )*(gradDtC)[1] + (2*dtC)*(gradDtB)[1] + (-2*dtA)*(gradDtE)[1] + (-2*dtE)*(gradDtA)[1], (tmp)[2] = (2*dtB)*(gradDtC)[2] + ( 2*dtC)*(gradDtB)[2] + (-2*dtA)*(gradDtE)[2] + (-2*dtE)*(gradDtA )[2]) |
1004 | 2*dtC, gradDtB,((tmp)[0] = (2*dtB)*(gradDtC)[0] + (2*dtC)*(gradDtB)[0] + (-2 *dtA)*(gradDtE)[0] + (-2*dtE)*(gradDtA)[0], (tmp)[1] = (2*dtB )*(gradDtC)[1] + (2*dtC)*(gradDtB)[1] + (-2*dtA)*(gradDtE)[1] + (-2*dtE)*(gradDtA)[1], (tmp)[2] = (2*dtB)*(gradDtC)[2] + ( 2*dtC)*(gradDtB)[2] + (-2*dtA)*(gradDtE)[2] + (-2*dtE)*(gradDtA )[2]) |
1005 | -2*dtA, gradDtE,((tmp)[0] = (2*dtB)*(gradDtC)[0] + (2*dtC)*(gradDtB)[0] + (-2 *dtA)*(gradDtE)[0] + (-2*dtE)*(gradDtA)[0], (tmp)[1] = (2*dtB )*(gradDtC)[1] + (2*dtC)*(gradDtB)[1] + (-2*dtA)*(gradDtE)[1] + (-2*dtE)*(gradDtA)[1], (tmp)[2] = (2*dtB)*(gradDtC)[2] + ( 2*dtC)*(gradDtB)[2] + (-2*dtA)*(gradDtE)[2] + (-2*dtE)*(gradDtA )[2]) |
1006 | -2*dtE, gradDtA)((tmp)[0] = (2*dtB)*(gradDtC)[0] + (2*dtC)*(gradDtB)[0] + (-2 *dtA)*(gradDtE)[0] + (-2*dtE)*(gradDtA)[0], (tmp)[1] = (2*dtB )*(gradDtC)[1] + (2*dtC)*(gradDtB)[1] + (-2*dtA)*(gradDtE)[1] + (-2*dtE)*(gradDtA)[1], (tmp)[2] = (2*dtB)*(gradDtC)[2] + ( 2*dtC)*(gradDtB)[2] + (-2*dtA)*(gradDtE)[2] + (-2*dtE)*(gradDtA )[2]); |
1007 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtE)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtE))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtE))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtE))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtE)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtE))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtE))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtE))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtE ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtE))[2])); |
1008 | ELL_3M_SCALE_INCR(matTmp, 2*(dtB*dtC - dtA*dtE), hessDtE)((((matTmp)+0)[0] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE)+0)[ 0], ((matTmp)+0)[1] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE)+0 )[1], ((matTmp)+0)[2] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE) +0)[2]), (((matTmp)+3)[0] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+3)[0], ((matTmp)+3)[1] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+3)[1], ((matTmp)+3)[2] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+3)[2]), (((matTmp)+6)[0] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+6)[0], ((matTmp)+6)[1] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+6)[1], ((matTmp)+6)[2] += ((2*(dtB*dtC - dtA*dtE)))*((hessDtE )+6)[2])); |
1009 | ELL_3V_SCALE_ADD3(tmp, dtA, gradDtD,((tmp)[0] = (dtA)*(gradDtD)[0] + (dtD)*(gradDtA)[0] + (-2*dtB )*(gradDtB)[0], (tmp)[1] = (dtA)*(gradDtD)[1] + (dtD)*(gradDtA )[1] + (-2*dtB)*(gradDtB)[1], (tmp)[2] = (dtA)*(gradDtD)[2] + (dtD)*(gradDtA)[2] + (-2*dtB)*(gradDtB)[2]) |
1010 | dtD, gradDtA,((tmp)[0] = (dtA)*(gradDtD)[0] + (dtD)*(gradDtA)[0] + (-2*dtB )*(gradDtB)[0], (tmp)[1] = (dtA)*(gradDtD)[1] + (dtD)*(gradDtA )[1] + (-2*dtB)*(gradDtB)[1], (tmp)[2] = (dtA)*(gradDtD)[2] + (dtD)*(gradDtA)[2] + (-2*dtB)*(gradDtB)[2]) |
1011 | -2*dtB, gradDtB)((tmp)[0] = (dtA)*(gradDtD)[0] + (dtD)*(gradDtA)[0] + (-2*dtB )*(gradDtB)[0], (tmp)[1] = (dtA)*(gradDtD)[1] + (dtD)*(gradDtA )[1] + (-2*dtB)*(gradDtB)[1], (tmp)[2] = (dtA)*(gradDtD)[2] + (dtD)*(gradDtA)[2] + (-2*dtB)*(gradDtB)[2]); |
1012 | ELL_3MV_OUTER_INCR(matTmp, tmp, gradDtF)((((matTmp)+0)[0] += ((tmp)[0])*((gradDtF))[0], ((matTmp)+0)[ 1] += ((tmp)[0])*((gradDtF))[1], ((matTmp)+0)[2] += ((tmp)[0] )*((gradDtF))[2]), (((matTmp)+3)[0] += ((tmp)[1])*((gradDtF)) [0], ((matTmp)+3)[1] += ((tmp)[1])*((gradDtF))[1], ((matTmp)+ 3)[2] += ((tmp)[1])*((gradDtF))[2]), (((matTmp)+6)[0] += ((tmp )[2])*((gradDtF))[0], ((matTmp)+6)[1] += ((tmp)[2])*((gradDtF ))[1], ((matTmp)+6)[2] += ((tmp)[2])*((gradDtF))[2])); |
1013 | ELL_3M_SCALE_INCR(matTmp, dtA*dtD - dtB*dtB, hessDtF)((((matTmp)+0)[0] += ((dtA*dtD - dtB*dtB))*((hessDtF)+0)[0], ( (matTmp)+0)[1] += ((dtA*dtD - dtB*dtB))*((hessDtF)+0)[1], ((matTmp )+0)[2] += ((dtA*dtD - dtB*dtB))*((hessDtF)+0)[2]), (((matTmp )+3)[0] += ((dtA*dtD - dtB*dtB))*((hessDtF)+3)[0], ((matTmp)+ 3)[1] += ((dtA*dtD - dtB*dtB))*((hessDtF)+3)[1], ((matTmp)+3) [2] += ((dtA*dtD - dtB*dtB))*((hessDtF)+3)[2]), (((matTmp)+6) [0] += ((dtA*dtD - dtB*dtB))*((hessDtF)+6)[0], ((matTmp)+6)[1 ] += ((dtA*dtD - dtB*dtB))*((hessDtF)+6)[1], ((matTmp)+6)[2] += ((dtA*dtD - dtB*dtB))*((hessDtF)+6)[2])); |
1014 | ELL_3M_SCALE(hessCbC, -1, pvl->directAnswer[tenGageDetHessian])((((hessCbC)+0)[0] = ((-1))*((pvl->directAnswer[tenGageDetHessian ])+0)[0], ((hessCbC)+0)[1] = ((-1))*((pvl->directAnswer[tenGageDetHessian ])+0)[1], ((hessCbC)+0)[2] = ((-1))*((pvl->directAnswer[tenGageDetHessian ])+0)[2]), (((hessCbC)+3)[0] = ((-1))*((pvl->directAnswer[ tenGageDetHessian])+3)[0], ((hessCbC)+3)[1] = ((-1))*((pvl-> directAnswer[tenGageDetHessian])+3)[1], ((hessCbC)+3)[2] = (( -1))*((pvl->directAnswer[tenGageDetHessian])+3)[2]), (((hessCbC )+6)[0] = ((-1))*((pvl->directAnswer[tenGageDetHessian])+6 )[0], ((hessCbC)+6)[1] = ((-1))*((pvl->directAnswer[tenGageDetHessian ])+6)[1], ((hessCbC)+6)[2] = ((-1))*((pvl->directAnswer[tenGageDetHessian ])+6)[2])); |
1015 | } |
1016 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageSHessian)(pvl->query[tenGageSHessian/8] & (1 << (tenGageSHessian % 8)))) { |
1017 | hessCbS = matTmp = pvl->directAnswer[tenGageSHessian]; |
1018 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
1019 | ELL_3M_SCALE_INCR(matTmp, dtB, hessDtB)((((matTmp)+0)[0] += ((dtB))*((hessDtB)+0)[0], ((matTmp)+0)[1 ] += ((dtB))*((hessDtB)+0)[1], ((matTmp)+0)[2] += ((dtB))*((hessDtB )+0)[2]), (((matTmp)+3)[0] += ((dtB))*((hessDtB)+3)[0], ((matTmp )+3)[1] += ((dtB))*((hessDtB)+3)[1], ((matTmp)+3)[2] += ((dtB ))*((hessDtB)+3)[2]), (((matTmp)+6)[0] += ((dtB))*((hessDtB)+ 6)[0], ((matTmp)+6)[1] += ((dtB))*((hessDtB)+6)[1], ((matTmp) +6)[2] += ((dtB))*((hessDtB)+6)[2])); |
1020 | ELL_3MV_OUTER_INCR(matTmp, gradDtB, gradDtB)((((matTmp)+0)[0] += ((gradDtB)[0])*((gradDtB))[0], ((matTmp) +0)[1] += ((gradDtB)[0])*((gradDtB))[1], ((matTmp)+0)[2] += ( (gradDtB)[0])*((gradDtB))[2]), (((matTmp)+3)[0] += ((gradDtB) [1])*((gradDtB))[0], ((matTmp)+3)[1] += ((gradDtB)[1])*((gradDtB ))[1], ((matTmp)+3)[2] += ((gradDtB)[1])*((gradDtB))[2]), ((( matTmp)+6)[0] += ((gradDtB)[2])*((gradDtB))[0], ((matTmp)+6)[ 1] += ((gradDtB)[2])*((gradDtB))[1], ((matTmp)+6)[2] += ((gradDtB )[2])*((gradDtB))[2])); |
1021 | ELL_3M_SCALE_INCR(matTmp, dtC, hessDtC)((((matTmp)+0)[0] += ((dtC))*((hessDtC)+0)[0], ((matTmp)+0)[1 ] += ((dtC))*((hessDtC)+0)[1], ((matTmp)+0)[2] += ((dtC))*((hessDtC )+0)[2]), (((matTmp)+3)[0] += ((dtC))*((hessDtC)+3)[0], ((matTmp )+3)[1] += ((dtC))*((hessDtC)+3)[1], ((matTmp)+3)[2] += ((dtC ))*((hessDtC)+3)[2]), (((matTmp)+6)[0] += ((dtC))*((hessDtC)+ 6)[0], ((matTmp)+6)[1] += ((dtC))*((hessDtC)+6)[1], ((matTmp) +6)[2] += ((dtC))*((hessDtC)+6)[2])); |
1022 | ELL_3MV_OUTER_INCR(matTmp, gradDtC, gradDtC)((((matTmp)+0)[0] += ((gradDtC)[0])*((gradDtC))[0], ((matTmp) +0)[1] += ((gradDtC)[0])*((gradDtC))[1], ((matTmp)+0)[2] += ( (gradDtC)[0])*((gradDtC))[2]), (((matTmp)+3)[0] += ((gradDtC) [1])*((gradDtC))[0], ((matTmp)+3)[1] += ((gradDtC)[1])*((gradDtC ))[1], ((matTmp)+3)[2] += ((gradDtC)[1])*((gradDtC))[2]), ((( matTmp)+6)[0] += ((gradDtC)[2])*((gradDtC))[0], ((matTmp)+6)[ 1] += ((gradDtC)[2])*((gradDtC))[1], ((matTmp)+6)[2] += ((gradDtC )[2])*((gradDtC))[2])); |
1023 | ELL_3M_SCALE_INCR(matTmp, dtE, hessDtE)((((matTmp)+0)[0] += ((dtE))*((hessDtE)+0)[0], ((matTmp)+0)[1 ] += ((dtE))*((hessDtE)+0)[1], ((matTmp)+0)[2] += ((dtE))*((hessDtE )+0)[2]), (((matTmp)+3)[0] += ((dtE))*((hessDtE)+3)[0], ((matTmp )+3)[1] += ((dtE))*((hessDtE)+3)[1], ((matTmp)+3)[2] += ((dtE ))*((hessDtE)+3)[2]), (((matTmp)+6)[0] += ((dtE))*((hessDtE)+ 6)[0], ((matTmp)+6)[1] += ((dtE))*((hessDtE)+6)[1], ((matTmp) +6)[2] += ((dtE))*((hessDtE)+6)[2])); |
1024 | ELL_3MV_OUTER_INCR(matTmp, gradDtE, gradDtE)((((matTmp)+0)[0] += ((gradDtE)[0])*((gradDtE))[0], ((matTmp) +0)[1] += ((gradDtE)[0])*((gradDtE))[1], ((matTmp)+0)[2] += ( (gradDtE)[0])*((gradDtE))[2]), (((matTmp)+3)[0] += ((gradDtE) [1])*((gradDtE))[0], ((matTmp)+3)[1] += ((gradDtE)[1])*((gradDtE ))[1], ((matTmp)+3)[2] += ((gradDtE)[1])*((gradDtE))[2]), ((( matTmp)+6)[0] += ((gradDtE)[2])*((gradDtE))[0], ((matTmp)+6)[ 1] += ((gradDtE)[2])*((gradDtE))[1], ((matTmp)+6)[2] += ((gradDtE )[2])*((gradDtE))[2])); |
1025 | ELL_3M_SCALE(matTmp, 2, matTmp)((((matTmp)+0)[0] = ((2))*((matTmp)+0)[0], ((matTmp)+0)[1] = ( (2))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((2))*((matTmp)+0)[2] ), (((matTmp)+3)[0] = ((2))*((matTmp)+3)[0], ((matTmp)+3)[1] = ((2))*((matTmp)+3)[1], ((matTmp)+3)[2] = ((2))*((matTmp)+3)[ 2]), (((matTmp)+6)[0] = ((2))*((matTmp)+6)[0], ((matTmp)+6)[1 ] = ((2))*((matTmp)+6)[1], ((matTmp)+6)[2] = ((2))*((matTmp)+ 6)[2])); |
1026 | ELL_3M_SCALE_INCR(matTmp, dtA, hessDtA)((((matTmp)+0)[0] += ((dtA))*((hessDtA)+0)[0], ((matTmp)+0)[1 ] += ((dtA))*((hessDtA)+0)[1], ((matTmp)+0)[2] += ((dtA))*((hessDtA )+0)[2]), (((matTmp)+3)[0] += ((dtA))*((hessDtA)+3)[0], ((matTmp )+3)[1] += ((dtA))*((hessDtA)+3)[1], ((matTmp)+3)[2] += ((dtA ))*((hessDtA)+3)[2]), (((matTmp)+6)[0] += ((dtA))*((hessDtA)+ 6)[0], ((matTmp)+6)[1] += ((dtA))*((hessDtA)+6)[1], ((matTmp) +6)[2] += ((dtA))*((hessDtA)+6)[2])); |
1027 | ELL_3MV_OUTER_INCR(matTmp, gradDtA, gradDtA)((((matTmp)+0)[0] += ((gradDtA)[0])*((gradDtA))[0], ((matTmp) +0)[1] += ((gradDtA)[0])*((gradDtA))[1], ((matTmp)+0)[2] += ( (gradDtA)[0])*((gradDtA))[2]), (((matTmp)+3)[0] += ((gradDtA) [1])*((gradDtA))[0], ((matTmp)+3)[1] += ((gradDtA)[1])*((gradDtA ))[1], ((matTmp)+3)[2] += ((gradDtA)[1])*((gradDtA))[2]), ((( matTmp)+6)[0] += ((gradDtA)[2])*((gradDtA))[0], ((matTmp)+6)[ 1] += ((gradDtA)[2])*((gradDtA))[1], ((matTmp)+6)[2] += ((gradDtA )[2])*((gradDtA))[2])); |
1028 | ELL_3M_SCALE_INCR(matTmp, dtD, hessDtD)((((matTmp)+0)[0] += ((dtD))*((hessDtD)+0)[0], ((matTmp)+0)[1 ] += ((dtD))*((hessDtD)+0)[1], ((matTmp)+0)[2] += ((dtD))*((hessDtD )+0)[2]), (((matTmp)+3)[0] += ((dtD))*((hessDtD)+3)[0], ((matTmp )+3)[1] += ((dtD))*((hessDtD)+3)[1], ((matTmp)+3)[2] += ((dtD ))*((hessDtD)+3)[2]), (((matTmp)+6)[0] += ((dtD))*((hessDtD)+ 6)[0], ((matTmp)+6)[1] += ((dtD))*((hessDtD)+6)[1], ((matTmp) +6)[2] += ((dtD))*((hessDtD)+6)[2])); |
1029 | ELL_3MV_OUTER_INCR(matTmp, gradDtD, gradDtD)((((matTmp)+0)[0] += ((gradDtD)[0])*((gradDtD))[0], ((matTmp) +0)[1] += ((gradDtD)[0])*((gradDtD))[1], ((matTmp)+0)[2] += ( (gradDtD)[0])*((gradDtD))[2]), (((matTmp)+3)[0] += ((gradDtD) [1])*((gradDtD))[0], ((matTmp)+3)[1] += ((gradDtD)[1])*((gradDtD ))[1], ((matTmp)+3)[2] += ((gradDtD)[1])*((gradDtD))[2]), ((( matTmp)+6)[0] += ((gradDtD)[2])*((gradDtD))[0], ((matTmp)+6)[ 1] += ((gradDtD)[2])*((gradDtD))[1], ((matTmp)+6)[2] += ((gradDtD )[2])*((gradDtD))[2])); |
1030 | ELL_3M_SCALE_INCR(matTmp, dtF, hessDtF)((((matTmp)+0)[0] += ((dtF))*((hessDtF)+0)[0], ((matTmp)+0)[1 ] += ((dtF))*((hessDtF)+0)[1], ((matTmp)+0)[2] += ((dtF))*((hessDtF )+0)[2]), (((matTmp)+3)[0] += ((dtF))*((hessDtF)+3)[0], ((matTmp )+3)[1] += ((dtF))*((hessDtF)+3)[1], ((matTmp)+3)[2] += ((dtF ))*((hessDtF)+3)[2]), (((matTmp)+6)[0] += ((dtF))*((hessDtF)+ 6)[0], ((matTmp)+6)[1] += ((dtF))*((hessDtF)+6)[1], ((matTmp) +6)[2] += ((dtF))*((hessDtF)+6)[2])); |
1031 | ELL_3MV_OUTER_INCR(matTmp, gradDtF, gradDtF)((((matTmp)+0)[0] += ((gradDtF)[0])*((gradDtF))[0], ((matTmp) +0)[1] += ((gradDtF)[0])*((gradDtF))[1], ((matTmp)+0)[2] += ( (gradDtF)[0])*((gradDtF))[2]), (((matTmp)+3)[0] += ((gradDtF) [1])*((gradDtF))[0], ((matTmp)+3)[1] += ((gradDtF)[1])*((gradDtF ))[1], ((matTmp)+3)[2] += ((gradDtF)[1])*((gradDtF))[2]), ((( matTmp)+6)[0] += ((gradDtF)[2])*((gradDtF))[0], ((matTmp)+6)[ 1] += ((gradDtF)[2])*((gradDtF))[1], ((matTmp)+6)[2] += ((gradDtF )[2])*((gradDtF))[2])); |
1032 | ELL_3M_SCALE(matTmp, 2, matTmp)((((matTmp)+0)[0] = ((2))*((matTmp)+0)[0], ((matTmp)+0)[1] = ( (2))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((2))*((matTmp)+0)[2] ), (((matTmp)+3)[0] = ((2))*((matTmp)+3)[0], ((matTmp)+3)[1] = ((2))*((matTmp)+3)[1], ((matTmp)+3)[2] = ((2))*((matTmp)+3)[ 2]), (((matTmp)+6)[0] = ((2))*((matTmp)+6)[0], ((matTmp)+6)[1 ] = ((2))*((matTmp)+6)[1], ((matTmp)+6)[2] = ((2))*((matTmp)+ 6)[2])); |
1033 | } |
1034 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageQHessian)(pvl->query[tenGageQHessian/8] & (1 << (tenGageQHessian % 8)))) { |
1035 | hessCbQ = pvl->directAnswer[tenGageQHessian]; |
1036 | ELL_3M_SCALE_ADD2(hessCbQ,((((hessCbQ)+0)[0] = ((1.0/9))*((hessCbS)+0)[0] + ((-1.0/9))* ((hessCbB)+0)[0], ((hessCbQ)+0)[1] = ((1.0/9))*((hessCbS)+0)[ 1] + ((-1.0/9))*((hessCbB)+0)[1], ((hessCbQ)+0)[2] = ((1.0/9) )*((hessCbS)+0)[2] + ((-1.0/9))*((hessCbB)+0)[2]), (((hessCbQ )+3)[0] = ((1.0/9))*((hessCbS)+3)[0] + ((-1.0/9))*((hessCbB)+ 3)[0], ((hessCbQ)+3)[1] = ((1.0/9))*((hessCbS)+3)[1] + ((-1.0 /9))*((hessCbB)+3)[1], ((hessCbQ)+3)[2] = ((1.0/9))*((hessCbS )+3)[2] + ((-1.0/9))*((hessCbB)+3)[2]), (((hessCbQ)+6)[0] = ( (1.0/9))*((hessCbS)+6)[0] + ((-1.0/9))*((hessCbB)+6)[0], ((hessCbQ )+6)[1] = ((1.0/9))*((hessCbS)+6)[1] + ((-1.0/9))*((hessCbB)+ 6)[1], ((hessCbQ)+6)[2] = ((1.0/9))*((hessCbS)+6)[2] + ((-1.0 /9))*((hessCbB)+6)[2])) |
1037 | 1.0/9, hessCbS,((((hessCbQ)+0)[0] = ((1.0/9))*((hessCbS)+0)[0] + ((-1.0/9))* ((hessCbB)+0)[0], ((hessCbQ)+0)[1] = ((1.0/9))*((hessCbS)+0)[ 1] + ((-1.0/9))*((hessCbB)+0)[1], ((hessCbQ)+0)[2] = ((1.0/9) )*((hessCbS)+0)[2] + ((-1.0/9))*((hessCbB)+0)[2]), (((hessCbQ )+3)[0] = ((1.0/9))*((hessCbS)+3)[0] + ((-1.0/9))*((hessCbB)+ 3)[0], ((hessCbQ)+3)[1] = ((1.0/9))*((hessCbS)+3)[1] + ((-1.0 /9))*((hessCbB)+3)[1], ((hessCbQ)+3)[2] = ((1.0/9))*((hessCbS )+3)[2] + ((-1.0/9))*((hessCbB)+3)[2]), (((hessCbQ)+6)[0] = ( (1.0/9))*((hessCbS)+6)[0] + ((-1.0/9))*((hessCbB)+6)[0], ((hessCbQ )+6)[1] = ((1.0/9))*((hessCbS)+6)[1] + ((-1.0/9))*((hessCbB)+ 6)[1], ((hessCbQ)+6)[2] = ((1.0/9))*((hessCbS)+6)[2] + ((-1.0 /9))*((hessCbB)+6)[2])) |
1038 | -1.0/9, hessCbB)((((hessCbQ)+0)[0] = ((1.0/9))*((hessCbS)+0)[0] + ((-1.0/9))* ((hessCbB)+0)[0], ((hessCbQ)+0)[1] = ((1.0/9))*((hessCbS)+0)[ 1] + ((-1.0/9))*((hessCbB)+0)[1], ((hessCbQ)+0)[2] = ((1.0/9) )*((hessCbS)+0)[2] + ((-1.0/9))*((hessCbB)+0)[2]), (((hessCbQ )+3)[0] = ((1.0/9))*((hessCbS)+3)[0] + ((-1.0/9))*((hessCbB)+ 3)[0], ((hessCbQ)+3)[1] = ((1.0/9))*((hessCbS)+3)[1] + ((-1.0 /9))*((hessCbB)+3)[1], ((hessCbQ)+3)[2] = ((1.0/9))*((hessCbS )+3)[2] + ((-1.0/9))*((hessCbB)+3)[2]), (((hessCbQ)+6)[0] = ( (1.0/9))*((hessCbS)+6)[0] + ((-1.0/9))*((hessCbB)+6)[0], ((hessCbQ )+6)[1] = ((1.0/9))*((hessCbS)+6)[1] + ((-1.0/9))*((hessCbB)+ 6)[1], ((hessCbQ)+6)[2] = ((1.0/9))*((hessCbS)+6)[2] + ((-1.0 /9))*((hessCbB)+6)[2])); |
1039 | } |
1040 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAHessian)(pvl->query[tenGageFAHessian/8] & (1 << (tenGageFAHessian % 8)))) { |
1041 | double tmpQ, rQ, orQ, oQ, tmpS, rS, orS, oS; |
1042 | tmpQ = AIR_MAX(0, cbQ)((0) > (cbQ) ? (0) : (cbQ)); |
1043 | tmpS = AIR_MAX(0, cbS)((0) > (cbS) ? (0) : (cbS)); |
1044 | oQ = tmpQ ? 1/tmpQ : 0; |
1045 | oS = tmpS ? 1/tmpS : 0; |
1046 | rQ = sqrt(tmpQ); |
1047 | rS = sqrt(tmpS); |
1048 | orQ = rQ ? 1/rQ : 0; |
1049 | orS = rS ? 1/rS : 0; |
1050 | matTmp = pvl->directAnswer[tenGageFAHessian]; |
1051 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
1052 | ELL_3M_SCALE_INCR(matTmp, orS*orQ, hessCbQ)((((matTmp)+0)[0] += ((orS*orQ))*((hessCbQ)+0)[0], ((matTmp)+ 0)[1] += ((orS*orQ))*((hessCbQ)+0)[1], ((matTmp)+0)[2] += ((orS *orQ))*((hessCbQ)+0)[2]), (((matTmp)+3)[0] += ((orS*orQ))*((hessCbQ )+3)[0], ((matTmp)+3)[1] += ((orS*orQ))*((hessCbQ)+3)[1], ((matTmp )+3)[2] += ((orS*orQ))*((hessCbQ)+3)[2]), (((matTmp)+6)[0] += ((orS*orQ))*((hessCbQ)+6)[0], ((matTmp)+6)[1] += ((orS*orQ)) *((hessCbQ)+6)[1], ((matTmp)+6)[2] += ((orS*orQ))*((hessCbQ)+ 6)[2])); |
1053 | ELL_3M_SCALE_INCR(matTmp, -rQ*orS*oS, hessCbS)((((matTmp)+0)[0] += ((-rQ*orS*oS))*((hessCbS)+0)[0], ((matTmp )+0)[1] += ((-rQ*orS*oS))*((hessCbS)+0)[1], ((matTmp)+0)[2] += ((-rQ*orS*oS))*((hessCbS)+0)[2]), (((matTmp)+3)[0] += ((-rQ* orS*oS))*((hessCbS)+3)[0], ((matTmp)+3)[1] += ((-rQ*orS*oS))* ((hessCbS)+3)[1], ((matTmp)+3)[2] += ((-rQ*orS*oS))*((hessCbS )+3)[2]), (((matTmp)+6)[0] += ((-rQ*orS*oS))*((hessCbS)+6)[0] , ((matTmp)+6)[1] += ((-rQ*orS*oS))*((hessCbS)+6)[1], ((matTmp )+6)[2] += ((-rQ*orS*oS))*((hessCbS)+6)[2])); |
1054 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -orS*orQ*oQ/2, gradCbQ, gradCbQ)((((matTmp)+0)[0] += ((-orS*orQ*oQ/2)*(gradCbQ)[0])*((gradCbQ ))[0], ((matTmp)+0)[1] += ((-orS*orQ*oQ/2)*(gradCbQ)[0])*((gradCbQ ))[1], ((matTmp)+0)[2] += ((-orS*orQ*oQ/2)*(gradCbQ)[0])*((gradCbQ ))[2]), (((matTmp)+3)[0] += ((-orS*orQ*oQ/2)*(gradCbQ)[1])*(( gradCbQ))[0], ((matTmp)+3)[1] += ((-orS*orQ*oQ/2)*(gradCbQ)[1 ])*((gradCbQ))[1], ((matTmp)+3)[2] += ((-orS*orQ*oQ/2)*(gradCbQ )[1])*((gradCbQ))[2]), (((matTmp)+6)[0] += ((-orS*orQ*oQ/2)*( gradCbQ)[2])*((gradCbQ))[0], ((matTmp)+6)[1] += ((-orS*orQ*oQ /2)*(gradCbQ)[2])*((gradCbQ))[1], ((matTmp)+6)[2] += ((-orS*orQ *oQ/2)*(gradCbQ)[2])*((gradCbQ))[2])); |
1055 | ELL_3MV_SCALE_OUTER_INCR(matTmp, 3*rQ*orS*oS*oS/2, gradCbS, gradCbS)((((matTmp)+0)[0] += ((3*rQ*orS*oS*oS/2)*(gradCbS)[0])*((gradCbS ))[0], ((matTmp)+0)[1] += ((3*rQ*orS*oS*oS/2)*(gradCbS)[0])*( (gradCbS))[1], ((matTmp)+0)[2] += ((3*rQ*orS*oS*oS/2)*(gradCbS )[0])*((gradCbS))[2]), (((matTmp)+3)[0] += ((3*rQ*orS*oS*oS/2 )*(gradCbS)[1])*((gradCbS))[0], ((matTmp)+3)[1] += ((3*rQ*orS *oS*oS/2)*(gradCbS)[1])*((gradCbS))[1], ((matTmp)+3)[2] += (( 3*rQ*orS*oS*oS/2)*(gradCbS)[1])*((gradCbS))[2]), (((matTmp)+6 )[0] += ((3*rQ*orS*oS*oS/2)*(gradCbS)[2])*((gradCbS))[0], ((matTmp )+6)[1] += ((3*rQ*orS*oS*oS/2)*(gradCbS)[2])*((gradCbS))[1], ( (matTmp)+6)[2] += ((3*rQ*orS*oS*oS/2)*(gradCbS)[2])*((gradCbS ))[2])); |
1056 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -orS*oS*orQ/2, gradCbS, gradCbQ)((((matTmp)+0)[0] += ((-orS*oS*orQ/2)*(gradCbS)[0])*((gradCbQ ))[0], ((matTmp)+0)[1] += ((-orS*oS*orQ/2)*(gradCbS)[0])*((gradCbQ ))[1], ((matTmp)+0)[2] += ((-orS*oS*orQ/2)*(gradCbS)[0])*((gradCbQ ))[2]), (((matTmp)+3)[0] += ((-orS*oS*orQ/2)*(gradCbS)[1])*(( gradCbQ))[0], ((matTmp)+3)[1] += ((-orS*oS*orQ/2)*(gradCbS)[1 ])*((gradCbQ))[1], ((matTmp)+3)[2] += ((-orS*oS*orQ/2)*(gradCbS )[1])*((gradCbQ))[2]), (((matTmp)+6)[0] += ((-orS*oS*orQ/2)*( gradCbS)[2])*((gradCbQ))[0], ((matTmp)+6)[1] += ((-orS*oS*orQ /2)*(gradCbS)[2])*((gradCbQ))[1], ((matTmp)+6)[2] += ((-orS*oS *orQ/2)*(gradCbS)[2])*((gradCbQ))[2])); |
1057 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -orQ*orS*oS/2, gradCbQ, gradCbS)((((matTmp)+0)[0] += ((-orQ*orS*oS/2)*(gradCbQ)[0])*((gradCbS ))[0], ((matTmp)+0)[1] += ((-orQ*orS*oS/2)*(gradCbQ)[0])*((gradCbS ))[1], ((matTmp)+0)[2] += ((-orQ*orS*oS/2)*(gradCbQ)[0])*((gradCbS ))[2]), (((matTmp)+3)[0] += ((-orQ*orS*oS/2)*(gradCbQ)[1])*(( gradCbS))[0], ((matTmp)+3)[1] += ((-orQ*orS*oS/2)*(gradCbQ)[1 ])*((gradCbS))[1], ((matTmp)+3)[2] += ((-orQ*orS*oS/2)*(gradCbQ )[1])*((gradCbS))[2]), (((matTmp)+6)[0] += ((-orQ*orS*oS/2)*( gradCbQ)[2])*((gradCbS))[0], ((matTmp)+6)[1] += ((-orQ*orS*oS /2)*(gradCbQ)[2])*((gradCbS))[1], ((matTmp)+6)[2] += ((-orQ*orS *oS/2)*(gradCbQ)[2])*((gradCbS))[2])); |
1058 | ELL_3M_SCALE(matTmp, 3.0/2, matTmp)((((matTmp)+0)[0] = ((3.0/2))*((matTmp)+0)[0], ((matTmp)+0)[1 ] = ((3.0/2))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((3.0/2))*(( matTmp)+0)[2]), (((matTmp)+3)[0] = ((3.0/2))*((matTmp)+3)[0], ((matTmp)+3)[1] = ((3.0/2))*((matTmp)+3)[1], ((matTmp)+3)[2] = ((3.0/2))*((matTmp)+3)[2]), (((matTmp)+6)[0] = ((3.0/2))*( (matTmp)+6)[0], ((matTmp)+6)[1] = ((3.0/2))*((matTmp)+6)[1], ( (matTmp)+6)[2] = ((3.0/2))*((matTmp)+6)[2])); |
1059 | } |
1060 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAHessianEvec)(pvl->query[tenGageFAHessianEvec/8] & (1 << (tenGageFAHessianEvec % 8)))) { |
1061 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageFAHessianEval], |
1062 | pvl->directAnswer[tenGageFAHessianEvec], |
1063 | pvl->directAnswer[tenGageFAHessian], AIR_TRUE1); |
1064 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAHessianEval)(pvl->query[tenGageFAHessianEval/8] & (1 << (tenGageFAHessianEval % 8)))) { |
1065 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageFAHessianEval], |
1066 | pvl->directAnswer[tenGageFAHessian], AIR_TRUE1); |
1067 | } |
1068 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAHessianFrob)(pvl->query[tenGageFAHessianFrob/8] & (1 << (tenGageFAHessianFrob % 8)))) { |
1069 | pvl->directAnswer[tenGageFAHessianFrob][0] |
1070 | = ELL_3M_FROB(pvl->directAnswer[tenGageFAHessian])(sqrt((((pvl->directAnswer[tenGageFAHessian])+0)[0]*((pvl-> directAnswer[tenGageFAHessian])+0)[0] + ((pvl->directAnswer [tenGageFAHessian])+0)[1]*((pvl->directAnswer[tenGageFAHessian ])+0)[1] + ((pvl->directAnswer[tenGageFAHessian])+0)[2]*(( pvl->directAnswer[tenGageFAHessian])+0)[2]) + (((pvl->directAnswer [tenGageFAHessian])+3)[0]*((pvl->directAnswer[tenGageFAHessian ])+3)[0] + ((pvl->directAnswer[tenGageFAHessian])+3)[1]*(( pvl->directAnswer[tenGageFAHessian])+3)[1] + ((pvl->directAnswer [tenGageFAHessian])+3)[2]*((pvl->directAnswer[tenGageFAHessian ])+3)[2]) + (((pvl->directAnswer[tenGageFAHessian])+6)[0]* ((pvl->directAnswer[tenGageFAHessian])+6)[0] + ((pvl->directAnswer [tenGageFAHessian])+6)[1]*((pvl->directAnswer[tenGageFAHessian ])+6)[1] + ((pvl->directAnswer[tenGageFAHessian])+6)[2]*(( pvl->directAnswer[tenGageFAHessian])+6)[2]))); |
1071 | } |
1072 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFARidgeSurfaceStrength)(pvl->query[tenGageFARidgeSurfaceStrength/8] & (1 << (tenGageFARidgeSurfaceStrength % 8)))) { |
1073 | double ev; |
1074 | ev = -pvl->directAnswer[tenGageFAHessianEval][2]; |
1075 | ev = AIR_MAX(0, ev)((0) > (ev) ? (0) : (ev)); |
1076 | pvl->directAnswer[tenGageFARidgeSurfaceStrength][0] = tenAns[0]*ev; |
1077 | } |
1078 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAValleySurfaceStrength)(pvl->query[tenGageFAValleySurfaceStrength/8] & (1 << (tenGageFAValleySurfaceStrength % 8)))) { |
1079 | double ev; |
1080 | ev = pvl->directAnswer[tenGageFAHessianEval][0]; |
1081 | ev = AIR_MAX(0, ev)((0) > (ev) ? (0) : (ev)); |
1082 | pvl->directAnswer[tenGageFAValleySurfaceStrength][0] = tenAns[0]*ev; |
1083 | } |
1084 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFALaplacian)(pvl->query[tenGageFALaplacian/8] & (1 << (tenGageFALaplacian % 8)))) { |
1085 | double *hess; |
1086 | hess = pvl->directAnswer[tenGageFAHessian]; |
1087 | pvl->directAnswer[tenGageFALaplacian][0] = hess[0] + hess[4] + hess[8]; |
1088 | } |
1089 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAHessianEvalMode)(pvl->query[tenGageFAHessianEvalMode/8] & (1 << ( tenGageFAHessianEvalMode % 8)))) { |
1090 | double *heval; |
1091 | heval = pvl->directAnswer[tenGageFAHessianEval]; |
1092 | pvl->directAnswer[tenGageFAHessianEvalMode][0] = airMode3_d(heval); |
1093 | } |
1094 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFARidgeLineAlignment)(pvl->query[tenGageFARidgeLineAlignment/8] & (1 << (tenGageFARidgeLineAlignment % 8)))) { |
1095 | double *hev0, *dev0, dot, mde; |
1096 | hev0 = pvl->directAnswer[tenGageFAHessianEvec0]; |
1097 | dev0 = pvl->directAnswer[tenGageEvec0]; |
1098 | dot = ELL_3V_DOT(hev0, dev0)((hev0)[0]*(dev0)[0] + (hev0)[1]*(dev0)[1] + (hev0)[2]*(dev0) [2]); |
1099 | mde = pvl->directAnswer[tenGageFAHessianEvalMode][0]; |
1100 | mde = AIR_AFFINE(-1, mde, 1, 0, 1)( ((double)(1)-(0))*((double)(mde)-(-1)) / ((double)(1)-(-1)) + (0)); |
1101 | pvl->directAnswer[tenGageFARidgeLineAlignment][0] = mde*dot*dot; |
1102 | } |
1103 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFARidgeSurfaceAlignment)(pvl->query[tenGageFARidgeSurfaceAlignment/8] & (1 << (tenGageFARidgeSurfaceAlignment % 8)))) { |
1104 | double *hev2, *dev0, dot, mde; |
1105 | hev2 = pvl->directAnswer[tenGageFAHessianEvec2]; |
1106 | dev0 = pvl->directAnswer[tenGageEvec0]; |
1107 | dot = ELL_3V_DOT(hev2, dev0)((hev2)[0]*(dev0)[0] + (hev2)[1]*(dev0)[1] + (hev2)[2]*(dev0) [2]); |
1108 | mde = pvl->directAnswer[tenGageFAHessianEvalMode][0]; |
1109 | mde = AIR_AFFINE(-1, mde, 1, 1, 0)( ((double)(0)-(1))*((double)(mde)-(-1)) / ((double)(1)-(-1)) + (1)); |
1110 | pvl->directAnswer[tenGageFARidgeSurfaceAlignment][0]= mde*(1-dot*dot); |
1111 | } |
1112 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFA2ndDD)(pvl->query[tenGageFA2ndDD/8] & (1 << (tenGageFA2ndDD % 8)))) { |
1113 | double *hess, *norm, tmpv[3]; |
1114 | hess = pvl->directAnswer[tenGageFAHessian]; |
1115 | norm = pvl->directAnswer[tenGageFANormal]; |
1116 | ELL_3MV_MUL(tmpv, hess, norm)((tmpv)[0] = (hess)[0]*(norm)[0] + (hess)[1]*(norm)[1] + (hess )[2]*(norm)[2], (tmpv)[1] = (hess)[3]*(norm)[0] + (hess)[4]*( norm)[1] + (hess)[5]*(norm)[2], (tmpv)[2] = (hess)[6]*(norm)[ 0] + (hess)[7]*(norm)[1] + (hess)[8]*(norm)[2]); |
1117 | pvl->directAnswer[tenGageFA2ndDD][0] = ELL_3V_DOT(norm, tmpv)((norm)[0]*(tmpv)[0] + (norm)[1]*(tmpv)[1] + (norm)[2]*(tmpv) [2]); |
1118 | } |
1119 | |
1120 | /* HEY: lots of this is copy/paste from gage/sclanswer.c */ |
1121 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGeomTens)(pvl->query[tenGageFAGeomTens/8] & (1 << (tenGageFAGeomTens % 8)))) { |
1122 | double denom, *fahess, *fagmag, tmpMat[9], *fnorm, nPerp[9], sHess[9]; |
1123 | |
1124 | fahess = pvl->directAnswer[tenGageFAHessian]; |
1125 | fagmag = pvl->directAnswer[tenGageFAGradMag]; |
1126 | fnorm = pvl->directAnswer[tenGageFANormal]; |
1127 | denom = (*fagmag) ? 1.0/(*fagmag) : 0.0; |
1128 | ELL_3M_SCALE(sHess, denom, fahess)((((sHess)+0)[0] = ((denom))*((fahess)+0)[0], ((sHess)+0)[1] = ((denom))*((fahess)+0)[1], ((sHess)+0)[2] = ((denom))*((fahess )+0)[2]), (((sHess)+3)[0] = ((denom))*((fahess)+3)[0], ((sHess )+3)[1] = ((denom))*((fahess)+3)[1], ((sHess)+3)[2] = ((denom ))*((fahess)+3)[2]), (((sHess)+6)[0] = ((denom))*((fahess)+6) [0], ((sHess)+6)[1] = ((denom))*((fahess)+6)[1], ((sHess)+6)[ 2] = ((denom))*((fahess)+6)[2])); |
1129 | ELL_3M_IDENTITY_SET(nPerp)((((nPerp)+0)[0] = (1), ((nPerp)+0)[1] = (0), ((nPerp)+0)[2] = (0)), (((nPerp)+3)[0] = (0), ((nPerp)+3)[1] = (1), ((nPerp)+ 3)[2] = (0)), (((nPerp)+6)[0] = (0), ((nPerp)+6)[1] = (0), (( nPerp)+6)[2] = (1))); |
1130 | ELL_3MV_SCALE_OUTER_INCR(nPerp, -1, fnorm, fnorm)((((nPerp)+0)[0] += ((-1)*(fnorm)[0])*((fnorm))[0], ((nPerp)+ 0)[1] += ((-1)*(fnorm)[0])*((fnorm))[1], ((nPerp)+0)[2] += (( -1)*(fnorm)[0])*((fnorm))[2]), (((nPerp)+3)[0] += ((-1)*(fnorm )[1])*((fnorm))[0], ((nPerp)+3)[1] += ((-1)*(fnorm)[1])*((fnorm ))[1], ((nPerp)+3)[2] += ((-1)*(fnorm)[1])*((fnorm))[2]), ((( nPerp)+6)[0] += ((-1)*(fnorm)[2])*((fnorm))[0], ((nPerp)+6)[1 ] += ((-1)*(fnorm)[2])*((fnorm))[1], ((nPerp)+6)[2] += ((-1)* (fnorm)[2])*((fnorm))[2])); |
1131 | /* gten = nPerp * sHess * nPerp */ |
1132 | ELL_3M_MUL(tmpMat, sHess, nPerp)((tmpMat)[0] = (sHess)[0]*(nPerp)[0] + (sHess)[1]*(nPerp)[3] + (sHess)[2]*(nPerp)[6], (tmpMat)[1] = (sHess)[0]*(nPerp)[1] + (sHess)[1]*(nPerp)[4] + (sHess)[2]*(nPerp)[7], (tmpMat)[2] = (sHess)[0]*(nPerp)[2] + (sHess)[1]*(nPerp)[5] + (sHess)[2]*( nPerp)[8], (tmpMat)[3] = (sHess)[3]*(nPerp)[0] + (sHess)[4]*( nPerp)[3] + (sHess)[5]*(nPerp)[6], (tmpMat)[4] = (sHess)[3]*( nPerp)[1] + (sHess)[4]*(nPerp)[4] + (sHess)[5]*(nPerp)[7], (tmpMat )[5] = (sHess)[3]*(nPerp)[2] + (sHess)[4]*(nPerp)[5] + (sHess )[5]*(nPerp)[8], (tmpMat)[6] = (sHess)[6]*(nPerp)[0] + (sHess )[7]*(nPerp)[3] + (sHess)[8]*(nPerp)[6], (tmpMat)[7] = (sHess )[6]*(nPerp)[1] + (sHess)[7]*(nPerp)[4] + (sHess)[8]*(nPerp)[ 7], (tmpMat)[8] = (sHess)[6]*(nPerp)[2] + (sHess)[7]*(nPerp)[ 5] + (sHess)[8]*(nPerp)[8]); |
1133 | ELL_3M_MUL(pvl->directAnswer[tenGageFAGeomTens], nPerp, tmpMat)((pvl->directAnswer[tenGageFAGeomTens])[0] = (nPerp)[0]*(tmpMat )[0] + (nPerp)[1]*(tmpMat)[3] + (nPerp)[2]*(tmpMat)[6], (pvl-> directAnswer[tenGageFAGeomTens])[1] = (nPerp)[0]*(tmpMat)[1] + (nPerp)[1]*(tmpMat)[4] + (nPerp)[2]*(tmpMat)[7], (pvl->directAnswer [tenGageFAGeomTens])[2] = (nPerp)[0]*(tmpMat)[2] + (nPerp)[1] *(tmpMat)[5] + (nPerp)[2]*(tmpMat)[8], (pvl->directAnswer[ tenGageFAGeomTens])[3] = (nPerp)[3]*(tmpMat)[0] + (nPerp)[4]* (tmpMat)[3] + (nPerp)[5]*(tmpMat)[6], (pvl->directAnswer[tenGageFAGeomTens ])[4] = (nPerp)[3]*(tmpMat)[1] + (nPerp)[4]*(tmpMat)[4] + (nPerp )[5]*(tmpMat)[7], (pvl->directAnswer[tenGageFAGeomTens])[5 ] = (nPerp)[3]*(tmpMat)[2] + (nPerp)[4]*(tmpMat)[5] + (nPerp) [5]*(tmpMat)[8], (pvl->directAnswer[tenGageFAGeomTens])[6] = (nPerp)[6]*(tmpMat)[0] + (nPerp)[7]*(tmpMat)[3] + (nPerp)[ 8]*(tmpMat)[6], (pvl->directAnswer[tenGageFAGeomTens])[7] = (nPerp)[6]*(tmpMat)[1] + (nPerp)[7]*(tmpMat)[4] + (nPerp)[8] *(tmpMat)[7], (pvl->directAnswer[tenGageFAGeomTens])[8] = ( nPerp)[6]*(tmpMat)[2] + (nPerp)[7]*(tmpMat)[5] + (nPerp)[8]*( tmpMat)[8]); |
1134 | } |
1135 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFATotalCurv)(pvl->query[tenGageFATotalCurv/8] & (1 << (tenGageFATotalCurv % 8)))) { |
1136 | pvl->directAnswer[tenGageFATotalCurv][0] = |
1137 | ELL_3M_FROB(pvl->directAnswer[tenGageFAGeomTens])(sqrt((((pvl->directAnswer[tenGageFAGeomTens])+0)[0]*((pvl ->directAnswer[tenGageFAGeomTens])+0)[0] + ((pvl->directAnswer [tenGageFAGeomTens])+0)[1]*((pvl->directAnswer[tenGageFAGeomTens ])+0)[1] + ((pvl->directAnswer[tenGageFAGeomTens])+0)[2]*( (pvl->directAnswer[tenGageFAGeomTens])+0)[2]) + (((pvl-> directAnswer[tenGageFAGeomTens])+3)[0]*((pvl->directAnswer [tenGageFAGeomTens])+3)[0] + ((pvl->directAnswer[tenGageFAGeomTens ])+3)[1]*((pvl->directAnswer[tenGageFAGeomTens])+3)[1] + ( (pvl->directAnswer[tenGageFAGeomTens])+3)[2]*((pvl->directAnswer [tenGageFAGeomTens])+3)[2]) + (((pvl->directAnswer[tenGageFAGeomTens ])+6)[0]*((pvl->directAnswer[tenGageFAGeomTens])+6)[0] + ( (pvl->directAnswer[tenGageFAGeomTens])+6)[1]*((pvl->directAnswer [tenGageFAGeomTens])+6)[1] + ((pvl->directAnswer[tenGageFAGeomTens ])+6)[2]*((pvl->directAnswer[tenGageFAGeomTens])+6)[2]))); |
1138 | } |
1139 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAKappa1)(pvl->query[tenGageFAKappa1/8] & (1 << (tenGageFAKappa1 % 8))) || |
1140 | GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAKappa2)(pvl->query[tenGageFAKappa2/8] & (1 << (tenGageFAKappa2 % 8)))) { |
1141 | double *k1, *k2, T, N, D; |
1142 | k1 = pvl->directAnswer[tenGageFAKappa1]; |
1143 | k2 = pvl->directAnswer[tenGageFAKappa2]; |
1144 | T = ELL_3M_TRACE(pvl->directAnswer[tenGageFAGeomTens])((pvl->directAnswer[tenGageFAGeomTens])[0] + (pvl->directAnswer [tenGageFAGeomTens])[4] + (pvl->directAnswer[tenGageFAGeomTens ])[8]); |
1145 | N = pvl->directAnswer[tenGageFATotalCurv][0]; |
1146 | D = 2*N*N - T*T; |
1147 | D = AIR_MAX(D, 0)((D) > (0) ? (D) : (0)); |
1148 | D = sqrt(D); |
1149 | k1[0] = 0.5*(T + D); |
1150 | k2[0] = 0.5*(T - D); |
1151 | } |
1152 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAMeanCurv)(pvl->query[tenGageFAMeanCurv/8] & (1 << (tenGageFAMeanCurv % 8)))) { |
1153 | double k1, k2; |
1154 | k1 = pvl->directAnswer[tenGageFAKappa1][0]; |
1155 | k2 = pvl->directAnswer[tenGageFAKappa2][0]; |
1156 | pvl->directAnswer[tenGageFAMeanCurv][0] = (k1 + k2)/2; |
1157 | } |
1158 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAShapeIndex)(pvl->query[tenGageFAShapeIndex/8] & (1 << (tenGageFAShapeIndex % 8)))) { |
1159 | double k1, k2; |
1160 | k1 = pvl->directAnswer[tenGageFAKappa1][0]; |
1161 | k2 = pvl->directAnswer[tenGageFAKappa2][0]; |
1162 | pvl->directAnswer[tenGageFAShapeIndex][0] = |
1163 | -(2/AIR_PI3.14159265358979323846)*atan2(k1 + k2, k1 - k2); |
1164 | } |
1165 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGaussCurv)(pvl->query[tenGageFAGaussCurv/8] & (1 << (tenGageFAGaussCurv % 8)))) { |
1166 | double k1, k2; |
1167 | k1 = pvl->directAnswer[tenGageFAKappa1][0]; |
1168 | k2 = pvl->directAnswer[tenGageFAKappa2][0]; |
1169 | pvl->directAnswer[tenGageFAGaussCurv][0] = k1*k2; |
1170 | } |
1171 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFACurvDir1)(pvl->query[tenGageFACurvDir1/8] & (1 << (tenGageFACurvDir1 % 8)))) { |
1172 | double kk, tmpMat[9], tmpVec[3]; |
1173 | kk = pvl->directAnswer[tenGageFAKappa2][0]; |
1174 | ELL_3M_COPY(tmpMat, pvl->directAnswer[tenGageFAGeomTens])((((tmpMat)+0)[0] = ((pvl->directAnswer[tenGageFAGeomTens] )+0)[0], ((tmpMat)+0)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+0)[1], ((tmpMat)+0)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+0)[2]), (((tmpMat)+3)[0] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[0], ((tmpMat)+3)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[1], ((tmpMat)+3)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[2]), (((tmpMat)+6)[0] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[0], ((tmpMat)+6)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[1], ((tmpMat)+6)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[2])); |
1175 | tmpMat[0] -= kk; tmpMat[4] -= kk; tmpMat[8] -= kk; |
1176 | ell_3m_1d_nullspace_d(tmpVec, tmpMat); |
1177 | ELL_3V_COPY(pvl->directAnswer[tenGageFACurvDir1], tmpVec)((pvl->directAnswer[tenGageFACurvDir1])[0] = (tmpVec)[0], ( pvl->directAnswer[tenGageFACurvDir1])[1] = (tmpVec)[1], (pvl ->directAnswer[tenGageFACurvDir1])[2] = (tmpVec)[2]); |
1178 | } |
1179 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFACurvDir2)(pvl->query[tenGageFACurvDir2/8] & (1 << (tenGageFACurvDir2 % 8)))) { |
1180 | double kk, tmpMat[9], tmpVec[3]; |
1181 | kk = pvl->directAnswer[tenGageFAKappa1][0]; |
1182 | ELL_3M_COPY(tmpMat, pvl->directAnswer[tenGageFAGeomTens])((((tmpMat)+0)[0] = ((pvl->directAnswer[tenGageFAGeomTens] )+0)[0], ((tmpMat)+0)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+0)[1], ((tmpMat)+0)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+0)[2]), (((tmpMat)+3)[0] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[0], ((tmpMat)+3)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[1], ((tmpMat)+3)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+3)[2]), (((tmpMat)+6)[0] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[0], ((tmpMat)+6)[1] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[1], ((tmpMat)+6)[2] = ((pvl->directAnswer[tenGageFAGeomTens ])+6)[2])); |
1183 | tmpMat[0] -= kk; tmpMat[4] -= kk; tmpMat[8] -= kk; |
1184 | ell_3m_1d_nullspace_d(tmpVec, tmpMat); |
1185 | ELL_3V_COPY(pvl->directAnswer[tenGageFACurvDir1], tmpVec)((pvl->directAnswer[tenGageFACurvDir1])[0] = (tmpVec)[0], ( pvl->directAnswer[tenGageFACurvDir1])[1] = (tmpVec)[1], (pvl ->directAnswer[tenGageFACurvDir1])[2] = (tmpVec)[2]); |
1186 | } |
1187 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAFlowlineCurv)(pvl->query[tenGageFAFlowlineCurv/8] & (1 << (tenGageFAFlowlineCurv % 8)))) { |
1188 | double *fahess, *fnorm, *fagmag, denom, nPerp[9], nProj[9], |
1189 | ncTen[9], sHess[9], tmpMat[9]; |
1190 | fnorm = pvl->directAnswer[tenGageFANormal]; |
1191 | fahess = pvl->directAnswer[tenGageFAHessian]; |
1192 | fagmag = pvl->directAnswer[tenGageFAGradMag]; |
1193 | ELL_3MV_OUTER(nProj, fnorm, fnorm)((((nProj)+0)[0] = ((fnorm)[0])*((fnorm))[0], ((nProj)+0)[1] = ((fnorm)[0])*((fnorm))[1], ((nProj)+0)[2] = ((fnorm)[0])*((fnorm ))[2]), (((nProj)+3)[0] = ((fnorm)[1])*((fnorm))[0], ((nProj) +3)[1] = ((fnorm)[1])*((fnorm))[1], ((nProj)+3)[2] = ((fnorm) [1])*((fnorm))[2]), (((nProj)+6)[0] = ((fnorm)[2])*((fnorm))[ 0], ((nProj)+6)[1] = ((fnorm)[2])*((fnorm))[1], ((nProj)+6)[2 ] = ((fnorm)[2])*((fnorm))[2])); |
1194 | ELL_3M_IDENTITY_SET(nPerp)((((nPerp)+0)[0] = (1), ((nPerp)+0)[1] = (0), ((nPerp)+0)[2] = (0)), (((nPerp)+3)[0] = (0), ((nPerp)+3)[1] = (1), ((nPerp)+ 3)[2] = (0)), (((nPerp)+6)[0] = (0), ((nPerp)+6)[1] = (0), (( nPerp)+6)[2] = (1))); |
1195 | ELL_3M_SCALE_INCR(nPerp, -1, nProj)((((nPerp)+0)[0] += ((-1))*((nProj)+0)[0], ((nPerp)+0)[1] += ( (-1))*((nProj)+0)[1], ((nPerp)+0)[2] += ((-1))*((nProj)+0)[2] ), (((nPerp)+3)[0] += ((-1))*((nProj)+3)[0], ((nPerp)+3)[1] += ((-1))*((nProj)+3)[1], ((nPerp)+3)[2] += ((-1))*((nProj)+3)[ 2]), (((nPerp)+6)[0] += ((-1))*((nProj)+6)[0], ((nPerp)+6)[1] += ((-1))*((nProj)+6)[1], ((nPerp)+6)[2] += ((-1))*((nProj)+ 6)[2])); |
1196 | denom = (*fagmag) ? 1.0/(*fagmag) : 0.0; |
1197 | ELL_3M_SCALE(sHess, denom, fahess)((((sHess)+0)[0] = ((denom))*((fahess)+0)[0], ((sHess)+0)[1] = ((denom))*((fahess)+0)[1], ((sHess)+0)[2] = ((denom))*((fahess )+0)[2]), (((sHess)+3)[0] = ((denom))*((fahess)+3)[0], ((sHess )+3)[1] = ((denom))*((fahess)+3)[1], ((sHess)+3)[2] = ((denom ))*((fahess)+3)[2]), (((sHess)+6)[0] = ((denom))*((fahess)+6) [0], ((sHess)+6)[1] = ((denom))*((fahess)+6)[1], ((sHess)+6)[ 2] = ((denom))*((fahess)+6)[2])); |
1198 | /* ncTen = nPerp * sHess * nProj */ |
1199 | ELL_3M_MUL(tmpMat, sHess, nProj)((tmpMat)[0] = (sHess)[0]*(nProj)[0] + (sHess)[1]*(nProj)[3] + (sHess)[2]*(nProj)[6], (tmpMat)[1] = (sHess)[0]*(nProj)[1] + (sHess)[1]*(nProj)[4] + (sHess)[2]*(nProj)[7], (tmpMat)[2] = (sHess)[0]*(nProj)[2] + (sHess)[1]*(nProj)[5] + (sHess)[2]*( nProj)[8], (tmpMat)[3] = (sHess)[3]*(nProj)[0] + (sHess)[4]*( nProj)[3] + (sHess)[5]*(nProj)[6], (tmpMat)[4] = (sHess)[3]*( nProj)[1] + (sHess)[4]*(nProj)[4] + (sHess)[5]*(nProj)[7], (tmpMat )[5] = (sHess)[3]*(nProj)[2] + (sHess)[4]*(nProj)[5] + (sHess )[5]*(nProj)[8], (tmpMat)[6] = (sHess)[6]*(nProj)[0] + (sHess )[7]*(nProj)[3] + (sHess)[8]*(nProj)[6], (tmpMat)[7] = (sHess )[6]*(nProj)[1] + (sHess)[7]*(nProj)[4] + (sHess)[8]*(nProj)[ 7], (tmpMat)[8] = (sHess)[6]*(nProj)[2] + (sHess)[7]*(nProj)[ 5] + (sHess)[8]*(nProj)[8]); |
1200 | ELL_3M_MUL(ncTen, nPerp, tmpMat)((ncTen)[0] = (nPerp)[0]*(tmpMat)[0] + (nPerp)[1]*(tmpMat)[3] + (nPerp)[2]*(tmpMat)[6], (ncTen)[1] = (nPerp)[0]*(tmpMat)[1 ] + (nPerp)[1]*(tmpMat)[4] + (nPerp)[2]*(tmpMat)[7], (ncTen)[ 2] = (nPerp)[0]*(tmpMat)[2] + (nPerp)[1]*(tmpMat)[5] + (nPerp )[2]*(tmpMat)[8], (ncTen)[3] = (nPerp)[3]*(tmpMat)[0] + (nPerp )[4]*(tmpMat)[3] + (nPerp)[5]*(tmpMat)[6], (ncTen)[4] = (nPerp )[3]*(tmpMat)[1] + (nPerp)[4]*(tmpMat)[4] + (nPerp)[5]*(tmpMat )[7], (ncTen)[5] = (nPerp)[3]*(tmpMat)[2] + (nPerp)[4]*(tmpMat )[5] + (nPerp)[5]*(tmpMat)[8], (ncTen)[6] = (nPerp)[6]*(tmpMat )[0] + (nPerp)[7]*(tmpMat)[3] + (nPerp)[8]*(tmpMat)[6], (ncTen )[7] = (nPerp)[6]*(tmpMat)[1] + (nPerp)[7]*(tmpMat)[4] + (nPerp )[8]*(tmpMat)[7], (ncTen)[8] = (nPerp)[6]*(tmpMat)[2] + (nPerp )[7]*(tmpMat)[5] + (nPerp)[8]*(tmpMat)[8]); |
1201 | pvl->directAnswer[gageSclFlowlineCurv][0] = ELL_3M_FROB(ncTen)(sqrt((((ncTen)+0)[0]*((ncTen)+0)[0] + ((ncTen)+0)[1]*((ncTen )+0)[1] + ((ncTen)+0)[2]*((ncTen)+0)[2]) + (((ncTen)+3)[0]*(( ncTen)+3)[0] + ((ncTen)+3)[1]*((ncTen)+3)[1] + ((ncTen)+3)[2] *((ncTen)+3)[2]) + (((ncTen)+6)[0]*((ncTen)+6)[0] + ((ncTen)+ 6)[1]*((ncTen)+6)[1] + ((ncTen)+6)[2]*((ncTen)+6)[2]))); |
1202 | } |
1203 | |
1204 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageRHessian)(pvl->query[tenGageRHessian/8] & (1 << (tenGageRHessian % 8)))) { |
1205 | hessCbR = matTmp = pvl->directAnswer[tenGageRHessian]; |
1206 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
1207 | ELL_3M_SCALE_INCR(matTmp, 5*cbB - 2*cbS, hessCbA)((((matTmp)+0)[0] += ((5*cbB - 2*cbS))*((hessCbA)+0)[0], ((matTmp )+0)[1] += ((5*cbB - 2*cbS))*((hessCbA)+0)[1], ((matTmp)+0)[2 ] += ((5*cbB - 2*cbS))*((hessCbA)+0)[2]), (((matTmp)+3)[0] += ((5*cbB - 2*cbS))*((hessCbA)+3)[0], ((matTmp)+3)[1] += ((5*cbB - 2*cbS))*((hessCbA)+3)[1], ((matTmp)+3)[2] += ((5*cbB - 2*cbS ))*((hessCbA)+3)[2]), (((matTmp)+6)[0] += ((5*cbB - 2*cbS))*( (hessCbA)+6)[0], ((matTmp)+6)[1] += ((5*cbB - 2*cbS))*((hessCbA )+6)[1], ((matTmp)+6)[2] += ((5*cbB - 2*cbS))*((hessCbA)+6)[2 ])); |
1208 | ELL_3MV_SCALE_OUTER_INCR(matTmp, 5, gradCbB, gradCbA)((((matTmp)+0)[0] += ((5)*(gradCbB)[0])*((gradCbA))[0], ((matTmp )+0)[1] += ((5)*(gradCbB)[0])*((gradCbA))[1], ((matTmp)+0)[2] += ((5)*(gradCbB)[0])*((gradCbA))[2]), (((matTmp)+3)[0] += ( (5)*(gradCbB)[1])*((gradCbA))[0], ((matTmp)+3)[1] += ((5)*(gradCbB )[1])*((gradCbA))[1], ((matTmp)+3)[2] += ((5)*(gradCbB)[1])*( (gradCbA))[2]), (((matTmp)+6)[0] += ((5)*(gradCbB)[2])*((gradCbA ))[0], ((matTmp)+6)[1] += ((5)*(gradCbB)[2])*((gradCbA))[1], ( (matTmp)+6)[2] += ((5)*(gradCbB)[2])*((gradCbA))[2])); |
1209 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -2, gradCbS, gradCbA)((((matTmp)+0)[0] += ((-2)*(gradCbS)[0])*((gradCbA))[0], ((matTmp )+0)[1] += ((-2)*(gradCbS)[0])*((gradCbA))[1], ((matTmp)+0)[2 ] += ((-2)*(gradCbS)[0])*((gradCbA))[2]), (((matTmp)+3)[0] += ((-2)*(gradCbS)[1])*((gradCbA))[0], ((matTmp)+3)[1] += ((-2) *(gradCbS)[1])*((gradCbA))[1], ((matTmp)+3)[2] += ((-2)*(gradCbS )[1])*((gradCbA))[2]), (((matTmp)+6)[0] += ((-2)*(gradCbS)[2] )*((gradCbA))[0], ((matTmp)+6)[1] += ((-2)*(gradCbS)[2])*((gradCbA ))[1], ((matTmp)+6)[2] += ((-2)*(gradCbS)[2])*((gradCbA))[2]) ); |
1210 | ELL_3M_SCALE_INCR(matTmp, 5*cbA, hessCbB)((((matTmp)+0)[0] += ((5*cbA))*((hessCbB)+0)[0], ((matTmp)+0) [1] += ((5*cbA))*((hessCbB)+0)[1], ((matTmp)+0)[2] += ((5*cbA ))*((hessCbB)+0)[2]), (((matTmp)+3)[0] += ((5*cbA))*((hessCbB )+3)[0], ((matTmp)+3)[1] += ((5*cbA))*((hessCbB)+3)[1], ((matTmp )+3)[2] += ((5*cbA))*((hessCbB)+3)[2]), (((matTmp)+6)[0] += ( (5*cbA))*((hessCbB)+6)[0], ((matTmp)+6)[1] += ((5*cbA))*((hessCbB )+6)[1], ((matTmp)+6)[2] += ((5*cbA))*((hessCbB)+6)[2])); |
1211 | ELL_3MV_SCALE_OUTER_INCR(matTmp, 5, gradCbA, gradCbB)((((matTmp)+0)[0] += ((5)*(gradCbA)[0])*((gradCbB))[0], ((matTmp )+0)[1] += ((5)*(gradCbA)[0])*((gradCbB))[1], ((matTmp)+0)[2] += ((5)*(gradCbA)[0])*((gradCbB))[2]), (((matTmp)+3)[0] += ( (5)*(gradCbA)[1])*((gradCbB))[0], ((matTmp)+3)[1] += ((5)*(gradCbA )[1])*((gradCbB))[1], ((matTmp)+3)[2] += ((5)*(gradCbA)[1])*( (gradCbB))[2]), (((matTmp)+6)[0] += ((5)*(gradCbA)[2])*((gradCbB ))[0], ((matTmp)+6)[1] += ((5)*(gradCbA)[2])*((gradCbB))[1], ( (matTmp)+6)[2] += ((5)*(gradCbA)[2])*((gradCbB))[2])); |
1212 | ELL_3M_SCALE_INCR(matTmp, -27, hessCbC)((((matTmp)+0)[0] += ((-27))*((hessCbC)+0)[0], ((matTmp)+0)[1 ] += ((-27))*((hessCbC)+0)[1], ((matTmp)+0)[2] += ((-27))*((hessCbC )+0)[2]), (((matTmp)+3)[0] += ((-27))*((hessCbC)+3)[0], ((matTmp )+3)[1] += ((-27))*((hessCbC)+3)[1], ((matTmp)+3)[2] += ((-27 ))*((hessCbC)+3)[2]), (((matTmp)+6)[0] += ((-27))*((hessCbC)+ 6)[0], ((matTmp)+6)[1] += ((-27))*((hessCbC)+6)[1], ((matTmp) +6)[2] += ((-27))*((hessCbC)+6)[2])); |
1213 | ELL_3M_SCALE_INCR(matTmp, -2*cbA, hessCbS)((((matTmp)+0)[0] += ((-2*cbA))*((hessCbS)+0)[0], ((matTmp)+0 )[1] += ((-2*cbA))*((hessCbS)+0)[1], ((matTmp)+0)[2] += ((-2* cbA))*((hessCbS)+0)[2]), (((matTmp)+3)[0] += ((-2*cbA))*((hessCbS )+3)[0], ((matTmp)+3)[1] += ((-2*cbA))*((hessCbS)+3)[1], ((matTmp )+3)[2] += ((-2*cbA))*((hessCbS)+3)[2]), (((matTmp)+6)[0] += ( (-2*cbA))*((hessCbS)+6)[0], ((matTmp)+6)[1] += ((-2*cbA))*((hessCbS )+6)[1], ((matTmp)+6)[2] += ((-2*cbA))*((hessCbS)+6)[2])); |
1214 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -2, gradCbA, gradCbS)((((matTmp)+0)[0] += ((-2)*(gradCbA)[0])*((gradCbS))[0], ((matTmp )+0)[1] += ((-2)*(gradCbA)[0])*((gradCbS))[1], ((matTmp)+0)[2 ] += ((-2)*(gradCbA)[0])*((gradCbS))[2]), (((matTmp)+3)[0] += ((-2)*(gradCbA)[1])*((gradCbS))[0], ((matTmp)+3)[1] += ((-2) *(gradCbA)[1])*((gradCbS))[1], ((matTmp)+3)[2] += ((-2)*(gradCbA )[1])*((gradCbS))[2]), (((matTmp)+6)[0] += ((-2)*(gradCbA)[2] )*((gradCbS))[0], ((matTmp)+6)[1] += ((-2)*(gradCbA)[2])*((gradCbS ))[1], ((matTmp)+6)[2] += ((-2)*(gradCbA)[2])*((gradCbS))[2]) ); |
1215 | ELL_3M_SCALE(matTmp, 1.0/54, matTmp)((((matTmp)+0)[0] = ((1.0/54))*((matTmp)+0)[0], ((matTmp)+0)[ 1] = ((1.0/54))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((1.0/54)) *((matTmp)+0)[2]), (((matTmp)+3)[0] = ((1.0/54))*((matTmp)+3) [0], ((matTmp)+3)[1] = ((1.0/54))*((matTmp)+3)[1], ((matTmp)+ 3)[2] = ((1.0/54))*((matTmp)+3)[2]), (((matTmp)+6)[0] = ((1.0 /54))*((matTmp)+6)[0], ((matTmp)+6)[1] = ((1.0/54))*((matTmp) +6)[1], ((matTmp)+6)[2] = ((1.0/54))*((matTmp)+6)[2])); |
1216 | } |
1217 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeHessian)(pvl->query[tenGageModeHessian/8] & (1 << (tenGageModeHessian % 8)))) { |
1218 | double tmpQ, oQ, rQ; |
1219 | tmpQ = AIR_MAX(0, cbQ)((0) > (cbQ) ? (0) : (cbQ)); |
1220 | rQ = sqrt(tmpQ); |
1221 | oQ = tmpQ ? 1/tmpQ : 0; |
1222 | matTmp = pvl->directAnswer[tenGageModeHessian]; |
1223 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
1224 | ELL_3M_SCALE_INCR(matTmp, -(3.0/2)*cbR, hessCbQ)((((matTmp)+0)[0] += ((-(3.0/2)*cbR))*((hessCbQ)+0)[0], ((matTmp )+0)[1] += ((-(3.0/2)*cbR))*((hessCbQ)+0)[1], ((matTmp)+0)[2] += ((-(3.0/2)*cbR))*((hessCbQ)+0)[2]), (((matTmp)+3)[0] += ( (-(3.0/2)*cbR))*((hessCbQ)+3)[0], ((matTmp)+3)[1] += ((-(3.0/ 2)*cbR))*((hessCbQ)+3)[1], ((matTmp)+3)[2] += ((-(3.0/2)*cbR) )*((hessCbQ)+3)[2]), (((matTmp)+6)[0] += ((-(3.0/2)*cbR))*((hessCbQ )+6)[0], ((matTmp)+6)[1] += ((-(3.0/2)*cbR))*((hessCbQ)+6)[1] , ((matTmp)+6)[2] += ((-(3.0/2)*cbR))*((hessCbQ)+6)[2])); |
1225 | ELL_3MV_SCALE_OUTER_INCR(matTmp, (15.0/4)*cbR*oQ, gradCbQ, gradCbQ)((((matTmp)+0)[0] += (((15.0/4)*cbR*oQ)*(gradCbQ)[0])*((gradCbQ ))[0], ((matTmp)+0)[1] += (((15.0/4)*cbR*oQ)*(gradCbQ)[0])*(( gradCbQ))[1], ((matTmp)+0)[2] += (((15.0/4)*cbR*oQ)*(gradCbQ) [0])*((gradCbQ))[2]), (((matTmp)+3)[0] += (((15.0/4)*cbR*oQ)* (gradCbQ)[1])*((gradCbQ))[0], ((matTmp)+3)[1] += (((15.0/4)*cbR *oQ)*(gradCbQ)[1])*((gradCbQ))[1], ((matTmp)+3)[2] += (((15.0 /4)*cbR*oQ)*(gradCbQ)[1])*((gradCbQ))[2]), (((matTmp)+6)[0] += (((15.0/4)*cbR*oQ)*(gradCbQ)[2])*((gradCbQ))[0], ((matTmp)+6 )[1] += (((15.0/4)*cbR*oQ)*(gradCbQ)[2])*((gradCbQ))[1], ((matTmp )+6)[2] += (((15.0/4)*cbR*oQ)*(gradCbQ)[2])*((gradCbQ))[2])); |
1226 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -(3.0/2), gradCbR, gradCbQ)((((matTmp)+0)[0] += ((-(3.0/2))*(gradCbR)[0])*((gradCbQ))[0] , ((matTmp)+0)[1] += ((-(3.0/2))*(gradCbR)[0])*((gradCbQ))[1] , ((matTmp)+0)[2] += ((-(3.0/2))*(gradCbR)[0])*((gradCbQ))[2] ), (((matTmp)+3)[0] += ((-(3.0/2))*(gradCbR)[1])*((gradCbQ))[ 0], ((matTmp)+3)[1] += ((-(3.0/2))*(gradCbR)[1])*((gradCbQ))[ 1], ((matTmp)+3)[2] += ((-(3.0/2))*(gradCbR)[1])*((gradCbQ))[ 2]), (((matTmp)+6)[0] += ((-(3.0/2))*(gradCbR)[2])*((gradCbQ) )[0], ((matTmp)+6)[1] += ((-(3.0/2))*(gradCbR)[2])*((gradCbQ) )[1], ((matTmp)+6)[2] += ((-(3.0/2))*(gradCbR)[2])*((gradCbQ) )[2])); |
1227 | ELL_3M_SCALE_INCR(matTmp, cbQ, hessCbR)((((matTmp)+0)[0] += ((cbQ))*((hessCbR)+0)[0], ((matTmp)+0)[1 ] += ((cbQ))*((hessCbR)+0)[1], ((matTmp)+0)[2] += ((cbQ))*((hessCbR )+0)[2]), (((matTmp)+3)[0] += ((cbQ))*((hessCbR)+3)[0], ((matTmp )+3)[1] += ((cbQ))*((hessCbR)+3)[1], ((matTmp)+3)[2] += ((cbQ ))*((hessCbR)+3)[2]), (((matTmp)+6)[0] += ((cbQ))*((hessCbR)+ 6)[0], ((matTmp)+6)[1] += ((cbQ))*((hessCbR)+6)[1], ((matTmp) +6)[2] += ((cbQ))*((hessCbR)+6)[2])); |
1228 | ELL_3MV_SCALE_OUTER_INCR(matTmp, -(3.0/2), gradCbQ, gradCbR)((((matTmp)+0)[0] += ((-(3.0/2))*(gradCbQ)[0])*((gradCbR))[0] , ((matTmp)+0)[1] += ((-(3.0/2))*(gradCbQ)[0])*((gradCbR))[1] , ((matTmp)+0)[2] += ((-(3.0/2))*(gradCbQ)[0])*((gradCbR))[2] ), (((matTmp)+3)[0] += ((-(3.0/2))*(gradCbQ)[1])*((gradCbR))[ 0], ((matTmp)+3)[1] += ((-(3.0/2))*(gradCbQ)[1])*((gradCbR))[ 1], ((matTmp)+3)[2] += ((-(3.0/2))*(gradCbQ)[1])*((gradCbR))[ 2]), (((matTmp)+6)[0] += ((-(3.0/2))*(gradCbQ)[2])*((gradCbR) )[0], ((matTmp)+6)[1] += ((-(3.0/2))*(gradCbQ)[2])*((gradCbR) )[1], ((matTmp)+6)[2] += ((-(3.0/2))*(gradCbQ)[2])*((gradCbR) )[2])); |
1229 | tmp0 = (tmpQ && rQ) ? 1/(tmpQ*tmpQ*rQ) : 0.0; |
1230 | ELL_3M_SCALE(matTmp, tmp0, matTmp)((((matTmp)+0)[0] = ((tmp0))*((matTmp)+0)[0], ((matTmp)+0)[1] = ((tmp0))*((matTmp)+0)[1], ((matTmp)+0)[2] = ((tmp0))*((matTmp )+0)[2]), (((matTmp)+3)[0] = ((tmp0))*((matTmp)+3)[0], ((matTmp )+3)[1] = ((tmp0))*((matTmp)+3)[1], ((matTmp)+3)[2] = ((tmp0) )*((matTmp)+3)[2]), (((matTmp)+6)[0] = ((tmp0))*((matTmp)+6)[ 0], ((matTmp)+6)[1] = ((tmp0))*((matTmp)+6)[1], ((matTmp)+6)[ 2] = ((tmp0))*((matTmp)+6)[2])); |
1231 | } |
1232 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeHessianEvec)(pvl->query[tenGageModeHessianEvec/8] & (1 << (tenGageModeHessianEvec % 8)))) { |
1233 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageModeHessianEval], |
1234 | pvl->directAnswer[tenGageModeHessianEvec], |
1235 | pvl->directAnswer[tenGageModeHessian], AIR_TRUE1); |
1236 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeHessianEval)(pvl->query[tenGageModeHessianEval/8] & (1 << (tenGageModeHessianEval % 8)))) { |
1237 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageModeHessianEval], |
1238 | pvl->directAnswer[tenGageModeHessian], AIR_TRUE1); |
1239 | } |
1240 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageModeHessianFrob)(pvl->query[tenGageModeHessianFrob/8] & (1 << (tenGageModeHessianFrob % 8)))) { |
1241 | pvl->directAnswer[tenGageModeHessianFrob][0] |
1242 | = ELL_3M_FROB(pvl->directAnswer[tenGageModeHessian])(sqrt((((pvl->directAnswer[tenGageModeHessian])+0)[0]*((pvl ->directAnswer[tenGageModeHessian])+0)[0] + ((pvl->directAnswer [tenGageModeHessian])+0)[1]*((pvl->directAnswer[tenGageModeHessian ])+0)[1] + ((pvl->directAnswer[tenGageModeHessian])+0)[2]* ((pvl->directAnswer[tenGageModeHessian])+0)[2]) + (((pvl-> directAnswer[tenGageModeHessian])+3)[0]*((pvl->directAnswer [tenGageModeHessian])+3)[0] + ((pvl->directAnswer[tenGageModeHessian ])+3)[1]*((pvl->directAnswer[tenGageModeHessian])+3)[1] + ( (pvl->directAnswer[tenGageModeHessian])+3)[2]*((pvl->directAnswer [tenGageModeHessian])+3)[2]) + (((pvl->directAnswer[tenGageModeHessian ])+6)[0]*((pvl->directAnswer[tenGageModeHessian])+6)[0] + ( (pvl->directAnswer[tenGageModeHessian])+6)[1]*((pvl->directAnswer [tenGageModeHessian])+6)[1] + ((pvl->directAnswer[tenGageModeHessian ])+6)[2]*((pvl->directAnswer[tenGageModeHessian])+6)[2]))); |
1243 | } |
1244 | |
1245 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessian)(pvl->query[tenGageOmegaHessian/8] & (1 << (tenGageOmegaHessian % 8)))) { |
1246 | double fa, mode, *modeGrad, *faGrad, *modeHess, *faHess; |
1247 | fa = pvl->directAnswer[tenGageFA][0]; |
1248 | mode = pvl->directAnswer[tenGageMode][0]; |
1249 | faGrad = pvl->directAnswer[tenGageFAGradVec]; |
1250 | modeGrad = pvl->directAnswer[tenGageModeGradVec]; |
1251 | faHess = pvl->directAnswer[tenGageFAHessian]; |
1252 | modeHess = pvl->directAnswer[tenGageModeHessian]; |
1253 | matTmp = pvl->directAnswer[tenGageOmegaHessian]; |
1254 | ELL_3M_ZERO_SET(matTmp)((((matTmp)+0)[0] = (0), ((matTmp)+0)[1] = (0), ((matTmp)+0)[ 2] = (0)), (((matTmp)+3)[0] = (0), ((matTmp)+3)[1] = (0), ((matTmp )+3)[2] = (0)), (((matTmp)+6)[0] = (0), ((matTmp)+6)[1] = (0) , ((matTmp)+6)[2] = (0))); |
1255 | ELL_3M_SCALE_INCR(matTmp, (1+mode)/2, faHess)((((matTmp)+0)[0] += (((1+mode)/2))*((faHess)+0)[0], ((matTmp )+0)[1] += (((1+mode)/2))*((faHess)+0)[1], ((matTmp)+0)[2] += (((1+mode)/2))*((faHess)+0)[2]), (((matTmp)+3)[0] += (((1+mode )/2))*((faHess)+3)[0], ((matTmp)+3)[1] += (((1+mode)/2))*((faHess )+3)[1], ((matTmp)+3)[2] += (((1+mode)/2))*((faHess)+3)[2]), ( ((matTmp)+6)[0] += (((1+mode)/2))*((faHess)+6)[0], ((matTmp)+ 6)[1] += (((1+mode)/2))*((faHess)+6)[1], ((matTmp)+6)[2] += ( ((1+mode)/2))*((faHess)+6)[2])); |
1256 | ELL_3M_SCALE_INCR(matTmp, fa/2, modeHess)((((matTmp)+0)[0] += ((fa/2))*((modeHess)+0)[0], ((matTmp)+0) [1] += ((fa/2))*((modeHess)+0)[1], ((matTmp)+0)[2] += ((fa/2) )*((modeHess)+0)[2]), (((matTmp)+3)[0] += ((fa/2))*((modeHess )+3)[0], ((matTmp)+3)[1] += ((fa/2))*((modeHess)+3)[1], ((matTmp )+3)[2] += ((fa/2))*((modeHess)+3)[2]), (((matTmp)+6)[0] += ( (fa/2))*((modeHess)+6)[0], ((matTmp)+6)[1] += ((fa/2))*((modeHess )+6)[1], ((matTmp)+6)[2] += ((fa/2))*((modeHess)+6)[2])); |
1257 | ELL_3MV_SCALE_OUTER_INCR(matTmp, 0.5, modeGrad, faGrad)((((matTmp)+0)[0] += ((0.5)*(modeGrad)[0])*((faGrad))[0], ((matTmp )+0)[1] += ((0.5)*(modeGrad)[0])*((faGrad))[1], ((matTmp)+0)[ 2] += ((0.5)*(modeGrad)[0])*((faGrad))[2]), (((matTmp)+3)[0] += ((0.5)*(modeGrad)[1])*((faGrad))[0], ((matTmp)+3)[1] += ((0.5 )*(modeGrad)[1])*((faGrad))[1], ((matTmp)+3)[2] += ((0.5)*(modeGrad )[1])*((faGrad))[2]), (((matTmp)+6)[0] += ((0.5)*(modeGrad)[2 ])*((faGrad))[0], ((matTmp)+6)[1] += ((0.5)*(modeGrad)[2])*(( faGrad))[1], ((matTmp)+6)[2] += ((0.5)*(modeGrad)[2])*((faGrad ))[2])); |
1258 | ELL_3MV_SCALE_OUTER_INCR(matTmp, 0.5, faGrad, modeGrad)((((matTmp)+0)[0] += ((0.5)*(faGrad)[0])*((modeGrad))[0], ((matTmp )+0)[1] += ((0.5)*(faGrad)[0])*((modeGrad))[1], ((matTmp)+0)[ 2] += ((0.5)*(faGrad)[0])*((modeGrad))[2]), (((matTmp)+3)[0] += ((0.5)*(faGrad)[1])*((modeGrad))[0], ((matTmp)+3)[1] += ((0.5 )*(faGrad)[1])*((modeGrad))[1], ((matTmp)+3)[2] += ((0.5)*(faGrad )[1])*((modeGrad))[2]), (((matTmp)+6)[0] += ((0.5)*(faGrad)[2 ])*((modeGrad))[0], ((matTmp)+6)[1] += ((0.5)*(faGrad)[2])*(( modeGrad))[1], ((matTmp)+6)[2] += ((0.5)*(faGrad)[2])*((modeGrad ))[2])); |
1259 | } |
1260 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessianEvec)(pvl->query[tenGageOmegaHessianEvec/8] & (1 << ( tenGageOmegaHessianEvec % 8)))) { |
1261 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageOmegaHessianEval], |
1262 | pvl->directAnswer[tenGageOmegaHessianEvec], |
1263 | pvl->directAnswer[tenGageOmegaHessian], AIR_TRUE1); |
1264 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessianEval)(pvl->query[tenGageOmegaHessianEval/8] & (1 << ( tenGageOmegaHessianEval % 8)))) { |
1265 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageOmegaHessianEval], |
1266 | pvl->directAnswer[tenGageOmegaHessian], AIR_TRUE1); |
1267 | } |
1268 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaLaplacian)(pvl->query[tenGageOmegaLaplacian/8] & (1 << (tenGageOmegaLaplacian % 8)))) { |
1269 | double *hess; |
1270 | hess = pvl->directAnswer[tenGageOmegaHessian]; |
1271 | pvl->directAnswer[tenGageOmegaLaplacian][0] = hess[0] + hess[4] + hess[8]; |
1272 | } |
1273 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmega2ndDD)(pvl->query[tenGageOmega2ndDD/8] & (1 << (tenGageOmega2ndDD % 8)))) { |
1274 | double *hess, *norm, tmpv[3]; |
1275 | hess = pvl->directAnswer[tenGageOmegaHessian]; |
1276 | norm = pvl->directAnswer[tenGageOmegaNormal]; |
1277 | ELL_3MV_MUL(tmpv, hess, norm)((tmpv)[0] = (hess)[0]*(norm)[0] + (hess)[1]*(norm)[1] + (hess )[2]*(norm)[2], (tmpv)[1] = (hess)[3]*(norm)[0] + (hess)[4]*( norm)[1] + (hess)[5]*(norm)[2], (tmpv)[2] = (hess)[6]*(norm)[ 0] + (hess)[7]*(norm)[1] + (hess)[8]*(norm)[2]); |
1278 | pvl->directAnswer[tenGageOmega2ndDD][0] = ELL_3V_DOT(norm, tmpv)((norm)[0]*(tmpv)[0] + (norm)[1]*(tmpv)[1] + (norm)[2]*(tmpv) [2]); |
1279 | } |
1280 | |
1281 | /* the copy-and-paste nature of this is really getting out of control ... */ |
1282 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessianContrTenEvec0)(pvl->query[tenGageOmegaHessianContrTenEvec0/8] & (1 << (tenGageOmegaHessianContrTenEvec0 % 8)))) { |
1283 | double *hess, *evec, tmpv[3]; |
1284 | hess = pvl->directAnswer[tenGageOmegaHessian]; |
1285 | evec = pvl->directAnswer[tenGageEvec0]; |
1286 | ELL_3MV_MUL(tmpv, hess, evec)((tmpv)[0] = (hess)[0]*(evec)[0] + (hess)[1]*(evec)[1] + (hess )[2]*(evec)[2], (tmpv)[1] = (hess)[3]*(evec)[0] + (hess)[4]*( evec)[1] + (hess)[5]*(evec)[2], (tmpv)[2] = (hess)[6]*(evec)[ 0] + (hess)[7]*(evec)[1] + (hess)[8]*(evec)[2]); |
1287 | pvl->directAnswer[tenGageOmegaHessianContrTenEvec0][0] = ELL_3V_DOT(evec, tmpv)((evec)[0]*(tmpv)[0] + (evec)[1]*(tmpv)[1] + (evec)[2]*(tmpv) [2]); |
1288 | } |
1289 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessianContrTenEvec1)(pvl->query[tenGageOmegaHessianContrTenEvec1/8] & (1 << (tenGageOmegaHessianContrTenEvec1 % 8)))) { |
1290 | double *hess, *evec, tmpv[3]; |
1291 | hess = pvl->directAnswer[tenGageOmegaHessian]; |
1292 | evec = pvl->directAnswer[tenGageEvec1]; |
1293 | ELL_3MV_MUL(tmpv, hess, evec)((tmpv)[0] = (hess)[0]*(evec)[0] + (hess)[1]*(evec)[1] + (hess )[2]*(evec)[2], (tmpv)[1] = (hess)[3]*(evec)[0] + (hess)[4]*( evec)[1] + (hess)[5]*(evec)[2], (tmpv)[2] = (hess)[6]*(evec)[ 0] + (hess)[7]*(evec)[1] + (hess)[8]*(evec)[2]); |
1294 | pvl->directAnswer[tenGageOmegaHessianContrTenEvec1][0] = ELL_3V_DOT(evec, tmpv)((evec)[0]*(tmpv)[0] + (evec)[1]*(tmpv)[1] + (evec)[2]*(tmpv) [2]); |
1295 | } |
1296 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaHessianContrTenEvec2)(pvl->query[tenGageOmegaHessianContrTenEvec2/8] & (1 << (tenGageOmegaHessianContrTenEvec2 % 8)))) { |
1297 | double *hess, *evec, tmpv[3]; |
1298 | hess = pvl->directAnswer[tenGageOmegaHessian]; |
1299 | evec = pvl->directAnswer[tenGageEvec2]; |
1300 | ELL_3MV_MUL(tmpv, hess, evec)((tmpv)[0] = (hess)[0]*(evec)[0] + (hess)[1]*(evec)[1] + (hess )[2]*(evec)[2], (tmpv)[1] = (hess)[3]*(evec)[0] + (hess)[4]*( evec)[1] + (hess)[5]*(evec)[2], (tmpv)[2] = (hess)[6]*(evec)[ 0] + (hess)[7]*(evec)[1] + (hess)[8]*(evec)[2]); |
1301 | pvl->directAnswer[tenGageOmegaHessianContrTenEvec2][0] = ELL_3V_DOT(evec, tmpv)((evec)[0]*(tmpv)[0] + (evec)[1]*(tmpv)[1] + (evec)[2]*(tmpv) [2]); |
1302 | } |
1303 | |
1304 | /* --- evec0 dot products */ |
1305 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceGradVecDotEvec0)(pvl->query[tenGageTraceGradVecDotEvec0/8] & (1 << (tenGageTraceGradVecDotEvec0 % 8)))) { |
1306 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageTraceGradVec])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageTraceGradVec ])[0] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageTraceGradVec ])[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageTraceGradVec ])[2]); |
1307 | pvl->directAnswer[tenGageTraceGradVecDotEvec0][0] = AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)); |
1308 | } |
1309 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceDiffusionAlign)(pvl->query[tenGageTraceDiffusionAlign/8] & (1 << (tenGageTraceDiffusionAlign % 8)))) { |
1310 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageTraceNormal])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageTraceNormal] )[0] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageTraceNormal ])[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageTraceNormal ])[2]); |
1311 | tmp0 = 1 - 2*acos(AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)))/AIR_PI3.14159265358979323846; |
1312 | pvl->directAnswer[tenGageTraceDiffusionAlign][0] = tmp0; |
1313 | } |
1314 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTraceDiffusionFraction)(pvl->query[tenGageTraceDiffusionFraction/8] & (1 << (tenGageTraceDiffusionFraction % 8)))) { |
1315 | double tmpv[3]; |
1316 | TEN_TV_MUL(tmpv, tenAns, pvl->directAnswer[tenGageTraceNormal])((tmpv)[0] = (tenAns)[1]*(pvl->directAnswer[tenGageTraceNormal ])[0] + (tenAns)[2]*(pvl->directAnswer[tenGageTraceNormal] )[1] + (tenAns)[3]*(pvl->directAnswer[tenGageTraceNormal]) [2], (tmpv)[1] = (tenAns)[2]*(pvl->directAnswer[tenGageTraceNormal ])[0] + (tenAns)[4]*(pvl->directAnswer[tenGageTraceNormal] )[1] + (tenAns)[5]*(pvl->directAnswer[tenGageTraceNormal]) [2], (tmpv)[2] = (tenAns)[3]*(pvl->directAnswer[tenGageTraceNormal ])[0] + (tenAns)[5]*(pvl->directAnswer[tenGageTraceNormal] )[1] + (tenAns)[6]*(pvl->directAnswer[tenGageTraceNormal]) [2]); |
1317 | tmp0 = ELL_3V_DOT(tmpv, pvl->directAnswer[tenGageTraceNormal])((tmpv)[0]*(pvl->directAnswer[tenGageTraceNormal])[0] + (tmpv )[1]*(pvl->directAnswer[tenGageTraceNormal])[1] + (tmpv)[2 ]*(pvl->directAnswer[tenGageTraceNormal])[2]); |
1318 | tmp0 /= TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) ? TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) : 1; |
1319 | pvl->directAnswer[tenGageTraceDiffusionFraction][0] = tmp0; |
1320 | } |
1321 | |
1322 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFAGradVecDotEvec0)(pvl->query[tenGageFAGradVecDotEvec0/8] & (1 << ( tenGageFAGradVecDotEvec0 % 8)))) { |
1323 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageFAGradVec])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageFAGradVec])[ 0] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageFAGradVec ])[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageFAGradVec ])[2]); |
1324 | pvl->directAnswer[tenGageFAGradVecDotEvec0][0] = AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)); |
1325 | } |
1326 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFADiffusionAlign)(pvl->query[tenGageFADiffusionAlign/8] & (1 << ( tenGageFADiffusionAlign % 8)))) { |
1327 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageFANormal])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageFANormal])[0 ] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageFANormal] )[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageFANormal ])[2]); |
1328 | tmp0 = 1 - 2*acos(AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)))/AIR_PI3.14159265358979323846; |
1329 | pvl->directAnswer[tenGageFADiffusionAlign][0] = tmp0; |
1330 | } |
1331 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFADiffusionFraction)(pvl->query[tenGageFADiffusionFraction/8] & (1 << (tenGageFADiffusionFraction % 8)))) { |
1332 | double tmpv[3]; |
1333 | TEN_TV_MUL(tmpv, tenAns, pvl->directAnswer[tenGageFANormal])((tmpv)[0] = (tenAns)[1]*(pvl->directAnswer[tenGageFANormal ])[0] + (tenAns)[2]*(pvl->directAnswer[tenGageFANormal])[1 ] + (tenAns)[3]*(pvl->directAnswer[tenGageFANormal])[2], ( tmpv)[1] = (tenAns)[2]*(pvl->directAnswer[tenGageFANormal] )[0] + (tenAns)[4]*(pvl->directAnswer[tenGageFANormal])[1] + (tenAns)[5]*(pvl->directAnswer[tenGageFANormal])[2], (tmpv )[2] = (tenAns)[3]*(pvl->directAnswer[tenGageFANormal])[0] + (tenAns)[5]*(pvl->directAnswer[tenGageFANormal])[1] + ( tenAns)[6]*(pvl->directAnswer[tenGageFANormal])[2]); |
1334 | tmp0 = ELL_3V_DOT(tmpv, pvl->directAnswer[tenGageFANormal])((tmpv)[0]*(pvl->directAnswer[tenGageFANormal])[0] + (tmpv )[1]*(pvl->directAnswer[tenGageFANormal])[1] + (tmpv)[2]*( pvl->directAnswer[tenGageFANormal])[2]); |
1335 | tmp0 /= TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) ? TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) : 1; |
1336 | pvl->directAnswer[tenGageFADiffusionFraction][0] = tmp0; |
1337 | } |
1338 | |
1339 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaGradVecDotEvec0)(pvl->query[tenGageOmegaGradVecDotEvec0/8] & (1 << (tenGageOmegaGradVecDotEvec0 % 8)))) { |
1340 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageOmegaGradVec])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageOmegaGradVec ])[0] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageOmegaGradVec ])[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageOmegaGradVec ])[2]); |
1341 | pvl->directAnswer[tenGageOmegaGradVecDotEvec0][0] = AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)); |
1342 | } |
1343 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaDiffusionAlign)(pvl->query[tenGageOmegaDiffusionAlign/8] & (1 << (tenGageOmegaDiffusionAlign % 8)))) { |
1344 | tmp0 = ELL_3V_DOT(evecAns + 0*3, pvl->directAnswer[tenGageOmegaNormal])((evecAns + 0*3)[0]*(pvl->directAnswer[tenGageOmegaNormal] )[0] + (evecAns + 0*3)[1]*(pvl->directAnswer[tenGageOmegaNormal ])[1] + (evecAns + 0*3)[2]*(pvl->directAnswer[tenGageOmegaNormal ])[2]); |
1345 | tmp0 = 1 - 2*acos(AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)))/AIR_PI3.14159265358979323846; |
1346 | pvl->directAnswer[tenGageOmegaDiffusionAlign][0] = tmp0; |
1347 | } |
1348 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageOmegaDiffusionFraction)(pvl->query[tenGageOmegaDiffusionFraction/8] & (1 << (tenGageOmegaDiffusionFraction % 8)))) { |
1349 | double tmpv[3]; |
1350 | TEN_TV_MUL(tmpv, tenAns, pvl->directAnswer[tenGageOmegaNormal])((tmpv)[0] = (tenAns)[1]*(pvl->directAnswer[tenGageOmegaNormal ])[0] + (tenAns)[2]*(pvl->directAnswer[tenGageOmegaNormal] )[1] + (tenAns)[3]*(pvl->directAnswer[tenGageOmegaNormal]) [2], (tmpv)[1] = (tenAns)[2]*(pvl->directAnswer[tenGageOmegaNormal ])[0] + (tenAns)[4]*(pvl->directAnswer[tenGageOmegaNormal] )[1] + (tenAns)[5]*(pvl->directAnswer[tenGageOmegaNormal]) [2], (tmpv)[2] = (tenAns)[3]*(pvl->directAnswer[tenGageOmegaNormal ])[0] + (tenAns)[5]*(pvl->directAnswer[tenGageOmegaNormal] )[1] + (tenAns)[6]*(pvl->directAnswer[tenGageOmegaNormal]) [2]); |
1351 | tmp0 = ELL_3V_DOT(tmpv, pvl->directAnswer[tenGageOmegaNormal])((tmpv)[0]*(pvl->directAnswer[tenGageOmegaNormal])[0] + (tmpv )[1]*(pvl->directAnswer[tenGageOmegaNormal])[1] + (tmpv)[2 ]*(pvl->directAnswer[tenGageOmegaNormal])[2]); |
1352 | tmp0 /= TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) ? TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) : 1; |
1353 | pvl->directAnswer[tenGageOmegaDiffusionFraction][0] = tmp0; |
1354 | } |
1355 | |
1356 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageConfGradVecDotEvec0)(pvl->query[tenGageConfGradVecDotEvec0/8] & (1 << (tenGageConfGradVecDotEvec0 % 8)))) { |
1357 | double *confGrad; |
1358 | confGrad = pvl->directAnswer[tenGageTensorGrad]; |
1359 | tmp0 = ELL_3V_DOT(evecAns + 0*3, confGrad)((evecAns + 0*3)[0]*(confGrad)[0] + (evecAns + 0*3)[1]*(confGrad )[1] + (evecAns + 0*3)[2]*(confGrad)[2]); |
1360 | pvl->directAnswer[tenGageConfGradVecDotEvec0][0] = AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)); |
1361 | } |
1362 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageConfDiffusionAlign)(pvl->query[tenGageConfDiffusionAlign/8] & (1 << (tenGageConfDiffusionAlign % 8)))) { |
1363 | double *confGrad, confNorm[3], tmp; |
1364 | confGrad = pvl->directAnswer[tenGageTensorGrad]; |
1365 | ELL_3V_NORM(confNorm, confGrad, tmp)(tmp = (sqrt((((confGrad))[0]*((confGrad))[0] + ((confGrad))[ 1]*((confGrad))[1] + ((confGrad))[2]*((confGrad))[2]))), ((confNorm )[0] = (1.0/tmp)*(confGrad)[0], (confNorm)[1] = (1.0/tmp)*(confGrad )[1], (confNorm)[2] = (1.0/tmp)*(confGrad)[2])); |
1366 | tmp0 = ELL_3V_DOT(evecAns + 0*3, confNorm)((evecAns + 0*3)[0]*(confNorm)[0] + (evecAns + 0*3)[1]*(confNorm )[1] + (evecAns + 0*3)[2]*(confNorm)[2]); |
1367 | tmp0 = 1 - 2*acos(AIR_ABS(tmp0)((tmp0) > 0.0f ? (tmp0) : -(tmp0)))/AIR_PI3.14159265358979323846; |
1368 | pvl->directAnswer[tenGageConfDiffusionAlign][0] = tmp0; |
1369 | } |
1370 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageConfDiffusionFraction)(pvl->query[tenGageConfDiffusionFraction/8] & (1 << (tenGageConfDiffusionFraction % 8)))) { |
1371 | double *confGrad, confNorm[3], tmp, tmpv[3]; |
1372 | confGrad = pvl->directAnswer[tenGageTensorGrad]; |
1373 | ELL_3V_NORM(confNorm, confGrad, tmp)(tmp = (sqrt((((confGrad))[0]*((confGrad))[0] + ((confGrad))[ 1]*((confGrad))[1] + ((confGrad))[2]*((confGrad))[2]))), ((confNorm )[0] = (1.0/tmp)*(confGrad)[0], (confNorm)[1] = (1.0/tmp)*(confGrad )[1], (confNorm)[2] = (1.0/tmp)*(confGrad)[2])); |
1374 | TEN_TV_MUL(tmpv, tenAns, confNorm)((tmpv)[0] = (tenAns)[1]*(confNorm)[0] + (tenAns)[2]*(confNorm )[1] + (tenAns)[3]*(confNorm)[2], (tmpv)[1] = (tenAns)[2]*(confNorm )[0] + (tenAns)[4]*(confNorm)[1] + (tenAns)[5]*(confNorm)[2], (tmpv)[2] = (tenAns)[3]*(confNorm)[0] + (tenAns)[5]*(confNorm )[1] + (tenAns)[6]*(confNorm)[2]); |
1375 | tmp0 = ELL_3V_DOT(tmpv, confNorm)((tmpv)[0]*(confNorm)[0] + (tmpv)[1]*(confNorm)[1] + (tmpv)[2 ]*(confNorm)[2]); |
1376 | tmp0 /= TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) ? TEN_T_TRACE(tenAns)((tenAns)[1] + (tenAns)[4] + (tenAns)[6]) : 1; |
1377 | pvl->directAnswer[tenGageConfDiffusionFraction][0] = tmp0; |
1378 | } |
1379 | |
1380 | |
1381 | /* --- Covariance --- */ |
1382 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCovariance)(pvl->query[tenGageCovariance/8] & (1 << (tenGageCovariance % 8)))) { |
1383 | unsigned int cc, tt, taa, tbb, |
1384 | vijk, vii, vjj, vkk, fd, fddd; |
1385 | double *cov, ww, wxx, wyy, wzz, ten[7]; |
1386 | |
1387 | cov = pvl->directAnswer[tenGageCovariance]; |
1388 | /* HEY: casting because radius signed (shouldn't be) */ |
1389 | fd = AIR_CAST(unsigned int, 2*ctx->radius)((unsigned int)(2*ctx->radius)); |
1390 | fddd = fd*fd*fd; |
1391 | |
1392 | /* reset answer */ |
1393 | for (cc=0; cc<21; cc++) { |
1394 | cov[cc] = 0; |
1395 | } |
1396 | |
1397 | ten[0] = 1; /* never used anyway */ |
1398 | for (vijk=0; vijk<fddd; vijk++) { |
1399 | vii = vijk % fd; |
1400 | vjj = (vijk/fd) % fd; |
1401 | vkk = vijk/fd/fd; |
1402 | wxx = ctx->fw[vii + fd*(0 + 3*gageKernel00)]; |
1403 | wyy = ctx->fw[vjj + fd*(1 + 3*gageKernel00)]; |
1404 | wzz = ctx->fw[vkk + fd*(2 + 3*gageKernel00)]; |
1405 | ww = wxx*wyy*wzz; |
1406 | for (tt=1; tt<7; tt++) { |
1407 | ten[tt] = ww*(pvl->iv3[vijk + fddd*tt] - tenAns[tt]); |
1408 | } |
1409 | |
1410 | cc = 0; |
1411 | for (taa=0; taa<6; taa++) { |
1412 | for (tbb=taa; tbb<6; tbb++) { |
1413 | /* HEY: do I really mean to have this factor in here? */ |
1414 | /* it probably meant that the units in the IGRT TMI paper were |
1415 | wrong by this factor ... */ |
1416 | cov[cc] += 100000*ten[taa+1]*ten[tbb+1]; |
1417 | cc++; |
1418 | } |
1419 | } |
1420 | } |
1421 | } |
1422 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCovarianceRGRT)(pvl->query[tenGageCovarianceRGRT/8] & (1 << (tenGageCovarianceRGRT % 8)))) { |
1423 | double *cov, *covr, *igrt[6]; |
1424 | unsigned int taa, tbb, cc; |
1425 | |
1426 | cov = pvl->directAnswer[tenGageCovariance]; |
1427 | covr = pvl->directAnswer[tenGageCovarianceRGRT]; |
1428 | igrt[0] = pvl->directAnswer[tenGageDelNormR1]; |
1429 | igrt[1] = pvl->directAnswer[tenGageDelNormR2]; |
1430 | igrt[2] = pvl->directAnswer[tenGageDelNormK3]; |
1431 | igrt[3] = pvl->directAnswer[tenGageDelNormPhi1]; |
1432 | igrt[4] = pvl->directAnswer[tenGageDelNormPhi2]; |
1433 | igrt[5] = pvl->directAnswer[tenGageDelNormPhi3]; |
1434 | |
1435 | cc = 0; |
1436 | for (taa=0; taa<6; taa++) { |
1437 | for (tbb=taa; tbb<6; tbb++) { |
1438 | covr[cc] = tenDoubleContract_d(igrt[tbb], cov, igrt[taa]); |
1439 | cc++; |
1440 | } |
1441 | } |
1442 | } |
1443 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCovarianceKGRT)(pvl->query[tenGageCovarianceKGRT/8] & (1 << (tenGageCovarianceKGRT % 8)))) { |
1444 | double *cov, *covk, *igrt[6], delnormk1[7]; |
1445 | unsigned int taa, tbb, cc; |
1446 | |
1447 | cov = pvl->directAnswer[tenGageCovariance]; |
1448 | covk = pvl->directAnswer[tenGageCovarianceKGRT]; |
1449 | TEN_T_SET(delnormk1, 1, 0.57735026, 0, 0, 0.57735026, 0, 0.57735026)( (delnormk1)[0] = (1), (delnormk1)[1] = (0.57735026), (delnormk1 )[2] = (0), (delnormk1)[3] = (0), (delnormk1)[4] = (0.57735026 ), (delnormk1)[5] = (0), (delnormk1)[6] = (0.57735026) ); |
1450 | igrt[0] = delnormk1; |
1451 | igrt[1] = pvl->directAnswer[tenGageDelNormK2]; |
1452 | igrt[2] = pvl->directAnswer[tenGageDelNormK3]; |
1453 | igrt[3] = pvl->directAnswer[tenGageDelNormPhi1]; |
1454 | igrt[4] = pvl->directAnswer[tenGageDelNormPhi2]; |
1455 | igrt[5] = pvl->directAnswer[tenGageDelNormPhi3]; |
1456 | |
1457 | cc = 0; |
1458 | for (taa=0; taa<6; taa++) { |
1459 | for (tbb=taa; tbb<6; tbb++) { |
1460 | covk[cc] = tenDoubleContract_d(igrt[tbb], cov, igrt[taa]); |
1461 | cc++; |
1462 | } |
1463 | } |
1464 | } |
1465 | |
1466 | /* these are items that somewhat bypass the convolution result |
1467 | (in tenGageTensor) because it has to do something else fancy |
1468 | with the constituent tensors. This is young and hacky code; |
1469 | and it may be that facilitating this kind of processing should |
1470 | be better supported by the gage API ... */ |
1471 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorLogEuclidean)(pvl->query[tenGageTensorLogEuclidean/8] & (1 << (tenGageTensorLogEuclidean % 8))) || |
1472 | GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorQuatGeoLoxK)(pvl->query[tenGageTensorQuatGeoLoxK/8] & (1 << ( tenGageTensorQuatGeoLoxK % 8))) || |
1473 | GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorQuatGeoLoxR)(pvl->query[tenGageTensorQuatGeoLoxR/8] & (1 << ( tenGageTensorQuatGeoLoxR % 8))) || |
1474 | GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorRThetaPhiLinear)(pvl->query[tenGageTensorRThetaPhiLinear/8] & (1 << (tenGageTensorRThetaPhiLinear % 8)))) { |
1475 | unsigned int vijk, vii, vjj, vkk, fd, fddd; |
1476 | _tenGagePvlData *pvlData; |
1477 | double *ans; |
1478 | int qret; |
1479 | |
1480 | pvlData = AIR_CAST(_tenGagePvlData *, pvl->data)((_tenGagePvlData *)(pvl->data)); |
1481 | /* HEY: casting because radius is signed (shouldn't be) */ |
1482 | fd = AIR_CAST(unsigned int, 2*ctx->radius)((unsigned int)(2*ctx->radius)); |
1483 | fddd = fd*fd*fd; |
1484 | for (vijk=0; vijk<fddd; vijk++) { |
1485 | double wxx, wyy, wzz; |
1486 | unsigned int tt; |
1487 | vii = vijk % fd; |
1488 | vjj = (vijk/fd) % fd; |
1489 | vkk = vijk/fd/fd; |
1490 | wxx = ctx->fw[vii + fd*(0 + 3*gageKernel00)]; |
1491 | wyy = ctx->fw[vjj + fd*(1 + 3*gageKernel00)]; |
1492 | wzz = ctx->fw[vkk + fd*(2 + 3*gageKernel00)]; |
1493 | pvlData->buffWght[vijk] = wxx*wyy*wzz; |
1494 | for (tt=0; tt<7; tt++) { |
1495 | pvlData->buffTen[tt + 7*vijk] = pvl->iv3[vijk + fddd*tt]; |
1496 | } |
1497 | } |
1498 | |
1499 | qret = 0; |
1500 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorLogEuclidean)(pvl->query[tenGageTensorLogEuclidean/8] & (1 << (tenGageTensorLogEuclidean % 8)))) { |
1501 | ans = pvl->directAnswer[tenGageTensorLogEuclidean]; |
1502 | qret = tenInterpN_d(ans, pvlData->buffTen, pvlData->buffWght, fddd, |
1503 | tenInterpTypeLogLinear, pvlData->tip); |
1504 | } |
1505 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorQuatGeoLoxK)(pvl->query[tenGageTensorQuatGeoLoxK/8] & (1 << ( tenGageTensorQuatGeoLoxK % 8)))) { |
1506 | ans = pvl->directAnswer[tenGageTensorQuatGeoLoxK]; |
1507 | qret = tenInterpN_d(ans, pvlData->buffTen, pvlData->buffWght, fddd, |
1508 | tenInterpTypeQuatGeoLoxK, pvlData->tip); |
1509 | } |
1510 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorQuatGeoLoxR)(pvl->query[tenGageTensorQuatGeoLoxR/8] & (1 << ( tenGageTensorQuatGeoLoxR % 8)))) { |
1511 | ans = pvl->directAnswer[tenGageTensorQuatGeoLoxR]; |
1512 | qret= tenInterpN_d(ans, pvlData->buffTen, pvlData->buffWght, fddd, |
1513 | tenInterpTypeQuatGeoLoxR, pvlData->tip); |
1514 | } |
1515 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorRThetaPhiLinear)(pvl->query[tenGageTensorRThetaPhiLinear/8] & (1 << (tenGageTensorRThetaPhiLinear % 8)))) { |
1516 | ans = pvl->directAnswer[tenGageTensorRThetaPhiLinear]; |
1517 | qret= tenInterpN_d(ans, pvlData->buffTen, pvlData->buffWght, fddd, |
1518 | tenInterpTypeRThetaPhiLinear, pvlData->tip); |
1519 | } |
1520 | if (qret) { |
1521 | char *lerr; |
1522 | fprintf(stderr__stderrp, "!%s: problem!!!\n %s", me, lerr = biffGet(TENtenBiffKey)); |
1523 | free(lerr); |
1524 | } |
1525 | } |
1526 | |
1527 | /* --- cl/cp/ca gradients --- */ |
1528 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1GradVec)(pvl->query[tenGageCl1GradVec/8] & (1 << (tenGageCl1GradVec % 8)))) { |
1529 | vecTmp = pvl->directAnswer[tenGageCl1GradVec]; |
1530 | |
1531 | ELL_3V_SET(vecTmp,((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1532 | (evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads][3]-pvl->directAnswer[tenGageEvalGrads][6])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1533 | +evalAns[1]*(2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer[tenGageEvalGrads][6])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1534 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][0]-pvl->directAnswer[tenGageEvalGrads][3]))((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1535 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1536 | (evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads][4]-pvl->directAnswer[tenGageEvalGrads][7])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1537 | +evalAns[1]*(2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer[tenGageEvalGrads][7])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1538 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]-pvl->directAnswer[tenGageEvalGrads][4]))((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1539 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1540 | (evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads][5]-pvl->directAnswer[tenGageEvalGrads][8])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1541 | +evalAns[1]*(2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer[tenGageEvalGrads][8])((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1542 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]-pvl->directAnswer[tenGageEvalGrads][5]))((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1543 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))((vecTmp)[0] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]-pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]-pvl->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = ((evalAns[0]*(-2*pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( 2*pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]-pvl->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))); |
1544 | } |
1545 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1GradMag)(pvl->query[tenGageCl1GradMag/8] & (1 << (tenGageCl1GradMag % 8)))) { |
1546 | magTmp = pvl->directAnswer[tenGageCl1GradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
1547 | } |
1548 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1Normal)(pvl->query[tenGageCl1Normal/8] & (1 << (tenGageCl1Normal % 8)))) { |
1549 | ELL_3V_SCALE(pvl->directAnswer[tenGageCl1Normal],((pvl->directAnswer[tenGageCl1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCl1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCl1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
1550 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageCl1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCl1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCl1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
1551 | } |
1552 | |
1553 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1GradVec)(pvl->query[tenGageCp1GradVec/8] & (1 << (tenGageCp1GradVec % 8)))) { |
1554 | vecTmp = pvl->directAnswer[tenGageCp1GradVec]; |
1555 | |
1556 | ELL_3V_SET(vecTmp,((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1557 | 2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads][3]-pvl->directAnswer[tenGageEvalGrads][6])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1558 | +evalAns[1]*(-pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer[tenGageEvalGrads][6])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1559 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][0]+2*pvl->directAnswer[tenGageEvalGrads][3]))((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1560 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1561 | 2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads][4]-pvl->directAnswer[tenGageEvalGrads][7])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1562 | +evalAns[1]*(-pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer[tenGageEvalGrads][7])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1563 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+2*pvl->directAnswer[tenGageEvalGrads][4]))((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1564 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1565 | 2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads][5]-pvl->directAnswer[tenGageEvalGrads][8])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1566 | +evalAns[1]*(-pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer[tenGageEvalGrads][8])((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1567 | +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+2*pvl->directAnswer[tenGageEvalGrads][5]))((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))) |
1568 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))((vecTmp)[0] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][3]-pvl->directAnswer[tenGageEvalGrads][6]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][0]-2*pvl->directAnswer [tenGageEvalGrads][6]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+2*pvl->directAnswer[tenGageEvalGrads][3])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[1] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][4]-pvl->directAnswer[tenGageEvalGrads][7]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][1]-2*pvl->directAnswer [tenGageEvalGrads][7]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][1]+2*pvl->directAnswer[tenGageEvalGrads][4])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0])), (vecTmp)[2] = (2*(evalAns[0]*(pvl->directAnswer[tenGageEvalGrads ][5]-pvl->directAnswer[tenGageEvalGrads][8]) +evalAns[1]*( -pvl->directAnswer[tenGageEvalGrads][2]-2*pvl->directAnswer [tenGageEvalGrads][8]) +evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][2]+2*pvl->directAnswer[tenGageEvalGrads][5])) /(pvl-> directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace ][0]))); |
1569 | } |
1570 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1GradMag)(pvl->query[tenGageCp1GradMag/8] & (1 << (tenGageCp1GradMag % 8)))) { |
1571 | magTmp = pvl->directAnswer[tenGageCp1GradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
1572 | } |
1573 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1Normal)(pvl->query[tenGageCp1Normal/8] & (1 << (tenGageCp1Normal % 8)))) { |
1574 | ELL_3V_SCALE(pvl->directAnswer[tenGageCp1Normal],((pvl->directAnswer[tenGageCp1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCp1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCp1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
1575 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageCp1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCp1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCp1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
1576 | } |
1577 | |
1578 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1GradVec)(pvl->query[tenGageCa1GradVec/8] & (1 << (tenGageCa1GradVec % 8)))) { |
1579 | vecTmp = pvl->directAnswer[tenGageCa1GradVec]; |
1580 | |
1581 | ELL_3V_SET(vecTmp,((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1582 | -3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads][6]((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1583 | -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][0]+pvl->directAnswer[tenGageEvalGrads][3]))((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1584 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1585 | -3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads][7]((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1586 | -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl->directAnswer[tenGageEvalGrads][4]))((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1587 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]),((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1588 | -3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads][8]((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1589 | -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl->directAnswer[tenGageEvalGrads][5]))((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))) |
1590 | /(pvl->directAnswer[tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))((vecTmp)[0] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer [tenGageEvalGrads][6] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads ][0]+pvl->directAnswer[tenGageEvalGrads][3])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[1] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][7] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][1]+pvl ->directAnswer[tenGageEvalGrads][4])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0])), (vecTmp )[2] = (-3*((evalAns[0]+evalAns[1])*pvl->directAnswer[tenGageEvalGrads ][8] -evalAns[2]*(pvl->directAnswer[tenGageEvalGrads][2]+pvl ->directAnswer[tenGageEvalGrads][5])) /(pvl->directAnswer [tenGageTrace][0]*pvl->directAnswer[tenGageTrace][0]))); |
1591 | } |
1592 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1GradMag)(pvl->query[tenGageCa1GradMag/8] & (1 << (tenGageCa1GradMag % 8)))) { |
1593 | magTmp = pvl->directAnswer[tenGageCa1GradMag][0] = ELL_3V_LEN(vecTmp)(sqrt((((vecTmp))[0]*((vecTmp))[0] + ((vecTmp))[1]*((vecTmp)) [1] + ((vecTmp))[2]*((vecTmp))[2]))); |
1594 | } |
1595 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1Normal)(pvl->query[tenGageCa1Normal/8] & (1 << (tenGageCa1Normal % 8)))) { |
1596 | ELL_3V_SCALE(pvl->directAnswer[tenGageCa1Normal],((pvl->directAnswer[tenGageCa1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCa1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCa1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]) |
1597 | magTmp ? 1/magTmp : 0, vecTmp)((pvl->directAnswer[tenGageCa1Normal])[0] = (magTmp ? 1/magTmp : 0)*(vecTmp)[0], (pvl->directAnswer[tenGageCa1Normal])[1 ] = (magTmp ? 1/magTmp : 0)*(vecTmp)[1], (pvl->directAnswer [tenGageCa1Normal])[2] = (magTmp ? 1/magTmp : 0)*(vecTmp)[2]); |
1598 | } |
1599 | |
1600 | /* --- tensor gradient, rotated into eigenframe of the tensor itself --- */ |
1601 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageTensorGradRotE)(pvl->query[tenGageTensorGradRotE/8] & (1 << (tenGageTensorGradRotE % 8)))) { |
1602 | /* confidence not affected by rotation */ |
1603 | double evecsT[9], evecs[9], tmp[9], tmp2[9]; |
1604 | double diff0, diff1, diff2, diffthresh; |
1605 | double rdiff0, rdiff1, rdiff2; |
1606 | unsigned int evi, tci; |
1607 | |
1608 | ELL_3V_COPY(pvl->directAnswer[tenGageTensorGradRotE],((pvl->directAnswer[tenGageTensorGradRotE])[0] = (pvl-> directAnswer[tenGageTensorGrad])[0], (pvl->directAnswer[tenGageTensorGradRotE ])[1] = (pvl->directAnswer[tenGageTensorGrad])[1], (pvl-> directAnswer[tenGageTensorGradRotE])[2] = (pvl->directAnswer [tenGageTensorGrad])[2]) |
1609 | pvl->directAnswer[tenGageTensorGrad])((pvl->directAnswer[tenGageTensorGradRotE])[0] = (pvl-> directAnswer[tenGageTensorGrad])[0], (pvl->directAnswer[tenGageTensorGradRotE ])[1] = (pvl->directAnswer[tenGageTensorGrad])[1], (pvl-> directAnswer[tenGageTensorGradRotE])[2] = (pvl->directAnswer [tenGageTensorGrad])[2]); |
1610 | |
1611 | /* pre-compute relative eval diffs to detect ill-conditioned case */ |
1612 | diff0=(evalAns[0]-evalAns[1])/(fabs(evalAns[0])+fabs(evalAns[1])); |
1613 | diff1=(evalAns[1]-evalAns[2])/(fabs(evalAns[1])+fabs(evalAns[2])); |
1614 | diff2=(evalAns[0]-evalAns[2])/(fabs(evalAns[0])+fabs(evalAns[2])); |
1615 | diffthresh=0.05; |
1616 | |
1617 | if (diff2>diffthresh) rdiff2=1.0; else rdiff2=diff2/diffthresh; |
1618 | if (diff1>diffthresh) rdiff1=1.0; else rdiff1=diff1/diffthresh; |
1619 | if (diff0>diffthresh) rdiff0=1.0; else rdiff0=diff0/diffthresh; |
1620 | |
1621 | ELL_3M_COPY(evecs,evecAns)((((evecs)+0)[0] = ((evecAns)+0)[0], ((evecs)+0)[1] = ((evecAns )+0)[1], ((evecs)+0)[2] = ((evecAns)+0)[2]), (((evecs)+3)[0] = ((evecAns)+3)[0], ((evecs)+3)[1] = ((evecAns)+3)[1], ((evecs )+3)[2] = ((evecAns)+3)[2]), (((evecs)+6)[0] = ((evecAns)+6)[ 0], ((evecs)+6)[1] = ((evecAns)+6)[1], ((evecs)+6)[2] = ((evecAns )+6)[2])); |
1622 | ELL_3M_TRANSPOSE(evecsT,evecs)((evecsT)[0] = (evecs)[0], (evecsT)[1] = (evecs)[3], (evecsT) [2] = (evecs)[6], (evecsT)[3] = (evecs)[1], (evecsT)[4] = (evecs )[4], (evecsT)[5] = (evecs)[7], (evecsT)[6] = (evecs)[2], (evecsT )[7] = (evecs)[5], (evecsT)[8] = (evecs)[8]); |
1623 | for (evi=0; evi<3; evi++) { |
1624 | char sign; |
1625 | /* first, simply rotate derivatives into eigenframe of value */ |
1626 | TEN_T2M(tmp,gradDdXYZ + evi*7)( (tmp)[0] = (gradDdXYZ + evi*7)[1], (tmp)[1] = (gradDdXYZ + evi *7)[2], (tmp)[2] = (gradDdXYZ + evi*7)[3], (tmp)[3] = (gradDdXYZ + evi*7)[2], (tmp)[4] = (gradDdXYZ + evi*7)[4], (tmp)[5] = ( gradDdXYZ + evi*7)[5], (tmp)[6] = (gradDdXYZ + evi*7)[3], (tmp )[7] = (gradDdXYZ + evi*7)[5], (tmp)[8] = (gradDdXYZ + evi*7) [6] ); |
1627 | ell_3m_mul_d(tmp2,tmp,evecsT); |
1628 | ell_3m_mul_d(tmp,evecs,tmp2); |
1629 | |
1630 | /* If necessary, perform a number of additional rotations to |
1631 | * distribute eigenvalue derivatives equally in ill-defined |
1632 | * cases. Explanation in Schultz and Seidel, "Using Eigenvalue |
1633 | * Derivatives for Edge Detection in DT-MRI Data", DAGM 2008*/ |
1634 | if (rdiff0<1.0) { |
1635 | /* the goal is to find the smallest angle phi such that |
1636 | * rotation by phi around z will result in tmp[0]=tmp[4], i.e.: |
1637 | * |
1638 | * cos(phi)^2*tmp[0]-2*sin(phi)*cos(phi)*tmp[1]+sin(phi)^2*tmp[4] = |
1639 | * sin(phi)^2*tmp[0]+2*sin(phi)*cos(phi)*tmp[1]+cos(phi)^2*tmp[4] |
1640 | * => |
1641 | * tan(2*phi)=(tmp[0]-tmp[4])/(2*tmp[1]) |
1642 | * |
1643 | * we use atan2 to avoid potential problems with tmp[1]==0, |
1644 | * but manipulate the signs of the arguments s.t. the result |
1645 | * is always in [-pi/2,pi/2] (i.e., the smallest solution of |
1646 | * the above equality) |
1647 | */ |
1648 | |
1649 | /* rotate around z axis */ |
1650 | double phi, R[9], RT[9]; |
1651 | sign = (tmp[0]-tmp[4])*tmp[1]>0?1:-1; |
1652 | phi=0.5*atan2(sign*fabs(tmp[0]-tmp[4]),fabs(2*tmp[1])); |
1653 | ELL_3M_ROTATE_Z_SET(R, (1.0-rdiff0)*phi)((((R)+ 0)[0] = (cos((1.0-rdiff0)*phi)), ((R)+ 0)[1] = (-sin( (1.0-rdiff0)*phi)), ((R)+ 0)[2] = (0)), (((R)+ 3)[0] = (+sin( (1.0-rdiff0)*phi)), ((R)+ 3)[1] = (cos((1.0-rdiff0)*phi)), (( R)+ 3)[2] = (0)), (((R)+ 6)[0] = (0), ((R)+ 6)[1] = (0), ((R) + 6)[2] = (1))); |
1654 | ELL_3M_TRANSPOSE(RT,R)((RT)[0] = (R)[0], (RT)[1] = (R)[3], (RT)[2] = (R)[6], (RT)[3 ] = (R)[1], (RT)[4] = (R)[4], (RT)[5] = (R)[7], (RT)[6] = (R) [2], (RT)[7] = (R)[5], (RT)[8] = (R)[8]); |
1655 | ell_3m_mul_d(tmp2,tmp,RT); |
1656 | ell_3m_mul_d(tmp,R,tmp2); |
1657 | } |
1658 | if (rdiff1<1.0) { |
1659 | /* rotate around x axis */ |
1660 | double phi, R[9], RT[9]; |
1661 | sign = (tmp[4]-tmp[8])*tmp[5]>0?1:-1; |
1662 | phi=0.5*atan2(sign*fabs(tmp[4]-tmp[8]),fabs(2*tmp[5])); |
1663 | ELL_3M_ROTATE_X_SET(R, (1.0-rdiff1)*phi)((((R)+ 0)[0] = (1), ((R)+ 0)[1] = (0), ((R)+ 0)[2] = (0)), ( ((R)+ 3)[0] = (0), ((R)+ 3)[1] = (cos((1.0-rdiff1)*phi)), ((R )+ 3)[2] = (-sin((1.0-rdiff1)*phi))), (((R)+ 6)[0] = (0), ((R )+ 6)[1] = (+sin((1.0-rdiff1)*phi)), ((R)+ 6)[2] = (cos((1.0- rdiff1)*phi)))); |
1664 | ELL_3M_TRANSPOSE(RT,R)((RT)[0] = (R)[0], (RT)[1] = (R)[3], (RT)[2] = (R)[6], (RT)[3 ] = (R)[1], (RT)[4] = (R)[4], (RT)[5] = (R)[7], (RT)[6] = (R) [2], (RT)[7] = (R)[5], (RT)[8] = (R)[8]); |
1665 | ell_3m_mul_d(tmp2,tmp,RT); |
1666 | ell_3m_mul_d(tmp,R,tmp2); |
1667 | } |
1668 | if (rdiff2<1.0) { |
1669 | double mean, submatrix[3], isoPhi, _gamma, beta, A, C, R[9],RT[9]; |
1670 | int axis, midaxis, smallest; |
1671 | |
1672 | mean=(tmp[0]+tmp[4]+tmp[8])/3.0; |
1673 | /* what's the median? */ |
1674 | midaxis=0; |
1675 | if ((tmp[0]>tmp[4] && tmp[4]>tmp[8])|| |
1676 | (tmp[0]<tmp[4] && tmp[4]<tmp[8])) |
1677 | midaxis=1; |
1678 | else if ((tmp[4]>tmp[8] && tmp[8]>tmp[0])|| |
1679 | (tmp[4]<tmp[8] && tmp[8]<tmp[0])) |
1680 | midaxis=2; |
1681 | /* do we first rotate around smallest or largest? */ |
1682 | smallest = 0; |
1683 | if (mean>tmp[4*midaxis]) { |
1684 | smallest=1; |
1685 | } |
1686 | |
1687 | sign=1; |
1688 | if ((smallest && (tmp[0]<tmp[4] && tmp[0]<tmp[8])) || |
1689 | (!smallest && (tmp[0]>tmp[4] && tmp[0]>tmp[8]))) { |
1690 | axis=0; |
1691 | submatrix[0]=tmp[4]; |
1692 | submatrix[1]=tmp[5]; |
1693 | submatrix[2]=tmp[8]; |
1694 | if (midaxis!=1) sign=-1; |
1695 | } else if ((smallest && (tmp[4]<tmp[0] && tmp[4]<tmp[8])) || |
1696 | (!smallest && (tmp[4]>tmp[0] && tmp[4]>tmp[8]))) { |
1697 | axis=1; |
1698 | submatrix[0]=tmp[8]; |
1699 | submatrix[1]=tmp[2]; |
1700 | submatrix[2]=tmp[0]; |
1701 | if (midaxis!=2) sign=-1; |
1702 | } else { |
1703 | axis=2; |
1704 | submatrix[0]=tmp[0]; |
1705 | submatrix[1]=tmp[1]; |
1706 | submatrix[2]=tmp[4]; |
1707 | if (midaxis!=0) sign=-1; |
1708 | } |
1709 | isoPhi=0.0f; |
1710 | _gamma=sign*(submatrix[0]-submatrix[2]); |
1711 | beta=-sign*2*submatrix[1]; |
1712 | A=sqrt(_gamma*_gamma+beta*beta); |
1713 | C=atan2(_gamma,beta); |
1714 | isoPhi=0.5*(asin(2.0/A*(mean-0.5*(submatrix[0]+submatrix[2])))-C); |
1715 | /* make sure we use the minimal rotation */ |
1716 | isoPhi=asin(2.0/A*(mean-0.5*(submatrix[0]+submatrix[2]))); |
1717 | if (isoPhi>0) { |
1718 | if (fabs(AIR_PI3.14159265358979323846-isoPhi-C)<fabs(isoPhi-C)) |
1719 | isoPhi=0.5*(AIR_PI3.14159265358979323846-isoPhi-C); |
1720 | else |
1721 | isoPhi=0.5*(isoPhi-C); |
1722 | } else if (isoPhi<0) { |
1723 | if (fabs(-AIR_PI3.14159265358979323846-isoPhi-C)<fabs(isoPhi-C)) |
1724 | isoPhi=0.5*(-AIR_PI3.14159265358979323846-isoPhi-C); |
1725 | else |
1726 | isoPhi=0.5*(isoPhi-C); |
1727 | } |
1728 | |
1729 | /* perform the rotation */ |
1730 | switch (axis) { |
1731 | case 0: |
1732 | ELL_3M_ROTATE_X_SET(R, (1.0-rdiff2)*isoPhi)((((R)+ 0)[0] = (1), ((R)+ 0)[1] = (0), ((R)+ 0)[2] = (0)), ( ((R)+ 3)[0] = (0), ((R)+ 3)[1] = (cos((1.0-rdiff2)*isoPhi)), ( (R)+ 3)[2] = (-sin((1.0-rdiff2)*isoPhi))), (((R)+ 6)[0] = (0) , ((R)+ 6)[1] = (+sin((1.0-rdiff2)*isoPhi)), ((R)+ 6)[2] = (cos ((1.0-rdiff2)*isoPhi)))); |
1733 | break; |
1734 | case 1: |
1735 | ELL_3M_ROTATE_Y_SET(R, (1.0-rdiff2)*isoPhi)((((R)+ 0)[0] = (cos((1.0-rdiff2)*isoPhi)), ((R)+ 0)[1] = (0) , ((R)+ 0)[2] = (+sin((1.0-rdiff2)*isoPhi))), (((R)+ 3)[0] = ( 0), ((R)+ 3)[1] = (1), ((R)+ 3)[2] = (0)), (((R)+ 6)[0] = (-sin ((1.0-rdiff2)*isoPhi)), ((R)+ 6)[1] = (0), ((R)+ 6)[2] = (cos ((1.0-rdiff2)*isoPhi)))); |
1736 | break; |
1737 | default: |
1738 | ELL_3M_ROTATE_Z_SET(R, (1.0-rdiff2)*isoPhi)((((R)+ 0)[0] = (cos((1.0-rdiff2)*isoPhi)), ((R)+ 0)[1] = (-sin ((1.0-rdiff2)*isoPhi)), ((R)+ 0)[2] = (0)), (((R)+ 3)[0] = (+ sin((1.0-rdiff2)*isoPhi)), ((R)+ 3)[1] = (cos((1.0-rdiff2)*isoPhi )), ((R)+ 3)[2] = (0)), (((R)+ 6)[0] = (0), ((R)+ 6)[1] = (0) , ((R)+ 6)[2] = (1))); |
1739 | break; |
1740 | } |
1741 | ELL_3M_TRANSPOSE(RT,R)((RT)[0] = (R)[0], (RT)[1] = (R)[3], (RT)[2] = (R)[6], (RT)[3 ] = (R)[1], (RT)[4] = (R)[4], (RT)[5] = (R)[7], (RT)[6] = (R) [2], (RT)[7] = (R)[5], (RT)[8] = (R)[8]); |
1742 | ell_3m_mul_d(tmp2,tmp,RT); |
1743 | ell_3m_mul_d(tmp,R,tmp2); |
1744 | |
1745 | /* rotate around the now corrected evec */ |
1746 | axis=midaxis; |
Value stored to 'axis' is never read | |
1747 | switch (midaxis) { |
1748 | case 0: |
1749 | sign = (tmp[0]-tmp[4])*tmp[1]>0?1:-1; |
1750 | ELL_3M_ROTATE_X_SET(R, (1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[0]-tmp[4]),fabs(2*tmp[1])))((((R)+ 0)[0] = (1), ((R)+ 0)[1] = (0), ((R)+ 0)[2] = (0)), ( ((R)+ 3)[0] = (0), ((R)+ 3)[1] = (cos((1.0-rdiff2)*0.5*atan2( sign*fabs(tmp[0]-tmp[4]),fabs(2*tmp[1])))), ((R)+ 3)[2] = (-sin ((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[0]-tmp[4]),fabs(2*tmp[1 ]))))), (((R)+ 6)[0] = (0), ((R)+ 6)[1] = (+sin((1.0-rdiff2)* 0.5*atan2(sign*fabs(tmp[0]-tmp[4]),fabs(2*tmp[1])))), ((R)+ 6 )[2] = (cos((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[0]-tmp[4]),fabs (2*tmp[1])))))); |
1751 | break; |
1752 | case 1: |
1753 | sign = (tmp[8]-tmp[0])*tmp[2]>0?1:-1; |
1754 | ELL_3M_ROTATE_Y_SET(R, (1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[8]-tmp[0]),fabs(2*tmp[2])))((((R)+ 0)[0] = (cos((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[8]- tmp[0]),fabs(2*tmp[2])))), ((R)+ 0)[1] = (0), ((R)+ 0)[2] = ( +sin((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[8]-tmp[0]),fabs(2*tmp [2]))))), (((R)+ 3)[0] = (0), ((R)+ 3)[1] = (1), ((R)+ 3)[2] = (0)), (((R)+ 6)[0] = (-sin((1.0-rdiff2)*0.5*atan2(sign*fabs( tmp[8]-tmp[0]),fabs(2*tmp[2])))), ((R)+ 6)[1] = (0), ((R)+ 6) [2] = (cos((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[8]-tmp[0]),fabs (2*tmp[2])))))); |
1755 | break; |
1756 | case 2: |
1757 | sign = (tmp[4]-tmp[8])*tmp[5]>0?1:-1; |
1758 | ELL_3M_ROTATE_Z_SET(R, (1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[4]-tmp[8]),fabs(2*tmp[5])))((((R)+ 0)[0] = (cos((1.0-rdiff2)*0.5*atan2(sign*fabs(tmp[4]- tmp[8]),fabs(2*tmp[5])))), ((R)+ 0)[1] = (-sin((1.0-rdiff2)*0.5 *atan2(sign*fabs(tmp[4]-tmp[8]),fabs(2*tmp[5])))), ((R)+ 0)[2 ] = (0)), (((R)+ 3)[0] = (+sin((1.0-rdiff2)*0.5*atan2(sign*fabs (tmp[4]-tmp[8]),fabs(2*tmp[5])))), ((R)+ 3)[1] = (cos((1.0-rdiff2 )*0.5*atan2(sign*fabs(tmp[4]-tmp[8]),fabs(2*tmp[5])))), ((R)+ 3)[2] = (0)), (((R)+ 6)[0] = (0), ((R)+ 6)[1] = (0), ((R)+ 6 )[2] = (1))); |
1759 | break; |
1760 | } |
1761 | ELL_3M_TRANSPOSE(RT,R)((RT)[0] = (R)[0], (RT)[1] = (R)[3], (RT)[2] = (R)[6], (RT)[3 ] = (R)[1], (RT)[4] = (R)[4], (RT)[5] = (R)[7], (RT)[6] = (R) [2], (RT)[7] = (R)[5], (RT)[8] = (R)[8]); |
1762 | ell_3m_mul_d(tmp2,tmp,RT); |
1763 | ell_3m_mul_d(tmp,R,tmp2); |
1764 | } |
1765 | /* Now, we can set the answer */ |
1766 | TEN_M2T(tmp2,tmp)( (tmp2)[1] = (tmp)[0], (tmp2)[2] = ((tmp)[1]+(tmp)[3])/2.0, ( tmp2)[3] = ((tmp)[2]+(tmp)[6])/2.0, (tmp2)[4] = (tmp)[4], (tmp2 )[5] = ((tmp)[5]+(tmp)[7])/2.0, (tmp2)[6] = (tmp)[8] ); |
1767 | for (tci=1; tci<7; tci++) { |
1768 | pvl->directAnswer[tenGageTensorGradRotE][3*tci+evi] = tmp2[tci]; |
1769 | } |
1770 | } |
1771 | } |
1772 | |
1773 | /* --- Eigenvalue Hessians: rotate partial second derivatives into |
1774 | * eigenframe and take into account correction factor based on |
1775 | * eigenvector derivatives --- */ |
1776 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageEvalHessian)(pvl->query[tenGageEvalHessian/8] & (1 << (tenGageEvalHessian % 8)))) { |
1777 | /* some aliases for convenience: */ |
1778 | double *thess = pvl->directAnswer[tenGageHessian]; |
1779 | double *evhess = pvl->directAnswer[tenGageEvalHessian]; |
1780 | double *tgradE = pvl->directAnswer[tenGageTensorGradRotE]; |
1781 | int dira, dirb; /* directions of first/second partial derivative */ |
1782 | int k; /* number of the eigenvalue */ |
1783 | double evecsT[9], tmp[9]; |
1784 | /* HEY: some copy-paste from tenGageEvalGrads */ |
1785 | double eps=0.05; /* treshold for handling degeneracies */ |
1786 | double rel1, rel2, rel3, w1, w2; |
1787 | /* interpolation weights from relative eigenvalue distance */ |
1788 | rel1=evalAns[0]*evalAns[0]+evalAns[1]*evalAns[1]; |
1789 | if (rel1>1e-10) |
1790 | rel1=(evalAns[0]-evalAns[1])*(evalAns[0]-evalAns[1])/rel1; |
1791 | rel2=evalAns[0]*evalAns[0]+evalAns[2]*evalAns[2]; |
1792 | if (rel2>1e-10) |
1793 | rel2=(evalAns[0]-evalAns[2])*(evalAns[0]-evalAns[2])/rel2; |
1794 | rel3=evalAns[1]*evalAns[1]+evalAns[2]*evalAns[2]; |
1795 | if (rel3>1e-10) |
1796 | rel3=(evalAns[1]-evalAns[2])*(evalAns[1]-evalAns[2])/rel3; |
1797 | w1=rel1/eps-1; |
1798 | w1*=w1; |
1799 | w2=rel2/eps-1; |
1800 | w2*=w2; |
1801 | |
1802 | ELL_3M_TRANSPOSE(evecsT,evecAns)((evecsT)[0] = (evecAns)[0], (evecsT)[1] = (evecAns)[3], (evecsT )[2] = (evecAns)[6], (evecsT)[3] = (evecAns)[1], (evecsT)[4] = (evecAns)[4], (evecsT)[5] = (evecAns)[7], (evecsT)[6] = (evecAns )[2], (evecsT)[7] = (evecAns)[5], (evecsT)[8] = (evecAns)[8]); |
1803 | for (dira=0; dira<3; dira++) { |
1804 | for (dirb=0; dirb<=dira; dirb++) { /* exploit symmetry of Hessian */ |
1805 | double rdiff1,rdiff2; |
1806 | double l1res, l2res, l3res; |
1807 | /* collect second partial derivatives in dira,dirb */ |
1808 | double H[9]; |
1809 | ELL_3V_SET(H, thess[9+3*dirb+dira], thess[18+3*dirb+dira],((H)[0] = (thess[9+3*dirb+dira]), (H)[1] = (thess[18+3*dirb+dira ]), (H)[2] = (thess[27+3*dirb+dira])) |
1810 | thess[27+3*dirb+dira])((H)[0] = (thess[9+3*dirb+dira]), (H)[1] = (thess[18+3*dirb+dira ]), (H)[2] = (thess[27+3*dirb+dira])); |
1811 | ELL_3V_SET(H+3, thess[18+3*dirb+dira], thess[36+3*dirb+dira],((H+3)[0] = (thess[18+3*dirb+dira]), (H+3)[1] = (thess[36+3*dirb +dira]), (H+3)[2] = (thess[45+3*dirb+dira])) |
1812 | thess[45+3*dirb+dira])((H+3)[0] = (thess[18+3*dirb+dira]), (H+3)[1] = (thess[36+3*dirb +dira]), (H+3)[2] = (thess[45+3*dirb+dira])); |
1813 | ELL_3V_SET(H+6, thess[27+3*dirb+dira], thess[45+3*dirb+dira],((H+6)[0] = (thess[27+3*dirb+dira]), (H+6)[1] = (thess[45+3*dirb +dira]), (H+6)[2] = (thess[54+3*dirb+dira])) |
1814 | thess[54+3*dirb+dira])((H+6)[0] = (thess[27+3*dirb+dira]), (H+6)[1] = (thess[45+3*dirb +dira]), (H+6)[2] = (thess[54+3*dirb+dira])); |
1815 | /* rotate into eigenframe of value */ |
1816 | ell_3m_mul_d(tmp,H,evecsT); |
1817 | ell_3m_mul_d(H,evecAns,tmp); |
1818 | |
1819 | /* we have to divide by rdiff=lambda_1-lambda_2; the following |
1820 | * is a heuristic to avoid numerical problems in case rdiff is |
1821 | * near zero */ |
1822 | if (rel1>eps) rdiff1=1.0/(evalAns[0]-evalAns[1]); |
1823 | else if (rel1>1e-10) rdiff1=(rel1/eps)/(evalAns[0]-evalAns[1]); |
1824 | else rdiff1=0; |
1825 | |
1826 | if (rel2>eps) rdiff2=1.0/(evalAns[0]-evalAns[2]); |
1827 | else if (rel2>1e-10) rdiff2=(rel2/eps)/(evalAns[0]-evalAns[2]); |
1828 | else rdiff2=0; |
1829 | |
1830 | l1res=H[0]+2*(tgradE[6+dira]*tgradE[6+dirb]*rdiff1+ |
1831 | tgradE[9+dira]*tgradE[9+dirb]*rdiff2); |
1832 | |
1833 | if (rel1>eps) rdiff1=1.0/(evalAns[1]-evalAns[0]); |
1834 | else if (rel1>1e-10) rdiff1=(rel1/eps)/(evalAns[1]-evalAns[0]); |
1835 | else rdiff1=0; |
1836 | |
1837 | if (rel3>eps) rdiff2=1.0/(evalAns[1]-evalAns[2]); |
1838 | else if (rel3>1e-10) rdiff2=(rel3/eps)/(evalAns[1]-evalAns[2]); |
1839 | else rdiff2=0; |
1840 | l2res=H[4]+2*(tgradE[6+dira]*tgradE[6+dirb]*rdiff1+ |
1841 | tgradE[15+dira]*tgradE[15+dirb]*rdiff2); |
1842 | |
1843 | if (rel2>eps) rdiff1=1.0/(evalAns[2]-evalAns[0]); |
1844 | else if (rel2>1e-10) rdiff1=(rel2/eps)/(evalAns[2]-evalAns[0]); |
1845 | else rdiff1=0; |
1846 | |
1847 | if (rel3>eps) rdiff2=1.0/(evalAns[2]-evalAns[1]); |
1848 | else if (rel3>1e-10) rdiff2=(rel3/eps)/(evalAns[2]-evalAns[1]); |
1849 | else rdiff2=0; |
1850 | |
1851 | l3res=H[8]+2*(tgradE[9+dira]*tgradE[9+dirb]*rdiff1+ |
1852 | tgradE[15+dira]*tgradE[15+dirb]*rdiff2); |
1853 | |
1854 | if (rel1>eps) |
1855 | evhess[3*dirb+dira]=l1res; |
1856 | else { |
1857 | if (rel2>eps) |
1858 | evhess[3*dirb+dira]=(1-0.5*w1)*l1res+0.5*w1*l2res; |
1859 | else |
1860 | evhess[3*dirb+dira]=(1-0.5*w1-w1*w2/6.0)*l1res+ |
1861 | (0.5*w1-w1*w2/6.0)*l2res+ |
1862 | w1*w2/3.0*l3res; |
1863 | } |
1864 | |
1865 | if (rel2>eps) |
1866 | evhess[18+3*dirb+dira]=l3res; |
1867 | else { |
1868 | if (rel1>eps) |
1869 | evhess[18+3*dirb+dira]=(1-0.5*w2)*l3res+0.5*w2*l2res; |
1870 | else |
1871 | evhess[18+3*dirb+dira]=(1-0.5*w2-w1*w2/6.0)*l3res+ |
1872 | (0.5*w2-w1*w2/6.0)*l2res+ |
1873 | w1*w2/3.0*l1res; |
1874 | } |
1875 | evhess[9+3*dirb+dira]=l1res+l2res+l3res - evhess[3*dirb+dira] - |
1876 | evhess[18+3*dirb+dira]; |
1877 | } |
1878 | } |
1879 | for (dira=0; dira<2; dira++) { |
1880 | for (dirb=dira+1; dirb<3; dirb++) { /* copy over symmetric values */ |
1881 | for (k=0; k<3; k++) { |
1882 | evhess[9*k+3*dirb+dira]=evhess[9*k+3*dira+dirb]; |
1883 | } |
1884 | } |
1885 | } |
1886 | } |
1887 | |
1888 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1Hessian)(pvl->query[tenGageCl1Hessian/8] & (1 << (tenGageCl1Hessian % 8)))) { |
1889 | int dira, dirb; |
1890 | double *cl1hess = pvl->directAnswer[tenGageCl1Hessian]; |
1891 | double *tgradE = pvl->directAnswer[tenGageTensorGradRotE]; |
1892 | double *evhess = pvl->directAnswer[tenGageEvalHessian]; |
1893 | /* A and B come out of the quotient rule; cf. appendix of Schultz |
1894 | * et al., TVCG 2010 for more details */ |
1895 | double B = (evalAns[0]+evalAns[1]+evalAns[2])* |
1896 | (evalAns[0]+evalAns[1]+evalAns[2]); |
1897 | for (dira=0; dira<3; dira++) { |
1898 | for (dirb=0; dirb<=dira; dirb++) { /* again, exploit Hessian symmetry */ |
1899 | double A = evalAns[0]*(-2*tgradE[12+dira]-tgradE[18+dira])+ |
1900 | evalAns[1]*(2*tgradE[3+dira]+tgradE[18+dira])+ |
1901 | evalAns[2]*(tgradE[3+dira]-tgradE[12+dira]); |
1902 | double Ad = tgradE[3+dirb]*(-2*tgradE[12+dira]-tgradE[18+dira])+ |
1903 | evalAns[0]*(-2*evhess[9+3*dirb+dira]-evhess[18+3*dirb+dira])+ |
1904 | tgradE[12+dirb]*(2*tgradE[3+dira]+tgradE[18+dira])+ |
1905 | evalAns[1]*(2*evhess[3*dirb+dira]+evhess[18+3*dirb+dira])+ |
1906 | tgradE[18+dirb]*(tgradE[3+dira]-tgradE[12+dira])+ |
1907 | evalAns[2]*(evhess[3*dirb+dira]-evhess[9+3*dirb+dira]); |
1908 | double Bd = 2*(evalAns[0]+evalAns[1]+evalAns[2])* |
1909 | (tgradE[3+dirb]+tgradE[12+dirb]+tgradE[18+dirb]); |
1910 | cl1hess[3*dirb+dira]=Ad/B-A/B*Bd/B; |
1911 | } |
1912 | } |
1913 | for (dira=0; dira<2; dira++) { |
1914 | for (dirb=dira+1; dirb<3; dirb++) { /* copy over symmetric values */ |
1915 | cl1hess[3*dirb+dira]=cl1hess[3*dira+dirb]; |
1916 | } |
1917 | } |
1918 | } |
1919 | |
1920 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1HessianEvec)(pvl->query[tenGageCl1HessianEvec/8] & (1 << (tenGageCl1HessianEvec % 8)))) { |
1921 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageCl1HessianEval], |
1922 | pvl->directAnswer[tenGageCl1HessianEvec], |
1923 | pvl->directAnswer[tenGageCl1Hessian], AIR_TRUE1); |
1924 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCl1HessianEval)(pvl->query[tenGageCl1HessianEval/8] & (1 << (tenGageCl1HessianEval % 8)))) { |
1925 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageCl1HessianEval], |
1926 | pvl->directAnswer[tenGageCl1Hessian], AIR_TRUE1); |
1927 | } |
1928 | |
1929 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1Hessian)(pvl->query[tenGageCp1Hessian/8] & (1 << (tenGageCp1Hessian % 8)))) { |
1930 | int dira, dirb; |
1931 | double *cp1hess = pvl->directAnswer[tenGageCp1Hessian]; |
1932 | double *tgradE = pvl->directAnswer[tenGageTensorGradRotE]; |
1933 | double *evhess = pvl->directAnswer[tenGageEvalHessian]; |
1934 | double B = (evalAns[0]+evalAns[1]+evalAns[2])* |
1935 | (evalAns[0]+evalAns[1]+evalAns[2]); |
1936 | for (dira=0; dira<3; dira++) { |
1937 | for (dirb=0; dirb<=dira; dirb++) { /* again, exploit Hessian symmetry */ |
1938 | double A = 2*(evalAns[0]*(tgradE[12+dira]-tgradE[18+dira])+ |
1939 | evalAns[1]*(-tgradE[3+dira]-2*tgradE[18+dira])+ |
1940 | evalAns[2]*(tgradE[3+dira]+2*tgradE[12+dira])); |
1941 | double Ad=2*(evalAns[0]*(evhess[9+3*dirb+dira]-evhess[18+3*dirb+dira])+ |
1942 | evalAns[1]*(-evhess[3*dirb+dira]-2*evhess[18+3*dirb+dira])+ |
1943 | evalAns[2]*(evhess[3*dirb+dira]+2*evhess[9+3*dirb+dira])+ |
1944 | tgradE[3+dirb]*(tgradE[12+dira]-tgradE[18+dira])+ |
1945 | tgradE[12+dirb]*(-tgradE[3+dira]-2*tgradE[18+dira])+ |
1946 | tgradE[18+dirb]*(tgradE[3+dira]+2*tgradE[12+dira])); |
1947 | double Bd = 2*(evalAns[0]+evalAns[1]+evalAns[2])* |
1948 | (tgradE[3+dirb]+tgradE[12+dirb]+tgradE[18+dirb]); |
1949 | cp1hess[3*dirb+dira]=Ad/B-A/B*Bd/B; |
1950 | } |
1951 | } |
1952 | for (dira=0; dira<2; dira++) { |
1953 | for (dirb=dira+1; dirb<3; dirb++) { /* copy over symmetric values */ |
1954 | cp1hess[3*dirb+dira]=cp1hess[3*dira+dirb]; |
1955 | } |
1956 | } |
1957 | } |
1958 | |
1959 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1HessianEvec)(pvl->query[tenGageCp1HessianEvec/8] & (1 << (tenGageCp1HessianEvec % 8)))) { |
1960 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageCp1HessianEval], |
1961 | pvl->directAnswer[tenGageCp1HessianEvec], |
1962 | pvl->directAnswer[tenGageCp1Hessian], AIR_TRUE1); |
1963 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCp1HessianEval)(pvl->query[tenGageCp1HessianEval/8] & (1 << (tenGageCp1HessianEval % 8)))) { |
1964 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageCp1HessianEval], |
1965 | pvl->directAnswer[tenGageCp1Hessian], AIR_TRUE1); |
1966 | } |
1967 | |
1968 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1Hessian)(pvl->query[tenGageCa1Hessian/8] & (1 << (tenGageCa1Hessian % 8)))) { |
1969 | int dira, dirb; |
1970 | double *ca1hess = pvl->directAnswer[tenGageCa1Hessian]; |
1971 | double *tgradE = pvl->directAnswer[tenGageTensorGradRotE]; |
1972 | double *evhess = pvl->directAnswer[tenGageEvalHessian]; |
1973 | double B = (evalAns[0]+evalAns[1]+evalAns[2])* |
1974 | (evalAns[0]+evalAns[1]+evalAns[2]); |
1975 | for (dira=0; dira<3; dira++) { |
1976 | for (dirb=0; dirb<=dira; dirb++) { /* again, exploit Hessian symmetry */ |
1977 | double A = 3*(evalAns[0]*tgradE[18+dira]+evalAns[1]*tgradE[18+dira]+ |
1978 | evalAns[2]*(-tgradE[3+dira]-tgradE[12+dira])); |
1979 | double Ad = 3*(tgradE[3+dirb]*tgradE[18+dira]+ |
1980 | tgradE[12+dirb]*tgradE[18+dira]+ |
1981 | tgradE[18+dirb]*(-tgradE[3+dira]-tgradE[12+dira])+ |
1982 | evalAns[0]*evhess[18+3*dirb+dira]+ |
1983 | evalAns[1]*evhess[18+3*dirb+dira]+ |
1984 | evalAns[2]*(-evhess[3*dirb+dira]-evhess[9+3*dirb+dira])); |
1985 | double Bd = 2*(evalAns[0]+evalAns[1]+evalAns[2])* |
1986 | (tgradE[3+dirb]+tgradE[12+dirb]+tgradE[18+dirb]); |
1987 | /* above formulas are true for cs, so flip sign here */ |
1988 | ca1hess[3*dirb+dira]=-Ad/B+A/B*Bd/B; |
1989 | } |
1990 | } |
1991 | for (dira=0; dira<2; dira++) { |
1992 | for (dirb=dira+1; dirb<3; dirb++) { /* copy over symmetric values */ |
1993 | ca1hess[3*dirb+dira]=ca1hess[3*dira+dirb]; |
1994 | } |
1995 | } |
1996 | } |
1997 | |
1998 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1HessianEvec)(pvl->query[tenGageCa1HessianEvec/8] & (1 << (tenGageCa1HessianEvec % 8)))) { |
1999 | ell_3m_eigensolve_d(pvl->directAnswer[tenGageCa1HessianEval], |
2000 | pvl->directAnswer[tenGageCa1HessianEvec], |
2001 | pvl->directAnswer[tenGageCa1Hessian], AIR_TRUE1); |
2002 | } else if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageCa1HessianEval)(pvl->query[tenGageCa1HessianEval/8] & (1 << (tenGageCa1HessianEval % 8)))) { |
2003 | ell_3m_eigenvalues_d(pvl->directAnswer[tenGageCa1HessianEval], |
2004 | pvl->directAnswer[tenGageCa1Hessian], AIR_TRUE1); |
2005 | } |
2006 | |
2007 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFiberCurving)(pvl->query[tenGageFiberCurving/8] & (1 << (tenGageFiberCurving % 8))) |
2008 | || GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFiberDispersion)(pvl->query[tenGageFiberDispersion/8] & (1 << (tenGageFiberDispersion % 8)))) { |
2009 | double rtout[7], evout[7]; |
2010 | TEN_T3V_OUTER(rtout, pvl->directAnswer[tenGageRotTans] + 1*3)( (rtout)[0] = 1.0, (rtout)[1] = (pvl->directAnswer[tenGageRotTans ] + 1*3)[0]*(pvl->directAnswer[tenGageRotTans] + 1*3)[0], ( rtout)[2] = (pvl->directAnswer[tenGageRotTans] + 1*3)[0]*( pvl->directAnswer[tenGageRotTans] + 1*3)[1], (rtout)[3] = ( pvl->directAnswer[tenGageRotTans] + 1*3)[0]*(pvl->directAnswer [tenGageRotTans] + 1*3)[2], (rtout)[4] = (pvl->directAnswer [tenGageRotTans] + 1*3)[1]*(pvl->directAnswer[tenGageRotTans ] + 1*3)[1], (rtout)[5] = (pvl->directAnswer[tenGageRotTans ] + 1*3)[1]*(pvl->directAnswer[tenGageRotTans] + 1*3)[2], ( rtout)[6] = (pvl->directAnswer[tenGageRotTans] + 1*3)[2]*( pvl->directAnswer[tenGageRotTans] + 1*3)[2]); |
2011 | TEN_T3V_OUTER_INCR(rtout, pvl->directAnswer[tenGageRotTans] + 2*3)( (rtout)[1] += (pvl->directAnswer[tenGageRotTans] + 2*3)[ 0]*(pvl->directAnswer[tenGageRotTans] + 2*3)[0], (rtout)[2 ] += (pvl->directAnswer[tenGageRotTans] + 2*3)[0]*(pvl-> directAnswer[tenGageRotTans] + 2*3)[1], (rtout)[3] += (pvl-> directAnswer[tenGageRotTans] + 2*3)[0]*(pvl->directAnswer[ tenGageRotTans] + 2*3)[2], (rtout)[4] += (pvl->directAnswer [tenGageRotTans] + 2*3)[1]*(pvl->directAnswer[tenGageRotTans ] + 2*3)[1], (rtout)[5] += (pvl->directAnswer[tenGageRotTans ] + 2*3)[1]*(pvl->directAnswer[tenGageRotTans] + 2*3)[2], ( rtout)[6] += (pvl->directAnswer[tenGageRotTans] + 2*3)[2]* (pvl->directAnswer[tenGageRotTans] + 2*3)[2]); |
2012 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFiberCurving)(pvl->query[tenGageFiberCurving/8] & (1 << (tenGageFiberCurving % 8)))) { |
2013 | TEN_T3V_OUTER(evout, pvl->directAnswer[tenGageEvec0])( (evout)[0] = 1.0, (evout)[1] = (pvl->directAnswer[tenGageEvec0 ])[0]*(pvl->directAnswer[tenGageEvec0])[0], (evout)[2] = ( pvl->directAnswer[tenGageEvec0])[0]*(pvl->directAnswer[ tenGageEvec0])[1], (evout)[3] = (pvl->directAnswer[tenGageEvec0 ])[0]*(pvl->directAnswer[tenGageEvec0])[2], (evout)[4] = ( pvl->directAnswer[tenGageEvec0])[1]*(pvl->directAnswer[ tenGageEvec0])[1], (evout)[5] = (pvl->directAnswer[tenGageEvec0 ])[1]*(pvl->directAnswer[tenGageEvec0])[2], (evout)[6] = ( pvl->directAnswer[tenGageEvec0])[2]*(pvl->directAnswer[ tenGageEvec0])[2]); |
2014 | pvl->directAnswer[tenGageFiberCurving][0] = TEN_T_DOT(rtout, evout)( (rtout)[1]*(evout)[1] + 2*(rtout)[2]*(evout)[2] + 2*(rtout) [3]*(evout)[3] + (rtout)[4]*(evout)[4] + 2*(rtout)[5]*(evout) [5] + (rtout)[6]*(evout)[6] ); |
2015 | /* pvl->directAnswer[tenGageFiberCurving][0] *= 100000; */ |
2016 | } |
2017 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageFiberDispersion)(pvl->query[tenGageFiberDispersion/8] & (1 << (tenGageFiberDispersion % 8)))) { |
2018 | TEN_T3V_OUTER(evout, pvl->directAnswer[tenGageEvec1])( (evout)[0] = 1.0, (evout)[1] = (pvl->directAnswer[tenGageEvec1 ])[0]*(pvl->directAnswer[tenGageEvec1])[0], (evout)[2] = ( pvl->directAnswer[tenGageEvec1])[0]*(pvl->directAnswer[ tenGageEvec1])[1], (evout)[3] = (pvl->directAnswer[tenGageEvec1 ])[0]*(pvl->directAnswer[tenGageEvec1])[2], (evout)[4] = ( pvl->directAnswer[tenGageEvec1])[1]*(pvl->directAnswer[ tenGageEvec1])[1], (evout)[5] = (pvl->directAnswer[tenGageEvec1 ])[1]*(pvl->directAnswer[tenGageEvec1])[2], (evout)[6] = ( pvl->directAnswer[tenGageEvec1])[2]*(pvl->directAnswer[ tenGageEvec1])[2]); |
2019 | TEN_T3V_OUTER_INCR(evout, pvl->directAnswer[tenGageEvec2])( (evout)[1] += (pvl->directAnswer[tenGageEvec2])[0]*(pvl-> directAnswer[tenGageEvec2])[0], (evout)[2] += (pvl->directAnswer [tenGageEvec2])[0]*(pvl->directAnswer[tenGageEvec2])[1], ( evout)[3] += (pvl->directAnswer[tenGageEvec2])[0]*(pvl-> directAnswer[tenGageEvec2])[2], (evout)[4] += (pvl->directAnswer [tenGageEvec2])[1]*(pvl->directAnswer[tenGageEvec2])[1], ( evout)[5] += (pvl->directAnswer[tenGageEvec2])[1]*(pvl-> directAnswer[tenGageEvec2])[2], (evout)[6] += (pvl->directAnswer [tenGageEvec2])[2]*(pvl->directAnswer[tenGageEvec2])[2]); |
2020 | pvl->directAnswer[tenGageFiberDispersion][0] = TEN_T_DOT(rtout, evout)( (rtout)[1]*(evout)[1] + 2*(rtout)[2]*(evout)[2] + 2*(rtout) [3]*(evout)[3] + (rtout)[4]*(evout)[4] + 2*(rtout)[5]*(evout) [5] + (rtout)[6]*(evout)[6] ); |
2021 | /* pvl->directAnswer[tenGageFiberDispersion][0] *= 100000; */ |
2022 | } |
2023 | } |
2024 | |
2025 | /* --- Aniso --- */ |
2026 | if (GAGE_QUERY_ITEM_TEST(pvl->query, tenGageAniso)(pvl->query[tenGageAniso/8] & (1 << (tenGageAniso % 8)))) { |
2027 | for (ci=tenAnisoUnknown+1; ci<=TEN_ANISO_MAX29; ci++) { |
2028 | pvl->directAnswer[tenGageAniso][ci] = tenAnisoEval_d(evalAns, ci); |
2029 | } |
2030 | } |
2031 | |
2032 | return; |
2033 | } |
2034 | |
2035 | |
2036 | void * |
2037 | _tenGagePvlDataNew(const struct gageKind_t *kind) { |
2038 | _tenGagePvlData *pvlData; |
2039 | |
2040 | AIR_UNUSED(kind)(void)(kind); |
2041 | pvlData = AIR_CALLOC(1, _tenGagePvlData)(_tenGagePvlData*)(calloc((1), sizeof(_tenGagePvlData))); |
2042 | if (pvlData) { |
2043 | pvlData->buffTen = NULL((void*)0); |
2044 | pvlData->buffWght = NULL((void*)0); |
2045 | pvlData->tip = tenInterpParmNew(); |
2046 | } |
2047 | return pvlData; |
2048 | } |
2049 | |
2050 | void * |
2051 | _tenGagePvlDataCopy(const struct gageKind_t *kind, |
2052 | const void *_pvlDataOld) { |
2053 | _tenGagePvlData *pvlDataNew, *pvlDataOld; |
2054 | unsigned int num; |
2055 | |
2056 | AIR_UNUSED(kind)(void)(kind); |
2057 | pvlDataOld = AIR_CAST(_tenGagePvlData *, _pvlDataOld)((_tenGagePvlData *)(_pvlDataOld)); |
2058 | num = pvlDataOld->tip->allocLen; |
2059 | pvlDataNew = AIR_CALLOC(1, _tenGagePvlData)(_tenGagePvlData*)(calloc((1), sizeof(_tenGagePvlData))); |
2060 | if (pvlDataNew) { |
2061 | pvlDataNew->buffTen = AIR_CALLOC(7*num, double)(double*)(calloc((7*num), sizeof(double))); |
2062 | pvlDataNew->buffWght = AIR_CALLOC(num, double)(double*)(calloc((num), sizeof(double))); |
2063 | pvlDataNew->tip = tenInterpParmCopy(pvlDataOld->tip); |
2064 | } |
2065 | return pvlDataNew; |
2066 | } |
2067 | |
2068 | void * |
2069 | _tenGagePvlDataNix(const struct gageKind_t *kind, |
2070 | void *_pvlData) { |
2071 | _tenGagePvlData *pvlData; |
2072 | |
2073 | AIR_UNUSED(kind)(void)(kind); |
2074 | pvlData = AIR_CAST(_tenGagePvlData *, _pvlData)((_tenGagePvlData *)(_pvlData)); |
2075 | airFree(pvlData->buffTen); |
2076 | airFree(pvlData->buffWght); |
2077 | tenInterpParmNix(pvlData->tip); |
2078 | airFree(pvlData); |
2079 | return NULL((void*)0); |
2080 | } |
2081 | |
2082 | int |
2083 | _tenGagePvlDataUpdate(const struct gageKind_t *kind, |
2084 | const gageContext *ctx, const gagePerVolume *pvl, |
2085 | const void *_pvlData) { |
2086 | _tenGagePvlData *pvlData; |
2087 | unsigned int fd, num; |
2088 | |
2089 | AIR_UNUSED(kind)(void)(kind); |
2090 | AIR_UNUSED(pvl)(void)(pvl); |
2091 | pvlData = AIR_CAST(_tenGagePvlData *, _pvlData)((_tenGagePvlData *)(_pvlData)); |
2092 | fd = AIR_CAST(unsigned int, 2*ctx->radius)((unsigned int)(2*ctx->radius)); |
2093 | num = fd*fd*fd; |
2094 | if (num != pvlData->tip->allocLen) { |
2095 | /* HEY: no error checking */ |
2096 | airFree(pvlData->buffTen); |
2097 | pvlData->buffTen = NULL((void*)0); |
2098 | airFree(pvlData->buffWght); |
2099 | pvlData->buffWght = NULL((void*)0); |
2100 | pvlData->buffTen = AIR_CALLOC(7*num, double)(double*)(calloc((7*num), sizeof(double))); |
2101 | pvlData->buffWght = AIR_CALLOC(num, double)(double*)(calloc((num), sizeof(double))); |
2102 | tenInterpParmBufferAlloc(pvlData->tip, num); |
2103 | } |
2104 | return 0; |
2105 | } |
2106 | |
2107 | |
2108 | gageKind |
2109 | _tenGageKind = { |
2110 | AIR_FALSE0, /* statically allocated */ |
2111 | "tensor", |
2112 | &_tenGage, |
2113 | 1, |
2114 | 7, |
2115 | TEN_GAGE_ITEM_MAX207, |
2116 | _tenGageTable, |
2117 | _tenGageIv3Print, |
2118 | _tenGageFilter, |
2119 | _tenGageAnswer, |
2120 | _tenGagePvlDataNew, |
2121 | _tenGagePvlDataCopy, |
2122 | _tenGagePvlDataNix, |
2123 | _tenGagePvlDataUpdate, |
2124 | NULL((void*)0) |
2125 | }; |
2126 | gageKind * |
2127 | tenGageKind = &_tenGageKind; |