Avoid potential round-off error caused by floating point
Change-Id: If1a6266c7a0951441de3fe444663a109bb819056
diff --git a/utils/misc/src/main/java/org/onlab/util/Frequency.java b/utils/misc/src/main/java/org/onlab/util/Frequency.java
index 1ef7113..49eebcb 100644
--- a/utils/misc/src/main/java/org/onlab/util/Frequency.java
+++ b/utils/misc/src/main/java/org/onlab/util/Frequency.java
@@ -72,6 +72,16 @@
* @param value frequency in KHz
* @return instance representing the given frequency
*/
+ public static Frequency ofKHz(long value) {
+ return new Frequency(value * KHZ);
+ }
+
+ /**
+ * Returns an instance representing the specified value in KHz.
+ *
+ * @param value frequency in KHz
+ * @return instance representing the given frequency
+ */
public static Frequency ofKHz(double value) {
return new Frequency((long) (value * KHZ));
}
@@ -82,6 +92,16 @@
* @param value frequency in MHz
* @return instance representing the given frequency
*/
+ public static Frequency ofMHz(long value) {
+ return new Frequency(value * MHZ);
+ }
+
+ /**
+ * Returns an instance representing the specified value in MHz.
+ *
+ * @param value frequency in MHz
+ * @return instance representing the given frequency
+ */
public static Frequency ofMHz(double value) {
return new Frequency((long) (value * MHZ));
}
@@ -92,6 +112,16 @@
* @param value frequency in GHz
* @return instance representing the given frequency
*/
+ public static Frequency ofGHz(long value) {
+ return new Frequency(value * GHZ);
+ }
+
+ /**
+ * Returns an instance representing the specified value in GHz.
+ *
+ * @param value frequency in GHz
+ * @return instance representing the given frequency
+ */
public static Frequency ofGHz(double value) {
return new Frequency((long) (value * GHZ));
}
@@ -102,6 +132,16 @@
* @param value frequency in THz
* @return instance representing the given frequency
*/
+ public static Frequency ofTHz(long value) {
+ return new Frequency(value * THZ);
+ }
+
+ /**
+ * Returns an instance representing the specified value in THz.
+ *
+ * @param value frequency in THz
+ * @return instance representing the given frequency
+ */
public static Frequency ofTHz(double value) {
return new Frequency((long) (value * THZ));
}
diff --git a/utils/misc/src/main/java/org/onlab/util/Spectrum.java b/utils/misc/src/main/java/org/onlab/util/Spectrum.java
index ca01c6e..c47a2ae 100644
--- a/utils/misc/src/main/java/org/onlab/util/Spectrum.java
+++ b/utils/misc/src/main/java/org/onlab/util/Spectrum.java
@@ -24,31 +24,31 @@
public final class Spectrum {
// Center frequency
- public static final Frequency CENTER_FREQUENCY = Frequency.ofTHz(193.1);
+ public static final Frequency CENTER_FREQUENCY = Frequency.ofGHz(193_100);
// O band (original): 1260 to 1360 nm
- public static final Frequency O_BAND_MIN = Frequency.ofTHz(220.436);
- public static final Frequency O_BAND_MAX = Frequency.ofTHz(237.931);
+ public static final Frequency O_BAND_MIN = Frequency.ofGHz(220_436);
+ public static final Frequency O_BAND_MAX = Frequency.ofGHz(237_931);
// E band (extended): 1360 to 1460 nm
- public static final Frequency E_BAND_MIN = Frequency.ofTHz(205.337);
- public static final Frequency E_BAND_MAX = Frequency.ofTHz(220.436);
+ public static final Frequency E_BAND_MIN = Frequency.ofGHz(205_337);
+ public static final Frequency E_BAND_MAX = Frequency.ofGHz(220_436);
// S band (short wavelength): 1460 to 1530 nm
- public static final Frequency S_BAND_MIN = Frequency.ofTHz(195.943);
- public static final Frequency S_BAND_MAX = Frequency.ofTHz(205.337);
+ public static final Frequency S_BAND_MIN = Frequency.ofGHz(195_943);
+ public static final Frequency S_BAND_MAX = Frequency.ofGHz(205_337);
// C band (conventional): 1530 to 1565 nm
- public static final Frequency C_BAND_MIN = Frequency.ofTHz(191.561);
- public static final Frequency C_BAND_MAX = Frequency.ofTHz(195.943);
+ public static final Frequency C_BAND_MIN = Frequency.ofGHz(191_561);
+ public static final Frequency C_BAND_MAX = Frequency.ofGHz(195_943);
// L band (long wavelength): 1565 to 1625 nm
- public static final Frequency L_BAND_MIN = Frequency.ofTHz(184.488);
- public static final Frequency L_BAND_MAX = Frequency.ofTHz(191.561);
+ public static final Frequency L_BAND_MIN = Frequency.ofGHz(184_488);
+ public static final Frequency L_BAND_MAX = Frequency.ofGHz(191_561);
// U band (ultra-long wavelength): 1625 to 1675 nm
- public static final Frequency U_BAND_MIN = Frequency.ofTHz(178.981);
- public static final Frequency U_BAND_MAX = Frequency.ofTHz(184.488);
+ public static final Frequency U_BAND_MIN = Frequency.ofGHz(178_981);
+ public static final Frequency U_BAND_MAX = Frequency.ofGHz(184_488);
private Spectrum() {
}