Bug Summary

File:src/ten/tenGage.c
Location:line 1714, column 9
Description:Value stored to 'isoPhi' is never read

Annotated Source Code

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
27typedef 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
33gageItemEntry
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
291void
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
335void
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
382void
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);
Value stored to 'isoPhi' is never read
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;
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
2036void *
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
2050void *
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
2068void *
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
2082int
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
2108gageKind
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};
2126gageKind *
2127tenGageKind = &_tenGageKind;