67 const Teuchos::RCP<
const DerivBasis<ordinal_type, value_type> >&
basis,
68 const Teuchos::RCP<
const Teuchos::SerialDenseMatrix<ordinal_type, value_type> >&
Bij,
76 ordinal_type
size()
const {
return sz; }
79 Teuchos::RCP<const OrthogPolyBasis<ordinal_type, value_type> >
83 virtual Teuchos::RCP<const Sparse3Tensor<ordinal_type, value_type> >
88 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
89 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
91 void plusEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
93 void minusEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
95 void timesEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
97 void divideEqual(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
101 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
102 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
104 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
105 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
107 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
108 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
110 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
111 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
113 void plus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
114 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
115 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
116 void plus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
118 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
119 void plus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
120 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
121 const value_type& b);
122 void minus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
123 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
124 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
125 void minus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
127 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
128 void minus(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
129 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
130 const value_type& b);
131 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
132 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
133 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
134 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
136 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
137 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
138 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
139 const value_type& b);
140 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
141 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
142 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
143 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
145 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
146 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
147 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
148 const value_type& b);
150 void exp(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
151 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
152 void log(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
153 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
154 void log10(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
155 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
156 void sqrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
157 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
158 void cbrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
159 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
160 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
161 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
162 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
163 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
165 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
166 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
167 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
168 const value_type& b);
169 void sincos(OrthogPolyApprox<ordinal_type, value_type, node_type>& s,
170 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
171 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
172 void cos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
173 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
174 void sin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
175 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
176 void tan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
177 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
178 void sinhcosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& s,
179 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
180 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
181 void cosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
182 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
183 void sinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
184 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
185 void tanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
186 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
187 template <
typename OpT>
188 void quad(
const OpT& quad_func,
189 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
190 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
191 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
192 void acos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
193 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
194 void asin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
195 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
196 void atan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
197 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
207 void acosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
208 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
209 void asinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
210 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
211 void atanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
212 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
213 void abs(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
214 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
215 void fabs(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
216 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
217 void max(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
218 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
219 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
220 void max(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
222 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
223 void max(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
224 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
225 const value_type& b);
226 void min(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
227 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
228 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
229 void min(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
231 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
232 void min(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
233 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
234 const value_type& b);
235 void derivative(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
236 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
249 Teuchos::RCP< const Stokhos::DerivBasis<ordinal_type, value_type> >
basis;
252 Teuchos::RCP<const Teuchos::SerialDenseMatrix<ordinal_type, value_type> >
Bij;
255 Teuchos::RCP<const Stokhos::Sparse3Tensor<ordinal_type, value_type> >
Cijk;
258 Teuchos::RCP<const Stokhos::Dense3Tensor<ordinal_type, value_type> >
Dijk;
264 Teuchos::SerialDenseMatrix<ordinal_type, value_type>
A;
267 Teuchos::SerialDenseMatrix<ordinal_type, value_type>
B;
270 Teuchos::Array<ordinal_type>
piv;
278 ordinal_type
solve(ordinal_type s, ordinal_type nrhs);
300 return std::log(a+std::sqrt(a*a-value_type(1.0)));
306 return std::log(a+std::sqrt(a*a+value_type(1.0)));
312 return 0.5*std::log((value_type(1.0)+a)/(value_type(1.0)-a));