Tag: pow

C的pow()不适用于变量指数

我有一小段代码: #include int main(void){ pow(2.0,7.0); //Works double x = 3.0; pow(2.0,x); //Fails with error “undefined reference to ‘pow'” return 0; } 我在Eclipse编译器设置中链接了-lm : gcc -O0 -g3 -Wall -lm -c -fmessage-length=0 -MMD -MP -MF”src/pgm.d” -MT”src/pgm.d” -o “src/pgm.o” “../src/pgm.c” ,所以我不确定错误的来源是什么。 我不做什么?

pow函数和long int导致问题

我试图恭维RSA加密方案。 它是这样的: encrypted data = ((message)^e) % n和decrypted data = ((encrypted data)^d) % n 我试图在c中实现这一点。 这是代码: #include #include #include int main(){ long int num = 3255859; long int encrypt =(int)pow((double) num,3) % 33; printf(“%ld\n”,encrypt); return 0; } 我使用gcc -Werror -g -o encrypt encrypt.c -lm编译了这个 这是我得到的输出= -2 ,这显然是错误的。 当我尝试使用较小数字的代码时,我得到了正确的结果。 例如: 当我设置num = 2 ,我得到的结果是8 我知道我要么输入错误,要么我在某个地方跑出界限。 我确实需要使用此代码来加密像上面代码中的大数字一样的大数字。 […]

C中的powfunction

我编写了一个具有power.h函数的C代码,该代码来自math.h库。 当我编译我的程序时,我收到一个错误,即“未定义引用’pow’函数”,我使用gcc编译器(fedora 9)编译我的程序。 我将-lm标志插入gcc然后,错误被省略,但pow函数的输出为0。 #include main() { double a = 4, b = 2; b = pow(b,a); } 谁能帮我? 我的编译器有问题吗? 谢谢。

为什么printf没有使用科学记数法?

我知道这是一个常见的问题。 但是我找不到一个可靠的直接答案。 16 ^ 54 = 1.0531229167e+65 (this is the result I want) 当我使用pow(16,54) ,我得到: 105312291668557186697918027683670432318895095400549111254310977536.0 代码如下: #include #include #include void main(){ double public; double a = 16; double b = 54; public = (pow(a,b)); printf(“%.21f\n”, public); } 执行代码: gcc main.c -lm 我做错了什么?

C的pow函数拒绝使用变量指数

假设我有以下代码段: int i; double value; for(i = 0; i < CONSTANT; i++) { value = (double)pow(2, i); } 尝试编译此代码会产生“未定义的对’pow’的引用”错误。 包括或排除math.h没有区别,因为它最终都被包括在内。 将2.0提升为硬编码电源可以正常工作,但如果我用包含i的表达式替换指数,一切都会失败。 我究竟做错了什么? 谢谢。

用于SSE类型的战俘

我使用SSE类型进行了一些显式向量化计算,例如__m128 (在xmmintrin.h等中定义),但现在我需要将向量的所有元素提升到某个(相同)幂,即理想情况下我想要像__m128 _mm_pow_ps(__m128, float) ,遗憾的是不存在。 围绕这个的最佳方法是什么? 我可以存储向量,在每个元素上调用std::pow ,然后重新加载它。 这是我能做的最好的吗? 编译器如何在自动矢量化代码时实现对std::pow的调用,否则代码可以很好地实现矢量化? 有没有提供有用function的库? (请注意, 这个问题与重复无关,当然没有一个有用的答案。)

调用pow()时舍入结果的差异

好的,我知道有很多关于powfunction的问题,并将结果转换为int,但我找不到这个问题的答案。 好的,这是C代码: #include #include #include int main() { int i = 5; int j = 2; double d1 = pow(i,j); double d2 = pow(5,2); int i1 = (int)d1; int i2 = (int)d2; int i3 = (int)pow(i,j); int i4 = (int)pow(5,2); printf(“%d %d %d %d”,i1,i2,i3,i4); return 0; } 这是输出:“25 25 24 25”。 请注意,仅在第三种情况下,pow的参数不是文字,我们有错误的结果,可能是由舍入错误引起的。 如果没有明确的强制转换,同样的事 有人可以解释这四种情况会发生什么吗? 我在Windows […]

如何用C计算pow()?

我们的教授说你不能计算一个b,如果a <0使用pow()因为pow()使用自然对数来计算它(a b = e b ln a ),因为它对于负数是未定义的,所以它不能计算。 我尝试了它,只要b是整数就可以工作。 我搜索了math.h和其他文件,但无法找到函数的定义方式以及它用于计算的内容。 我也试过在互联网上搜索,但没有任何成功。 Stack Overflow 在这里和这里有类似的问题(对于C#)。 (最后一个很好,但我找不到源代码。) 所以问题是pow()实际上是如何用C计算的? 当基数是有限的且负数且指数是有限且非整数时,为什么它会返回域错误?

来自pow的exception输出

以下C代码 int main(){ int n=10; int t1=pow(10,2); int t2=pow(n,2); int t3=2*pow(n,2); printf(“%d\n”,t1); printf(“%d\n”,t2); printf(“%d\n”,t3); return (0); } 给出以下输出 100 99 199 我正在使用devcpp编译器。 它没有任何意义,对吧? 有任何想法吗? (那个pow(10,2)可能就像99.9999那样不能解释第一个输出。而且,即使我包含math.h,我也得到了相同的输出。)

pow()是否适用于C中的int数据类型?

我只是编写一个程序来计算整数的幂。 但产量不如预期。 除了5的幂之外,它适用于所有整数。 我的代码是: #include #include int main(void) { int a,b; printf(“Enter the number.”); scanf(“\n%d”,&a); b=pow(a,2); printf(“\n%d”,b); } 输出是这样的: “Enter the number. 2 4 “Enter the number. 5 24 “Enter the number. 4 16 “Enter the number. 10 99 我们不能对int数据类型使用pow()函数吗?