IEEERemainder

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

Beschreibung

Die Funktion IEEEremainder berechnet die Remainder-Operation auf zwei Argumente, wie es in dem IEEE 745 Standtard beschrieben ist [1]. Die Funktion erwartet zwei Zahlen und gibt das entsprechende Ergebnis zurück.

Syntax

IEEEremainder(float f1, float f2)

Parameter

  • f1 - Zähler
  • f2 - Nenner

Return Value

  • Gibt den Rest-Wert zurück, wenn f1 durch f2 geteilt wird

Beispiele

Standardfälle

IEEEremainder(4,2)   --> returns 0
IEEEremainder(3,2)   --> returns -1

Benutzung mit Variablen

IEEEremainder([pos=1],[pos=2])
IEEEremainder([var=a],[var=b])

JUnit Tests

[Anzeigen]

@Before 
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("20"));
  placeFillInVariable(3, OMParser.parse("-10"));
		
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("20"));
  placeExerciseVariable("c", OMParser.parse("-10"));
}
	
	
@Test
public void testIEEERemainder(){
  assertTrue(-1 == getEvaluator().getNumberResult("IEEEremainder(3, 2)"));
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder(4, 2)"));
  assertTrue(1 == getEvaluator().getNumberResult("IEEEremainder(10, 3)"));
  assertTrue(-1 == getEvaluator().getNumberResult("IEEEremainder(11, 3)"));
  assertTrue(-1 == getEvaluator().getNumberResult("IEEEremainder(27, 4)"));
  assertTrue(-2 == getEvaluator().getNumberResult("IEEEremainder(28, 5)"));
}
	
@Test //It returns for Example 1.800000000XXX not 1.8
public void testIEEERemainderWithPointNumberResults(){
  assertTrue(1.8 == getEvaluator().getNumberResult("IEEEremainder(17.8, 4)"));   
  assertTrue(1.4 == getEvaluator().getNumberResult("IEEEremainder(17.8, 4.1)"));
  assertTrue(0.1 == getEvaluator().getNumberResult("IEEEremainder(-16.3, 4.1)"));
  assertTrue(1.4 == getEvaluator().getNumberResult("IEEEremainder(17.8, -4.1)"));
  assertTrue(-1.4 == getEvaluator().getNumberResult("IEEEremainder(-17.8, -4.1)"));
}
	
@Test
public void testIEEERemainderAtZero(){
  assertTrue("NaN".equals(getEvaluator().getResultAsEvaluatorString("IEEEremainder(5, 0)")));
}
	
@Test
public void testIEEERemainderWithInput(){
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder([pos=1], 4)")); 
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder([pos=2], [pos=3])"));    
}
	
@Test
public void testIEEERemainderWithVariables(){
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder([var=a], 4)")); 
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder([var=b], [var=c])")); 
}
	
@Test
public void testIEEERemainderWithExpressions(){
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder('15', 'IEEEremainder(10, 3)'"));
  assertTrue(0 == getEvaluator().getNumberResult("IEEEremainder('IEEEremainder(10, 3)', 'IEEEremainder(10, 3)'"));
}
	
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testIEEERemainderWithWrongInputCharacter(){
  getEvaluator().getNumberResult("IEEEremainder(17.8, a)");
}
	
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIEEERemainderWithOneArgument(){
  getEvaluator().getNumberResult("IEEEremainder(8)");
}
	
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIEEERemainderWithThreeArguments(){
  getEvaluator().getNumberResult("IEEEremainder(3, 2, 8)");
}
	
@Test(expected=UndefinedExerciseVariableException.class)
public void testIEEERemainderWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("IEEEremainder('[var=j]', '3')");
}
	
@Test(expected=UndefinedFillInVariableException.class)
public void testIEEERemainderWithMissingInput(){
  getEvaluator().getNumberResult("IEEEremainder('[pos=42]', '3')");
}

Hinweise