You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2019/10/22 13:45:33 UTC
[commons-numbers] 03/05: Allow "BigFraction" to be used as a field
elements.
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
commit 5c6b4b02f210724008aa2390315142f9eaa2cdd3
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
AuthorDate: Tue Oct 22 11:11:42 2019 +0200
Allow "BigFraction" to be used as a field elements.
---
.../commons/numbers/field/BigFractionField.java | 47 ++++++++++++++++++++++
.../apache/commons/numbers/field/FieldsList.java | 8 +++-
.../commons/numbers/fraction/BigFraction.java | 14 +++++++
3 files changed, 67 insertions(+), 2 deletions(-)
diff --git a/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/BigFractionField.java b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/BigFractionField.java
new file mode 100644
index 0000000..79e563f
--- /dev/null
+++ b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/BigFractionField.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.numbers.field;
+
+import org.apache.commons.numbers.fraction.BigFraction;
+
+/**
+ * {@link BigFraction} field.
+ */
+public class BigFractionField extends AbstractField<BigFraction> {
+ /** Singleton. */
+ private static final BigFractionField INSTANCE = new BigFractionField();
+
+ /** Singleton. */
+ private BigFractionField() {}
+
+ /** @return the field instance. */
+ public static BigFractionField get() {
+ return INSTANCE;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public BigFraction one() {
+ return BigFraction.ONE;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public BigFraction zero() {
+ return BigFraction.ZERO;
+ }
+}
diff --git a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
index a3c9143..a6bc264 100644
--- a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
+++ b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Collections;
import org.apache.commons.numbers.fraction.Fraction;
+import org.apache.commons.numbers.fraction.BigFraction;
/**
* List of fields.
@@ -38,6 +39,10 @@ final class FieldsList {
Fraction.of(13, 4),
Fraction.of(5, 29),
Fraction.of(-279, 11));
+ add(BigFractionField.get(),
+ BigFraction.of(13256093L, 43951044L),
+ BigFraction.of(543016315L, 29L),
+ BigFraction.of(-27930919051L, 11L));
add(FP64Field.get(),
FP64.of(23.45678901),
FP64.of(-543.2109876),
@@ -50,8 +55,7 @@ final class FieldsList {
}
}
- private FieldsList() {
- }
+ private FieldsList() {}
/**
* @param field Field.
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
index c5c3fc3..4405d49 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
@@ -21,6 +21,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import org.apache.commons.numbers.core.ArithmeticUtils;
+import org.apache.commons.numbers.core.NativeOperators;
/**
* Representation of a rational number without any overflow. This class is
@@ -29,6 +30,7 @@ import org.apache.commons.numbers.core.ArithmeticUtils;
public class BigFraction
extends Number
implements Comparable<BigFraction>,
+ NativeOperators<BigFraction>,
Serializable {
/** A fraction representing "0". */
public static final BigFraction ZERO = of(0);
@@ -1290,6 +1292,18 @@ public class BigFraction
return str;
}
+ /** {@inheritDoc} */
+ @Override
+ public BigFraction zero() {
+ return ZERO;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public BigFraction one() {
+ return ONE;
+ }
+
/**
* Parses a string that would be produced by {@link #toString()}
* and instantiates the corresponding object.