68 const Teuchos::RCP<
const OrthogPolyBasis<ordinal_type, value_type> >&
basis,
70 const Teuchos::RCP<
const Quadrature<ordinal_type, value_type> >&
quad,
71 const Teuchos::RCP<Teuchos::ParameterList>&
params = Teuchos::null);
77 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
80 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
84 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
85 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
87 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
88 const OrthogPolyApprox<ordinal_type, value_type, node_type>& x);
91 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
92 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
93 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
94 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
96 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
97 void times(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
98 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
100 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
101 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
102 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
103 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
105 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
106 void divide(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
107 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
108 const value_type& b);
110 void exp(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
111 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
112 void log(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
113 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
114 void log10(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
115 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
116 void sqrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
117 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
118 void cbrt(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
119 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
120 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
121 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
122 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
123 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
125 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
126 void pow(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
127 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
128 const value_type& b);
129 void cos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
130 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
131 void sin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
132 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
133 void tan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
134 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
135 void cosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
136 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
137 void sinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
138 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
139 void tanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
140 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
141 void acos(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
142 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
143 void asin(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
144 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
145 void atan(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
146 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
147 void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
148 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
149 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
150 void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
152 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
153 void atan2(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
154 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
155 const value_type& b);
156 void acosh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
157 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
158 void asinh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
159 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
160 void atanh(OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
161 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
163 template <
typename FuncT>
164 void nary_op(
const FuncT& func,
165 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
166 const OrthogPolyApprox<ordinal_type, value_type, node_type>** a);
168 template <
typename ExprT1,
typename ExprT2>
170 const ExprT2& b)
const;
172 template <
typename ExprT1,
typename ExprT2>
174 const ExprT2& b)
const;
190 Teuchos::RCP<const Quadrature<ordinal_type, value_type> >
quad;
202 Teuchos::BLAS<ordinal_type,value_type>
blas;
214 const Teuchos::Array<value_type>&
norms;
226 Teuchos::Array< Teuchos::Array< Teuchos::Array<value_type> > >
navals;
232 Teuchos::Array<value_type>
qv;
235 Teuchos::Array<value_type>
sqv;
240 template <
typename FuncT>
243 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
244 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
247 template <
typename FuncT>
250 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
251 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
252 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
255 template <
typename FuncT>
258 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
260 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
263 template <
typename FuncT>
266 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
267 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
268 const value_type& b);
273 value_type
operator() (
const value_type& a,
const value_type& b)
const {
279 value_type
operator() (
const value_type& a,
const value_type& b)
const {
298 return std::log10(a);
315 value_type
operator() (
const value_type& a,
const value_type& b)
const {
316 return std::pow(a,b);
375 value_type
operator() (
const value_type& a,
const value_type& b)
const {
376 return std::atan2(a,b);
382 return std::log(a+std::sqrt(a*a-value_type(1.0)));
388 return std::log(a+std::sqrt(a*a+value_type(1.0)));
394 return 0.5*std::log((value_type(1.0)+a)/(value_type(1.0)-a));