Tag: math

斯卡拉有一个好的math/统计库吗?

我正在寻找一个好的math和统计数据的scala开源库。 希望像Apache Math或Colt一样,但在Scala中实现。 任何人都可以指向正确的方向吗?

在C#整数运算中,a / b / c总是等于a /(b * c)?

令a,b和c为非大正整数。 用C#整数运算,a / b / c总是等于a /(b * c)吗? 对我来说,在C#中看起来像: int a = 5126, b = 76, c = 14; int x1 = a / b / c; int x2 = a / (b * c); 所以我的问题是:所有的a,b和c的x1 == x2 ?

基于数字基础系统的algorithm?

我最近注意到,有很多algorithm在部分或全部基于数字在创意基础上的巧妙使用。 例如: 二项堆是基于二进制数的,而更复杂的二项二项堆是基于二进制数的偏斜。 一些用于产生字典顺序排列的algorithm基于事实数字系统。 尝试可以被认为是树木,每次看一个string的数字,为适当的基础。 霍夫曼编码树被devise为使得树中的每个边在一些二进制表示中编码零或一。 斐波那契编码被用于斐波纳契search并且反转某些types的对数。 我的问题是: 还有哪些其他algorithm使用一个聪明的数字系统作为直觉或certificate的关键步骤? 。 我正在考虑围绕这个问题进行一个讨论,所以我必须得到的例子越多越好。

在Java中表示一个分数的最好方法是什么?

我正在尝试在Java中使用分数 。 我想实现算术函数。 为此,我将首先需要一种方法来规范function。 我知道我不能加1/6和1/2,直到我有一个共同点。 我将不得不添加1/6和3/6。 一个天真的方法会让我加2/12和6/12,然后减less。 我怎样才能达到一个共同的分母性能最低的惩罚? 什么algorithm最适合这个? 版本8(感谢hstoerr ): 改进包括: equals()方法现在与compareTo()方法一致 final class Fraction extends Number { private int numerator; private int denominator; public Fraction(int numerator, int denominator) { if(denominator == 0) { throw new IllegalArgumentException("denominator is zero"); } if(denominator < 0) { numerator *= -1; denominator *= -1; } this.numerator = numerator; […]

快速排列 – >数字 – >置换映射algorithm

我有n个元素。 举例来说,我们说7个元素1234567.我知道有7个元素! 这7个元素可能有5040个排列组合。 我想要一个包含两个函数的快速algorithm: f(数字)将0到5039之间的数字映射到一个唯一的排列, f'(排列)将排列映射回其生成的数字。 我并不关心数字与排列之间的对应关系,只要每个排列都有自己独特的数字。 所以,例如,我可能有function在哪里 f(0) = '1234567' f'('1234567') = 0 想到的最快的algorithm是枚举所有排列并在两个方向上创build一个查找表,所以一旦创build表,f(0)将是O(1),f('1234567')将是在一个string上查找。 但是,这是一个饥饿的记忆,特别是当n变大的时候。 任何人都可以提出另一种algorithm,快速工作,没有内存的缺点?

什么是一起计算罪和cos的最快方法?

我想同时计算一个值的正弦和同正弦(例如创build一个旋转matrix)。 当然,我可以像a = cos(x); b = sin(x);那样分别计算它们a = cos(x); b = sin(x); a = cos(x); b = sin(x); ,但我不知道是否有一个更快的方式,当需要这两个值。 编辑:总结到目前为止的答案: 弗拉德说,有一个命令FSINCOS的asm命令计算他们两个(几乎在同一时间呼叫FSIN单独) 像Chi注意到的那样,这个优化有时候已经被编译器完成了(当使用优化标志的时候)。 sincosf指出,函数sincosf和sincosf可能是可用的,可以直接通过包括math.h来调用 讨论使用查找表的tanascius方法是有争议的。 (然而,在我的电脑和基准testing场景中,它比sincos运行速度快3倍,对于32位浮点运算精度几乎相同。) 乔尔·古德温(Joel Goodwin)把一个有趣的方法与一个相当不错的快速逼近技术联系起来(对于我来说,这个速度甚至比查表更快)

gcc的快速math实际上做了什么?

我明白–ffast-math标志可以大大提高浮动操作的速度,并超出IEEE标准,但我似乎无法find真正发生的事情的信息。 任何人都可以请解释一些细节,也许给一个明确的例子,如果国旗是打开或closures如何将改变? 我也尝试过类似的问题,但是找不到任何解释ffastmath运作的东西。

如何判断一个点是在一条线的右边还是左边

我有一套要点。 我想把它们分成两个不同的集合。 要做到这一点,我select了两个点( a和b ),并在它们之间画一条想象的线。 现在我想把这一行中的所有点都放在一个集合中,而那些在这一行中正确的点集合在另一个集合中。 我怎么能告诉任何给定的点z是在左边还是在右边呢? 我试图计算azb之间的angular度 – 小于180的angular度在右侧,在左侧大于180 – 但是由于ArcCos的定义,计算的angular度始终小于180°。 是否有一个公式来计算angular度大于180°(或任何其他公式select正确或左侧)?

如何testing双精度是一个整数

是否有可能做到这一点? double variable; variable = 5; /* the below should return true, since 5 is an int. if variable were to equal 5.7, then it would return false. */ if(variable == int) { //do stuff } 我知道代码可能不会像这样,但它是怎么回事?

为什么在标准C ++库中不是int pow(int base,int exponent)?

我觉得我必须无法find它。 是否有任何理由的C + +幂函数不执行除了浮动和双打之外的任何东西的“电源”function? 我知道实现是微不足道的,我只是觉得我正在做一个标准库中的工作。 一个强大的function函数(即以某种一致的,明确的方式处理溢出)并不好玩。