草庐IT

polynomial-math

全部标签

java - 为什么 Math.pow(int,int) 比我天真的实现慢?

昨天看到一个问为什么Math.pow(int,int)这么慢的问题,但是这个问题措辞不当,没有研究成果,所以很快就关了。我自己做了一些测试,发现Math.pow方法在处理时确实比我自己的幼稚实现(甚至不是特别有效的实现)运行得非常慢带有整数参数。下面是我运行的测试代码:classPowerTest{publicstaticdoublemyPow(intbase,intexponent){if(base==0)return0;if(exponent==0)return1;intabsExponent=(exponent在我的电脑上(linux在intelx86_64cpu上),输出几乎总

java - Float vs double Math Java

以下是否存在精度差异(假设a和b的值可以在不损失精度的情况下用float表示)。有花车:floata;floatb;doubleresult=1+a*b;double:doublea;doubleb;doubleresult=1+a*b; 最佳答案 简单的例子:floata=16777217;//Largestintexactlyrepresentableinafloat.floatb=16777217;System.out.println((double)(1+a*b));doublec=16777217;doubled=1677

java - Math.round MAX 返回值

我正在使用Math.round,我发现它不会返回任何大于(2^32/2)-1的值,但文档说明它可以/将返回长值,即2^64...下面有一段代码。longbTmp=(long)Math.round(4294967296L);System.out.println(bTmp);System.out.println(Long.MAX_VALUE);哪个输出:21474836479223372036854775807我错过了什么吗? 最佳答案 它正在调用Math.round()的重载,它接受一个float并返回一个int。看thejavado

java - Commons-math 四舍五入双倍

我正在使用commons-math3.6.1。我需要将double值四舍五入为小数点后两位假设这是我的双重值(value):doubled=400.54540997260267;现在通过四舍五入我期望的结果400.54相反,如果我的号码是双倍d1=400.54640997260267;我期待的结果是400.55现在我正在使用这段代码:Precision.round(d,2,BigDecimal.ROUND_DOWN);如果我使用roundingMethodBigDecimal.ROUND_DOWN我总是得到最低的四舍五入。我应该使用哪种舍入方法才能得到我期望的结果?我尝试了以下代码:p

java - 在 TreeMap 中存储多项式 --- 为什么?

我今天写了一篇试卷,是关于用Java实现数据结构的大学类(class)。最后一个问题是这样的:解释为什么使用TreeMap来存储具有整数系数的多项式很方便,尤其是当多项式应该以标准形式打印出来时,如字符串。尽管我意识到这是一个错误,但我还是继续解释为什么我认为这不是一个好主意。相反,我主张使用一个简单的int[]数组,因为数组具有O(1)随机访问、O(n)双向迭代并且指针(引用)没有额外的内存占用。假设我错了并且使用(排序的)TreeMap有一些好处,谁能向我解释这些好处?我的理由是,由于Matlab、Octave、Maple和其他经过良好测试的数值程序使用数组来存储多项式,所以不可能

java - 如何使用多项式而不是位来提高性能?

我有一个128位的字符串,我的主管要求我将这128位表示为多项式。这是他正在写的论文的扫描件:他的想法是,由于我们从这些位中消除了0,因此我们将能够比处理所有位更快地执行下一个操作(其中大部分是位/多项式之间的XOR)。我明白要求是什么,我可以在纸上做到,也可以在申请中做到。但是我的方式不会达到他的目的,就是提高性能。他实际上说已经有图书馆可以做到这一点,但不幸的是我找不到任何图书馆。我发现的唯一东西是计算多项式的Polynomial类,这不是我想要的。那么你们知道我怎样才能实现这个来提高性能吗?非常感谢任何代码/片段/文章。应用程序是用Java编写的,如果这有什么不同的话。谢谢,莫塔

java - Apache Commons Math 的标准偏差

我正在使用ApacheCommonsMath计算vector的SD。问题:我得到的值与手动得到的值不同DescriptiveStatisticsstats=newDescriptiveStatistics();stats.addValue(value1);...stats.addValue(value8);stats.getStandardDeviation();例如,取值[1699.0,1819.0,1699.0,1719.0,1689.0,1709.0,1819.0,1689.0]。SD应为52.067,但CommonsMath=55.662。我做错了什么?

java - java.lang.Math.PI 等于 GCC 的 M_PI 吗?

我正在用Java和C/C++编写多个引用算法。其中一些算法使用π。我希望每个算法的两种实现都产生相同的结果,而不用不同的四舍五入。到目前为止一直有效的一种方法是使用自定义的pi常量,它在两种语言中完全相同,例如3.14159。然而,当Java和GCC库中已经定义了高精度常量时,定义pi是愚蠢的。我花了一些时间编写快速测试程序、查看每个库的文档以及阅读浮点类型。但我无法说服自己java.lang.Math.PI(或java.lang.StrictMath.PI)等于或不等于math.h中的M_PI。GCC3.4.4(cygwin)math.h包含:#defineM_PI3.1415926

java - Math.round 和 Math.ceil 不工作

我正在尝试对用户输入进行四舍五入,但我似乎可以将我的double四舍五入为int。基本上,当我输入4.4999时,它不会四舍五入到5。有什么想法吗? 最佳答案 Math.ceil()返回上限值。它不能更改它作为参数的变量的值,因为Java按值传递参数。所以你需要做hours=Math.ceil(hours); 关于java-Math.round和Math.ceil不工作,我们在StackOverflow上找到一个类似的问题: https://stackover

java - 为什么 Math 类的方法是静态的?

为什么Math类的方法是静态的? 最佳答案 因为它们不需要任何内部状态,但在Java中没有独立的函数——每个函数都必须是类的成员。因此,它们是静态的。 关于java-为什么Math类的方法是静态的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/576228/