X-Git-Url: https://mattmccutchen.net/measurements/measurements.git/blobdiff_plain/3f5430dbc58f8f3ffe9b509bdfe00a6b6d334a37..3a3b5f3c898112a691ed6bfe9e656ccf42207a2b:/src/net/mattmccutchen/measurements/MeasurementMath.java diff --git a/src/net/mattmccutchen/measurements/MeasurementMath.java b/src/net/mattmccutchen/measurements/MeasurementMath.java index 5ea44ab..273365b 100644 --- a/src/net/mattmccutchen/measurements/MeasurementMath.java +++ b/src/net/mattmccutchen/measurements/MeasurementMath.java @@ -71,6 +71,20 @@ public class MeasurementMath { up); } + public static Measurement rootint(Measurement a, int b) { + if (a == null) + return null; + int[] up = new int[Unit.basicUnits.length]; + for (int i = 0; i < Unit.basicUnits.length; i++) { + if (Math.abs(a.unitPowers[i]) % b != 0) + return null; + up[i] = a.unitPowers[i] / b; + } + return new Measurement(Math.pow(a.number, 1.0/b), + a.uncertainty / b * Math.pow(a.number, (1.0/b)-1), + up); + } + public static Measurement pow(Measurement a, Measurement b) { if (a == null || !isPureNumber(a) || b == null || !isPureNumber(b)) return null; @@ -81,6 +95,22 @@ public class MeasurementMath { Measurement.pureNumberUnitPowers); } + public static Measurement exp(Measurement m) { + if (m == null || !isPureNumber(m)) + return null; + return new Measurement(Math.exp(m.number), + m.uncertainty * Math.exp(m.number), + Measurement.pureNumberUnitPowers); + } + + public static Measurement ln(Measurement m) { + if (m == null || !isPureNumber(m)) + return null; + return new Measurement(Math.log(m.number), + m.uncertainty / m.number, + Measurement.pureNumberUnitPowers); + } + public static double cmp(Measurement a, Measurement b) { if (a == null || b == null || !unitsSame(a, b)) return Double.NaN;