FPURoundModeSelector.java
/*
* Created on 2008/01/28
* Copyright (C) 2008 Koga Laboratory. All rights reserved.
*
*/
package org.mklab.cga.round;
import org.mklab.nfc.util.RoundMode;
import org.mklab.nfc.util.RoundModeSelector;
/**
* {@link FPU}の計算の丸めモードを選択するためのクラスです。
*
* @author Koga Laboratory
* @version $Revision: 1.2 $, 2008/01/28
*/
public class FPURoundModeSelector implements RoundModeSelector {
/**
* @see org.mklab.nfc.util.RoundModeSelector#getRoundMode()
*/
public RoundMode getRoundMode() {
final int mode = FPU.getRoundMode();
if (mode == FPU.ROUND_NEAR) {
return RoundMode.ROUND_NEAR;
}
if (mode == FPU.ROUND_UP) {
return RoundMode.ROUND_UP;
}
if (mode == FPU.ROUND_DOWN) {
return RoundMode.ROUND_DOWN;
}
if (mode == FPU.ROUND_ZERO) {
return RoundMode.ROUND_ZERO;
}
throw new IllegalArgumentException("Unkown round mode"); //$NON-NLS-1$
}
/**
* @see org.mklab.nfc.util.RoundModeSelector#setRoundMode(org.mklab.nfc.util.RoundMode)
*/
public void setRoundMode(final RoundMode mode) {
switch (mode) {
case ROUND_UP:
FPU.setRoundMode(FPU.ROUND_UP);
break;
case ROUND_DOWN:
FPU.setRoundMode(FPU.ROUND_DOWN);
break;
case ROUND_NEAR:
FPU.setRoundMode(FPU.ROUND_NEAR);
break;
case ROUND_ZERO:
FPU.setRoundMode(FPU.ROUND_ZERO);
break;
}
}
}