TInt CTestFloat_blr::remquo_remcheck_test()
	{
	// Create temporary variables in stack
  	char chParam[MAX_SIZE];
  	FLOAT input1;
  	FLOAT input2;
  	int iPart;
  	FLOAT expected_fPart;
  	FLOAT expected_iPart;
  	FLOAT max_ulp;
  	FLOAT gen_ulp;
  	
  	// Read parameters
  	
  	ReadStringParam ( chParam);
    ReadFloatParam ( input1);
    ReadFloatParam ( input2);
    ReadFloatParam ( expected_fPart);
    ReadFloatParam ( expected_iPart);
    ReadFloatParam ( max_ulp);
    //
    TBuf<MAX_SIZE> buf;
    TInt len = strlen(chParam);
    
    for (TInt j =0; j<len;j++)
    	{
    	buf.Append(chParam[j]);
		}
    
    // Do some testing
    FLOAT res = FUNC(remquo) (input1, input2, &iPart);
    
    if(   check_int(iPart, expected_iPart, max_ulp)
    	&&check_float(res, expected_fPart, max_ulp, gen_ulp)
      )
    	{
    	INFO_PRINTF1(_L("Test passed."));
    	}
    else    
    	{
    	ERR_PRINTF1(_L("Test Failed."));
   		return KErrGeneral;
    	}
    
    INFO_PRINTF1(_L("_________________________________________\n"));
    INFO_PRINTF2(_L("TestCase		  : %S\n"), &buf);
    INFO_PRINTF2(_L("Input Value  1 : %f\n"), input1 );
    INFO_PRINTF2(_L("Input Value  2 : %f\n"), input1 );
    INFO_PRINTF2(_L("Expected iPart : %f\n"), expected_fPart );
    INFO_PRINTF2(_L("Expected iPart : %f\n"), expected_iPart );
	INFO_PRINTF2(_L("Max ULP value  : %f\n"), max_ulp );
	INFO_PRINTF2(_L("Result  fPart  : %f\n"), res );
	INFO_PRINTF2(_L("Result  iPart  : %d\n"), iPart );
	INFO_PRINTF2(_L("Generated Ulp  : %f\n"), gen_ulp );
	INFO_PRINTF1(_L("_________________________________________\n"));
    
    return KErrNone;
		
	}
TInt CTestFloat_blr::lgamma_test()
	{
	// Create temporary variables in stack
  	char chParam[MAX_SIZE];
  	FLOAT input1;
  	FLOAT signgam_exp;
  	FLOAT expected;
  	FLOAT max_ulp;
  	FLOAT gen_ulp;
  	
  	// Read parameters
  	
  	ReadStringParam ( chParam);
    ReadFloatParam ( input1);
    ReadFloatParam ( expected);
	ReadFloatParam ( signgam_exp);
    ReadFloatParam ( max_ulp);
    //
    TBuf<MAX_SIZE> buf;
    TInt len = strlen(chParam);
    
    for (TInt j =0; j<len;j++)
    	{
    	buf.Append(chParam[j]);
		}
	// Do some testing
	signgam = 0;
	FLOAT res = FUNC(lgamma) (input1);
    
	if(  check_float(res, expected, max_ulp, gen_ulp) && signgam_exp==signgam)
		{
		INFO_PRINTF1(_L("Test passed."));
		}
	else    
		{
		ERR_PRINTF1(_L("Test Failed."));
   		return KErrGeneral;
		}

	INFO_PRINTF1(_L("_________________________________________\n"));
	INFO_PRINTF2(_L("TestCase		  : %S\n"), &buf);
	INFO_PRINTF2(_L("Input Value   	  : %f\n"), input1 );
	INFO_PRINTF2(_L("Expected Res  	  : %f\n"), expected );
	INFO_PRINTF2(_L("Expected signagam  : %f\n"), signgam_exp );
	INFO_PRINTF2(_L("Max ULP value      : %f\n"), max_ulp );
	INFO_PRINTF2(_L("Result  		      : %f\n"), res );
	INFO_PRINTF2(_L("Obtained Signgam	  : %d\n"), signgam );
	INFO_PRINTF2(_L("Generated Ulp      : %f\n"), gen_ulp );
	INFO_PRINTF1(_L("_________________________________________\n"));
 
	
	return KErrNone;
		
	}
TInt CTestFloat_blr::sinh_test()
	{	
	char chParam[MAX_SIZE];
  	FLOAT input;
  	FLOAT expected;
  	FLOAT max_ulp;
  	FLOAT gen_ulp;
  	
  	
  	// Read parameters
  	
  	ReadStringParam (chParam);
    ReadFloatParam (input);
    ReadFloatParam (expected);
    ReadFloatParam (max_ulp);
    //
    TBuf<MAX_SIZE> buf;
    TInt len = strlen(chParam);
    
    for (TInt j =0; j<len;j++)
    	{
    	buf.Append(chParam[j]);
		}
    
    // Do some testing
    FLOAT res = FUNC(sinh) (input);
        
    if(check_longlong(res, expected, max_ulp, gen_ulp))
    	{
    	INFO_PRINTF1(_L("Test passed."));
    	}
    else    
    	{
    	ERR_PRINTF1(_L("Test Failed."));
   		return KErrGeneral;
    	}
    
    INFO_PRINTF1(_L("_________________________________________\n"));
    INFO_PRINTF2(_L("TestCase		  : %S\n"), &buf );
    INFO_PRINTF2(_L("Input Value    : %f\n"), input );
    INFO_PRINTF2(_L("Expected Value : %f\n"), expected );
	INFO_PRINTF2(_L("Max ULP value  : %f\n"), max_ulp );
	INFO_PRINTF2(_L("Result  		  : %f\n"), res );
	INFO_PRINTF2(_L("Generated Ulp  : %f\n"), gen_ulp );
	INFO_PRINTF1(_L("_________________________________________\n"));
    return KErrNone;

	}
Ejemplo n.º 4
0
bool STransition::ReadAngleParam( const char* name, bool required, float min, float max, const struct IItemParamsNode*const pParams, float*const pAngle ) const
{
	float angleDegrees;

	if (!ReadFloatParam(name, required, RAD2DEG(min), RAD2DEG(max), pParams, &angleDegrees))
		return false;

	*pAngle = DEG2RAD(angleDegrees);
	return true;
}
Ejemplo n.º 5
0
bool STransition::ReadParams( ETransitionType _transitionType, const struct IItemParamsNode*const pParams )
{
	transitionType = _transitionType;

	animGraphSignal = pParams->GetAttribute("animGraphSignal");
	CRY_ASSERT_TRACE(animGraphSignal.length() > 0, ("animGraphSignal not found or empty"));
	if (!(animGraphSignal.length() > 0)) return false;

	pseudoSpeed = 0.0f;
	//if (!ReadFloatParam("pseudoSpeed", true, AISPEED_SLOW, AISPEED_SPRINT, pParams, &pseudoSpeed)) return false;
	if (!ReadPseudoSpeedParam("pseudoSpeed", true, pParams, &pseudoSpeed)) return false;

	stance = STANCE_NULL;
	if (!ReadStanceParam("stance", true, pParams, &stance)) return false;

	targetStance = STANCE_NULL;
	ReadStanceParam("targetStance", false, pParams, &targetStance);

	int iContext = 0; // default = don't care
	ReadIntParam("context", false, 0, INT_MAX, pParams, &iContext);
	context = (unsigned)iContext;

	minDistance = 0.0f;
	if (!ReadFloatParam("minDist", true, 0.0f, FLT_MAX, pParams, &minDistance)) return false;

	desiredTravelAngle = 0.0f;
	if (!ReadAngleParam("travelAngle", true, -gf_PI2, gf_PI2, pParams, &desiredTravelAngle)) return false;

	travelAngleTolerance = FLT_MAX;
	if (!ReadAngleParam("travelAngleTolerance", true, 0.0f, gf_PI2, pParams, &travelAngleTolerance)) return false;

	if (transitionType == eTT_Start)
	{
		maxDistance = FLT_MAX;
		prepareDistance = FLT_MAX;
		prepareTravelAngleTolerance = FLT_MAX;
		desiredArrivalAngle = 0.0f;
		arrivalAngleTolerance = FLT_MAX;
	}
	else
	{
		maxDistance = minDistance;
		if (!ReadFloatParam("maxDist", true, minDistance, FLT_MAX, pParams, &maxDistance)) return false;

		const float maxMovementPerFrame = 7.5f/30.0f; // 7.5m/s at 30fps gives you 25cm per frame
		minDistance -= maxMovementPerFrame/2;
		maxDistance = minDistance + maxMovementPerFrame; 

		prepareDistance = maxDistance;
		if (!ReadFloatParam("prepareDist", true, maxDistance, FLT_MAX, pParams, &prepareDistance)) return false;

		prepareTravelAngleTolerance = FLT_MAX;
		if (!ReadAngleParam("prepareTravelAngleTolerance", true, 0.0f, gf_PI2, pParams, &prepareTravelAngleTolerance)) return false;
	}

	if (transitionType == eTT_Stop)
	{
		desiredArrivalAngle = 0.0f;
		bool hasDesiredArrivalAngle = ReadAngleParam("arrivalAngle", false, -gf_PI2, gf_PI2, pParams, &desiredArrivalAngle);

		arrivalAngleTolerance = FLT_MAX;
		bool hasArrivalAngleTolerance = ReadAngleParam("arrivalAngleTolerance", false, 0.0f, gf_PI2, pParams, &arrivalAngleTolerance);

		CRY_ASSERT_MESSAGE(!hasDesiredArrivalAngle ||  hasArrivalAngleTolerance, "Transition has arrivalAngle but no arrivalAngleTolerance");
		CRY_ASSERT_MESSAGE( hasDesiredArrivalAngle || !hasArrivalAngleTolerance, "Transition has arrivalAngleTolerance but no arrivalAngle");
	}
	else
	{
		desiredTargetTravelAngle = 0.0f;
		bool hasDesiredTargetTravelAngle = ReadAngleParam("targetTravelAngle", false, -gf_PI2, gf_PI2, pParams, &desiredTargetTravelAngle);

		targetTravelAngleTolerance = FLT_MAX;
		bool hasTargetTravelAngleTolerance = ReadAngleParam("targetTravelAngleTolerance", false, 0.0f, gf_PI2, pParams, &targetTravelAngleTolerance);

		CRY_ASSERT_MESSAGE(!hasDesiredTargetTravelAngle ||  hasTargetTravelAngleTolerance, "Transition has targetTravelAngle but no targetTravelAngleTolerance");
		CRY_ASSERT_MESSAGE( hasDesiredTargetTravelAngle || !hasTargetTravelAngleTolerance, "Transition has targetTravelAngleTolerance but no targetTravelAngle");

		if (transitionType == eTT_DirectionChange)
		{
			desiredJukeAngle = 0.0f;
			if (!ReadAngleParam("jukeAngle", true, -gf_PI2, gf_PI2, pParams, &desiredJukeAngle)) return false;

			jukeAngleTolerance = FLT_MAX;
			if (!ReadAngleParam("jukeAngleTolerance", true, 0.0f, gf_PI2, pParams, &jukeAngleTolerance)) return false;
		}
		else // if (transitionType == eTT_Start)
		{
			desiredJukeAngle = 0.0f;
			jukeAngleTolerance = FLT_MAX;
		}
	}

	return true;
}