在试验舍入模式时,FE_DOWNWARD( 和FE_TOWARDZERO) 显然无法形成预期的无穷大之和,而是DBL_MAX在添加DBL_MAX和 1 ULP时形成DBL_MAX。
以下是演示意外总和的测试代码。在不同的回合模式下,它会增加DBL_MAX接近 0.5 ULP 和 1.0 ULP 的值。FE_TONEAREST和中没有指出任何问题FE_UPWARD。
问题:
DBL_MAX问题之后的结果,所以也许我的数学库低于标准。请求就如何报告提供建议。编译器注释:
调用:Cygwin C 编译器
gcc -std=c11 -O0 -g3 -pedantic -Wall -Wextra -Wconversion -c -fmessage-length=0 -v -MMD -MP -MF"rand_i.d" -MT"rand_i .o" -o "rand_i.o" "../rand_i.c"
COLLECT_GCC=gcc
目标:x86_64-pc-cygwin
gcc 版本 11.3.0 (GCC)
GNU C11 (GCC) 版本 11.3.0 (x86_64-pc- cygwin)
由GNU C版本11.3.0、GMP版本6.2.1、MPFR版本4.1.0、MPC版本1.2.1、isl版本isl-0.25-GMP编译
#include <fenv.h>
#include …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在Perl中创建或测试NaN或无穷大?
如果标量保持inf值,我该如何检查?
我检查NaN $scalar != $scalar,该怎么办inf?
$scalar == inf不起作用,因为inf是一个赤字
我在C#(.Net 4)中做了一些统计操作,double[]然后我发现了一些奇怪的CompareTo方法和方法double.NaN.当我尝试这段代码时:
double.NaN.CompareTo(double.NegativeInfinity) //returns -1
Run Code Online (Sandbox Code Playgroud)
它意味着double.NaN甚至比double.NegativeInfinity!任何人都能解释为什么会这样吗?
NAN值表示Not A Number,IND值表示Indeterminate number.但这两者之间有什么区别.我们怎样才能在c ++中代表两者.
为什么Infinity属性用作命令(而不是结果)
例如,下面的代码有效,但结果不符合我的预期.
alert(isOdd(Infinity));
function isOdd(num) { return num%2==1; }Run Code Online (Sandbox Code Playgroud)
我能得到Infinity并且NaN通过
n = 9.0 / 0 #=> Infinity
n.class #=> Float
m = 0 / 0.0 #=> NaN
m.class #=> Float
Run Code Online (Sandbox Code Playgroud)
但是当我想要访问Infinity或NaN直接访问时:
Infinity #=> uninitialized constant Infinity (NameError)
NaN #=> uninitialized constant NaN (NameError)
Run Code Online (Sandbox Code Playgroud)
什么是Infinity和NaN?它们是对象,关键字还是其他什么?
即使这些数字不是无穷大,两个double的总和也是无穷大.代码如下.
entropy += (probs.get(key)* (Math.log(probs.get(key)) / Math.log(2.0)));
if(entropy == Double.POSITIVE_INFINITY || entropy == Double.NEGATIVE_INFINITY){
System.out.println("Prob:"+probs.get(key));
System.out.println("base 10: "+Math.log(probs.get(key)));
System.out.println("base 2: "+Math.log(2.0));
System.out.println("result: "+(probs.get(key)*(Math.log(probs.get(key))) / Math.log(2.0)));
System.out.println("entropy before sum "+temp);
break;
}`
Run Code Online (Sandbox Code Playgroud)
结果是:
Prob:1.0476603084695572E305
base 10: 702.3350127634005
base 2: 0.6931471805599453
result: 1.0615472972511642E308
entropy before sum: 1.246498306457423E308
Run Code Online (Sandbox Code Playgroud)
那怎么可能总和
result + entropy = 1.0615472972511642E308 + 1.246498306457423E308
= INFINITY
我如何获得一个“足够小的”无穷大使其零乘积为零?
我正在为Python使用整数编程求解器,而我的一些变量具有无限的成本。我不能使用,float('inf')因为float('inf')*0 = NaN
我正在尝试使用jQuery创建一个无限滑块.活动幻灯片将是屏幕的2/3,即将到来的幻灯片将是1/3.所以你已经看到了下一张幻灯片的预览.
我构建的滑块正在工作.单击next滑块时将向左侧动画.
诀窍
在初始化时,我在最后一张幻灯片后复制了前两张幻灯片.当slideIndex关注当前索引时,当幻灯片的数量减去1时,它会将滑块重置为零.所以你有一个无限滑块.
问题
当我在第一张幻灯片上并且之前单击时我也想要应用效果时出现问题.它基本上应该这样做,但不能将滑块重置为零,而是重置幻灯片的末尾.
var slider = $('.slider');
var slides = slider.find('.slides').children();
var slidesW = slides.width();
root.offset = -Math.abs((root.slideIndex * slides.eq(index).width()));
console.log(root.offset);
// Update active class
slides.removeClass('active');
// slides.eq(index).addClass('active');
// Add class active
TweenMax.to(slides.eq(index), 1, {
className: 'active',
onComplete: function() {
if (root.slideIndex >= (root.numOfSlides - 2)) {
slider.find('.slides').addClass('no-transition');
slides.removeClass('active');
slides.filter(':first').addClass('active');
root.offset = 0;
TweenMax.set(slider.find('.slides'), {
x: root.offset,
onComplete: function() {
root.slideIndex = 0;
$('#footer .paging #indicator').find('span').html('01');
return false;
}
});
}
}
}); …Run Code Online (Sandbox Code Playgroud) 假设我有两个变量都设置为无穷大
double l = std::numeric_limits<double>::infinity();
double r = std::numeric_limits<double>::infinity();
Run Code Online (Sandbox Code Playgroud)
在代码的另一点,我对这两个变量进行了比较
if (l < r) {}
Run Code Online (Sandbox Code Playgroud)
这个比较的结果是在库中正确定义的吗?(在我的程序的逻辑中,我希望结果是false.)