如何在C中获得任意根?

如何在C中获得任意根?,c,math,square-root,C,Math,Square Root,C有sqrt()和cbrt(),但它们只是第二根和第三根。如果根是任意数怎么办?如果我需要第57个根怎么办?使用pow函数,利用获得57个根等于提高到1/57的幂这一事实 更一般地说,要获取x的y根,请执行以下操作: double result = pow(x, 1.0 / y); 您应该改为使用pow(x,n)函数 函数定义如下所示: 双功率(双x,双y) 所以,在上面的情况下,你应该写 pow(x, 1.0/57.0); 如果没有标准函数来完成您需要的工作,并且您找不到包含该功能的第三方

C有
sqrt()
cbrt()
,但它们只是第二根和第三根。如果根是任意数怎么办?如果我需要第57个根怎么办?

使用
pow
函数,利用获得57个根等于提高到1/57的幂这一事实

更一般地说,要获取
x
y
根,请执行以下操作:

double result = pow(x, 1.0 / y);
您应该改为使用pow(x,n)函数

函数定义如下所示: 双功率(双x,双y)

所以,在上面的情况下,你应该写

pow(x, 1.0/57.0);

如果没有标准函数来完成您需要的工作,并且您找不到包含该功能的第三方库(或者您由于某种原因无法使用此类库),那么您必须自己编写。简单回答:您需要自己编写(或者如果您不是这样做的人,那么只需编写)@LakshyaRaj@Some程序员伙计们,伙计们,老实说。“自己写”是个很糟糕的建议。任何一种数学函数一旦进入细节都是棘手的,但幸运的是,这是一个众所周知的问题,有一个众所周知的解决方案(即
pow
)。@RobertDodier:是的,这就是为什么我给出了另一个选择。如果这听起来有点刺耳,我很抱歉。似乎已被接受的答案使用了我链接中的答案。@RobertDodier任何不存在或无法使用的东西(可能是由于许可原因)都将是“棘手的”。而唯一可行的解决办法就是自己写(或者请人帮你写),根本没有办法。这个问题的任何答案都不能在没有写入代码的情况下使用。当然,它可以被复制粘贴,但它仍然是一种自己编写的方式,特别是如果它被放入自己的函数中。哦,天哪,如果用
pow()
很容易获得根,那么甚至不需要
sqrt
cbrt
。像任意的自然的
log()
log2()
,和
log10
。相反,库应该包含
根(索引,半径)
日志(基,n)
,而不是一堆任意变量。@user15170464这些日志函数针对其特定的基进行了优化。而
log(base,n)
可以简单地实现为
log(n)/log(base)
(或者
log2(n)/log2(base)
,等等)。实现我自己的
log
,哪个更好?