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 2018/05/19 15:13:32 UTC
[04/28] commons-numbers git commit: NUMBERS-51: Field API.
NUMBERS-51: Field API.
Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/ec180800
Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/ec180800
Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/ec180800
Branch: refs/heads/master
Commit: ec180800ccec8c7929de2ab402fdc614670471e3
Parents: c098401
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
Authored: Tue Dec 26 02:44:26 2017 +0100
Committer: Gilles Sadowski <gi...@harfang.homelinux.org>
Committed: Tue Dec 26 02:44:26 2017 +0100
----------------------------------------------------------------------
commons-numbers-field/pom.xml | 14 ++++
.../commons/numbers/field/AbstractField.java | 69 ++++++++++++++++
.../org/apache/commons/numbers/field/Field.java | 83 ++++++++++++++++++++
pom.xml | 26 +++---
4 files changed, 180 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/ec180800/commons-numbers-field/pom.xml
----------------------------------------------------------------------
diff --git a/commons-numbers-field/pom.xml b/commons-numbers-field/pom.xml
index 1dba08e..061351d 100644
--- a/commons-numbers-field/pom.xml
+++ b/commons-numbers-field/pom.xml
@@ -42,4 +42,18 @@
<numbers.parent.dir>${basedir}/..</numbers.parent.dir>
</properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-numbers-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-numbers-core</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
</project>
http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/ec180800/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/AbstractField.java
----------------------------------------------------------------------
diff --git a/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/AbstractField.java b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/AbstractField.java
new file mode 100644
index 0000000..b5a4ad0
--- /dev/null
+++ b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/AbstractField.java
@@ -0,0 +1,69 @@
+/*
+ * 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.core.NativeOperators;
+
+/**
+ * Boiler-plate code for concrete implementations of {@link Field}.
+ *
+ * @param <T> Type of the field elements.
+ */
+public abstract class AbstractField<T extends NativeOperators<T>>
+ implements Field<T> {
+ /** {@inheritDoc} */
+ @Override
+ public T add(T a, T b) {
+ return a.add(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T subtract(T a, T b) {
+ return a.subtract(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T negate(T a) {
+ return a.negate();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T multiply(int n, T a) {
+ return a.multiply(n);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T multiply(T a, T b) {
+ return a.multiply(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T divide(T a, T b) {
+ return a.divide(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public T reciprocal(T a) {
+ return a.reciprocal();
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/ec180800/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/Field.java
----------------------------------------------------------------------
diff --git a/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/Field.java b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/Field.java
new file mode 100644
index 0000000..0171811
--- /dev/null
+++ b/commons-numbers-field/src/main/java/org/apache/commons/numbers/field/Field.java
@@ -0,0 +1,83 @@
+/*
+ * 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;
+
+/**
+ * Interface representing a <a href="http://mathworld.wolfram.com/Field.html">field</a>.
+ *
+ * @param <T> Type of the field elements.
+ */
+public interface Field<T> {
+ /**
+ * @param a Field element.
+ * @param b Field element.
+ * @return {@code a + b}.
+ */
+ T add(T a, T b);
+
+ /**
+ * @param a Field element.
+ * @param b Field element.
+ * @return {@code a - b}.
+ */
+ T subtract(T a, T b);
+
+ /**
+ * @param a Field element.
+ * @return {@code -a}.
+ */
+ T negate(T a);
+
+ /**
+ * @param a Field element.
+ * @param n Number of times {@code a} must be added to itself.
+ * @return {@code n a}.
+ */
+ T multiply(int n, T a);
+
+ /**
+ * @param a Field element.
+ * @param b Field element.
+ * @return {@code a * b}.
+ */
+ T multiply(T a, T b);
+
+ /**
+ * @param a Field element.
+ * @param b Field element.
+ * @return <code>a * b<sup>-1</sup></code>.
+ */
+ T divide(T a, T b);
+
+ /**
+ * @param a Field element.
+ * @return <code>a<sup>-1</sup></code>.
+ */
+ T reciprocal(T a);
+
+ /**
+ * @return the field element {@code 1} such that for all {@code a},
+ * {@code 1 * a == a}.
+ */
+ T one();
+
+ /**
+ * @return the field element {@code 0} such that for all {@code a},
+ * {@code 0 + a == a}.
+ */
+ T zero();
+}
http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/ec180800/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ba4dc6a..aceccb0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,18 +74,19 @@
<dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-numbers-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-numbers-core</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-numbers-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-numbers-core</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -602,6 +603,7 @@
<module>commons-numbers-gamma</module>
<module>commons-numbers-combinatorics</module>
<module>commons-numbers-arrays</module>
+ <module>commons-numbers-field</module>
</modules>
</project>