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:30 UTC

[02/28] commons-numbers git commit: NUMBERS-51: API for basic operations.

NUMBERS-51: API for basic operations.


Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/518b58ab
Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/518b58ab
Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/518b58ab

Branch: refs/heads/master
Commit: 518b58abf5f4716c5459fc52c7f52d17ef3d71fd
Parents: 67446f4
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
Authored: Tue Dec 26 02:36:11 2017 +0100
Committer: Gilles Sadowski <gi...@harfang.homelinux.org>
Committed: Tue Dec 26 02:36:11 2017 +0100

----------------------------------------------------------------------
 .../apache/commons/numbers/core/Addition.java   | 39 +++++++++++++++
 .../commons/numbers/core/Multiplication.java    | 39 +++++++++++++++
 .../commons/numbers/core/NativeOperators.java   | 51 ++++++++++++++++++++
 3 files changed, 129 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/518b58ab/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Addition.java
----------------------------------------------------------------------
diff --git a/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Addition.java b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Addition.java
new file mode 100644
index 0000000..dff3887
--- /dev/null
+++ b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Addition.java
@@ -0,0 +1,39 @@
+/*
+ * 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.core;
+
+/**
+ * Addition.
+ *
+ * <T> Type of elements.
+ */
+public interface Addition<T> {
+    /**
+     * Binary addition.
+     *
+     * @param a Element.
+     * @return {@code this + a}.
+     */
+    T add(T a);
+
+    /**
+     * Additive inverse.
+     *
+     * @return {@code -this}.
+     */
+    T negate();
+}

http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/518b58ab/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Multiplication.java
----------------------------------------------------------------------
diff --git a/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Multiplication.java b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Multiplication.java
new file mode 100644
index 0000000..7b1df66
--- /dev/null
+++ b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/Multiplication.java
@@ -0,0 +1,39 @@
+/*
+ * 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.core;
+
+/**
+ * Multiplication.
+ *
+ * <T> Type of elements.
+ */
+public interface Multiplication<T> {
+    /**
+     * Binary multiplication.
+     *
+     * @param a Element.
+     * @return {@code this * a}.
+     */
+    T multiply(T a);
+
+    /**
+     * Multiplicative inverse.
+     *
+     * @return <code>this<sup>-1</sup></code>.
+     */
+    T reciprocal();
+}

http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/518b58ab/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/NativeOperators.java
----------------------------------------------------------------------
diff --git a/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/NativeOperators.java b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/NativeOperators.java
new file mode 100644
index 0000000..fec6cff
--- /dev/null
+++ b/commons-numbers-core/src/main/java/org/apache/commons/numbers/core/NativeOperators.java
@@ -0,0 +1,51 @@
+/*
+ * 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.core;
+
+/**
+ * Operators that can be implemented in a more performant way
+ * using the language constructs.
+ *
+ * <T> Type of elements.
+ */
+public interface NativeOperators<T>
+    extends Addition<T>,
+            Multiplication<T> {
+    /**
+     * Binary subtraction.
+     *
+     * @param a Element.
+     * @return {@code this - a}.
+     */
+    T subtract(T a);
+
+    /**
+     * Binary division.
+     *
+     * @param a Element.
+     * @return {@code this / a}.
+     */
+    T divide(T a);
+
+    /**
+     * Repeated addition.
+     *
+     * @param n Number of times to add {@code this} to itself.
+     * @return {@code n * this}.
+     */
+    T multiply(int n);
+}