68 const Teuchos::RCP<
const OrthogPolyBasis<ordinal_type, value_type> >&
basis,
70 const Teuchos::RCP<
const PseudoSpectralOperator<ordinal_type, value_type, point_compare_type> >&
ps_op,
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 PseudoSpectralOperator<ordinal_type, value_type, point_compare_type> >
ps_op;
205 typedef Teuchos::SerialDenseVector<ordinal_type,value_type>
SDV;
214 Teuchos::Array< Teuchos::Array< SDV > >
navals;
222 template <
typename FuncT>
225 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
226 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a);
229 template <
typename FuncT>
232 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
233 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
234 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
237 template <
typename FuncT>
240 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
242 const OrthogPolyApprox<ordinal_type, value_type, node_type>& b);
245 template <
typename FuncT>
248 OrthogPolyApprox<ordinal_type, value_type, node_type>& c,
249 const OrthogPolyApprox<ordinal_type, value_type, node_type>& a,
250 const value_type& b);
255 value_type
operator() (
const value_type& a,
const value_type& b)
const {
261 value_type
operator() (
const value_type& a,
const value_type& b)
const {
280 return std::log10(a);
297 value_type
operator() (
const value_type& a,
const value_type& b)
const {
298 return std::pow(a,b);
357 value_type
operator() (
const value_type& a,
const value_type& b)
const {
358 return std::atan2(a,b);
364 return std::log(a+std::sqrt(a*a-value_type(1.0)));
370 return std::log(a+std::sqrt(a*a+value_type(1.0)));
376 return 0.5*std::log((value_type(1.0)+a)/(value_type(1.0)-a));