【发布时间】:2021-07-02 08:51:47
【问题描述】:
我正在研究微积分运算的 C 实现(例如导数、积分等)。例如,这是我的 derivative 函数的模板定义:
double derivative(double (*f)(double), double x);
假设我想计算 exp 在 1 处的导数,那么调用将是:derivative(exp, 1);
相当基本的东西。现在我的问题是,我将如何(如果可能的话)将合成传递给我的 derivative 函数?我尝试通过 exp(cos) 得到了我
error: passing 'double (double)' to parameter of incompatible type 'double'.
我该怎么做?有没有可能?
【问题讨论】:
-
我不明白这个问题。将
cos函数传递给exp函数有什么意义?你能举一个你想要解决的实际方程的例子吗? -
@Lundin 我想做的是计算任何组合的导数(
exp(cos(x))只是一个例子,ln(sqrt(x))是另一个例子) -
在这种情况下,正确的解决方案是依次调用函数。使用泛型编程来实现这样的方程可能没有多大意义。
-
人们可能会认为 C 是错误的语言?可行的并不总是可行的。
标签: c math function-pointers function-composition