草庐IT

fast-math

全部标签

java - 是 Math.max(a,b) 还是 (a>b)?a :b faster in Java?

Java中哪个更快,为什么?Math.max(a,b)(a>b)?a:b(这是在采访中被问到的。) 最佳答案 Math.max(a,b)是一个静态函数(意味着没有虚拟调用开销)并且可能会被JVM内联到与(a>b)相同的指令?a:b. 关于java-是Math.max(a,b)还是(a>b)?a:bfasterinJava?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/21036

java - 为什么 Math.round 返回一个 long 但 Math.floor 返回一个 double?

为什么不一致? 最佳答案 没有不一致:这些方法只是为了遵循不同的规范而设计的。longround(doublea)返回最接近参数的long。doublefloor(doublea)返回小于或等于参数且等于数学整数的最大(最接近正无穷大)double值。与doubleceil(doublea)比较doublerint(doublea)返回与参数值最接近且等于数学整数的double值所以按照设计,round舍入为long,rint舍入为double。自JDK1.0以来一直如此。JDK1.2中添加了其他方法(例如toRadians、toD

java - Math.pow 根据 java 版本产生不同的结果

我在JDK版本1.7.0_60上运行以下代码:System.out.println(Math.pow(1.5476348320352065,(0.3333333333333333)));结果是:1.1567055833133086我在JDK版本1.7.0上运行完全相同的代码。结果是:1.1567055833133089我知道double不是无限精确的,但是java规范中是否存在导致差异的变化?PS:因为我们使用的是旧系统,BigDecimal不是一个选项。编辑:我能够追踪更改的时间:它是在JDK版本1.7.0_40中引入的(与版本1.7.0_25相比)。 最

java - Math.cos() 给出错误的结果

根据WolframMathematica:cos(50)=0.6427876096865394;但是这段Java代码:System.out.println(Math.cos(50));给出0.9649660284921133。java.lang.Math有什么问题? 最佳答案 Math.cos()期望参数以弧度为单位。这将返回您需要的结果:Math.cos(Math.toRadians(50)); 关于java-Math.cos()给出错误的结果,我们在StackOverflow上找到一

java - java.lang.Math 和 java.lang.StrictMath 有什么区别?

显然java.lang.StrictMath包含java.lang.Math的附加函数(双曲线等)没有,但是两个库中的功能有区别吗? 最佳答案 Math的Javadocclass提供了一些关于两个类之间差异的信息:UnlikesomeofthenumericmethodsofclassStrictMath,allimplementationsoftheequivalentfunctionsofclassMatharenotdefinedtoreturnthebit-for-bitsameresults.Thisrelaxationp

MongoDB $where 查询和可尾游标——WAS : date math best practices

我的问题:给我一份超过X时间的文档列表。如果我创建了一个文档:db.dates.insert({date:newDate()});现在我只想在“日期”已经30分钟时找到它:db.dates.find({$where:"this.date.getTime()+30*60000这可行,但在Mongo文档中非常清楚地表明$where查询会显着降低性能。那么问题来了,有没有更好的办法?==========更新1==========我应该补充一点,我希望这个查询函数“动态地”创建一次查询并使用它来获取一个上限集合上的可尾游标......我不再确定它是实际上是可能的。我会测试并重新发布。=====

c++ - 为什么 GCC 对 C++ <cmath> 比 C <math.h> 更有效地实现 isnan()?

这是我的代码:intf(doublex){returnisnan(x);}如果我#include我得到了这个程序集:xorl%eax,%eaxucomisd%xmm0,%xmm0setp%al这相当聪明:ucomisd如果x与自身的比较是无序的,则设置奇偶校验标志,这意味着x是NAN。那么setp将奇偶校验标志复制到结果中(只有一个字节,因此%eax的初始清除)。但是如果我#include我得到了这个程序集:jmp__isnan现在代码不是内联的,__isnan功能肯定是没有快的ucomisd指令,所以我们已经引起了无益的跳跃。如果我将代码编译为C,我会得到同样的结果。现在,如果我更改

c++ - cmath vs math.h(以及类似的 c 前缀 vs .h 扩展头文件)

我已经看到了一些关于iostream与iostream.h之类的差异的信息。根据我从这些收集到的信息,它们之间的区别在于没有.h扩展名的版本不会填充命名空间,而带有扩展名的版本会。cmath与math.h是否相同?为什么cmath(以及许多其他类似的文件)以c为前缀,而不仅仅是math?它们之间还有更多的区别吗? 最佳答案 I'veseensomeinformationaboutdifferencesbetweenthingslikeiostreamvsiostream.h.[iostream.h]不是标准头文件。这不是您提出的问题

javascript - 如何在 JavaScript 中指定 Math.log() 的基数?

我需要一个用于JavaScript的log函数,但它需要以10为基数。我看不到任何列表,所以我假设这是不可能的。有没有知道解决这个问题的数学奇才? 最佳答案 “基础改变”公式/身份Thenumericalvalueforlogarithmtothebase10canbecalculatedwiththefollowingidentity.由于JavaScript中的Math.log(x)返回x的自然对数(与ln(x)相同),对于base10可以除以Math.log(10)(同ln(10)):functionlog10(val){re

golang 在两个 uint 值上使用 math.max 的正确方法是什么?

这就是我做的,非常丑陋。将math.Max用于2uints的正确方法是什么?vs.curView.Viewnum=uint(math.Max(float64(args.Viewnum+1),float64(vs.curView.Viewnum))) 最佳答案 math.Max存在的主要原因是为了确保正确处理IEEE浮点的一些特殊情况(正负无穷大、NaN和有符号零).这些问题与简单整数无关,因此您不妨使用明显的实现。比如:ifargs.Viewnum+1>vs.curView.Viewnum{vs.curView.Viewnum=ar