view run/float_22.d @ 1623:04022926a4d5

Fix dstress.run.b.bug_cod1_2528_C as reported by Don Clugston Quoting Don's words from Ticket #8: Fails because it returns 3 instead of 0. The DStress test case is incorrect. The arrray literal is an int, so it's 4 bytes. Casting it to void[] should give a length of 4 -- and that's exactly what it does. Should be "return x.length - 4;".
author Leandro Lucarella <llucax@gmail.com>
date Fri, 05 Nov 2010 10:10:51 -0300
parents eaf0a0d20b60
children
line wrap: on
line source

// $HeadURL$
// $Date$
// $Author$

// @author@	Derek Parnell <derek@psych.ward>
// @date@	2005-04-02
// @uri@	news:5efpfwr0e1l5$.ks45nx0xz2zf$.dlg@40tude.net

// For floating point operations and expression intermediate values,
// a greater precision can be used than the type of the expression.
// Only the minimum precision is set by the types of the operands,
// not the maximum.
 
module dstress.run.float_22;

int main(){
	float f = 0.0000195f;
	assert(typeid(typeof(0.0000195f)) == typeid(float));

	real diff = (0.5f + f * 1e6f) - (0.5f + 0.0000195f * 1e6f);


	if(diff < 0){
		diff *= -1;
	}

	if(diff < float.epsilon * 8){
		return 0;
	}
}