Skip to content

Commit 981cb50

Browse files
committed
OngoingOperation.plusV(), OngoingOperation.minusV()
1 parent f3e34a4 commit 981cb50

7 files changed

+88
-33
lines changed

src/java/org/tensorics/core/commons/lang/OngoingOperation.java

+4
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,12 @@
3333
public interface OngoingOperation<T, V> {
3434

3535
T plus(T right);
36+
37+
T plusV(V right);
3638

3739
T minus(T right);
40+
41+
T minusV(V right);
3842

3943
T elementTimes(T right);
4044

src/java/org/tensorics/core/tensor/lang/OngoingDeferredQuantifiedTensorOperation.java

+11
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.tensorics.core.math.operations.BinaryOperation;
2929
import org.tensorics.core.quantity.QuantifiedValue;
3030
import org.tensorics.core.quantity.operations.QuantityOperationRepository;
31+
import org.tensorics.core.tensor.ImmutableScalar;
3132
import org.tensorics.core.tensor.Tensor;
3233
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3334
import org.tensorics.core.tree.domain.Expression;
@@ -61,6 +62,11 @@ public Expression<Tensor<QuantifiedValue<S>>> plus(Expression<Tensor<QuantifiedV
6162
return evaluate(right, pseudoField.addition());
6263
}
6364

65+
@Override
66+
public Expression<Tensor<QuantifiedValue<S>>> plusV(QuantifiedValue<S> right) {
67+
return plus(ResolvedExpression.of(ImmutableScalar.of(right)));
68+
}
69+
6470
public Expression<Tensor<QuantifiedValue<S>>> minus(Tensor<QuantifiedValue<S>> right) {
6571
return minus(ResolvedExpression.of(right));
6672
}
@@ -70,6 +76,11 @@ public Expression<Tensor<QuantifiedValue<S>>> minus(Expression<Tensor<Quantified
7076
return evaluate(right, pseudoField.subtraction());
7177
}
7278

79+
@Override
80+
public Expression<Tensor<QuantifiedValue<S>>> minusV(QuantifiedValue<S> right) {
81+
return minus(ResolvedExpression.of(ImmutableScalar.of(right)));
82+
}
83+
7384
@Override
7485
public Expression<Tensor<QuantifiedValue<S>>> elementTimes(Expression<Tensor<QuantifiedValue<S>>> right) {
7586
return evaluate(right, pseudoField.multiplication());

src/java/org/tensorics/core/tensor/lang/OngoingDeferredTensorOperation.java

+12-27
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.tensorics.core.lang.Tensorics;
3030
import org.tensorics.core.math.ExplicitField;
3131
import org.tensorics.core.math.operations.BinaryOperation;
32+
import org.tensorics.core.tensor.ImmutableScalar;
3233
import org.tensorics.core.tensor.Tensor;
3334
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3435
import org.tensorics.core.tree.domain.Expression;
@@ -72,11 +73,21 @@ public Expression<Tensor<V>> plus(Expression<Tensor<V>> right) {
7273
return evaluate(right, field.addition());
7374
}
7475

76+
@Override
77+
public Expression<Tensor<V>> plusV(V right) {
78+
return plus(ResolvedExpression.of(ImmutableScalar.of(right)));
79+
}
80+
7581
@Override
7682
public Expression<Tensor<V>> minus(Expression<Tensor<V>> right) {
7783
return evaluate(right, field.subtraction());
7884
}
7985

86+
@Override
87+
public Expression<Tensor<V>> minusV(V right) {
88+
return minus(ResolvedExpression.of(ImmutableScalar.of(right)));
89+
}
90+
8091
@Override
8192
public Expression<Tensor<V>> elementDividedByV(V value) {
8293
Tensor<V> right = Tensorics.scalarOf(value);
@@ -90,40 +101,14 @@ public Expression<Tensor<V>> elementTimes(Expression<Tensor<V>> right) {
90101

91102
@Override
92103
public Expression<Tensor<V>> elementTimesV(V value) {
93-
Tensor<V> right = Tensorics.scalarOf(value);
94-
return elementTimes(ResolvedExpression.of(right));
104+
return elementTimes(ResolvedExpression.of(ImmutableScalar.of(value)));
95105
}
96106

97107
@Override
98108
public Expression<Tensor<V>> elementDividedBy(Expression<Tensor<V>> right) {
99109
return evaluate(right, field.division());
100110
}
101111

102-
// /**
103-
// * Calls multiplication operation with question for outupt's {@link
104-
// ShapingStrategy}
105-
// *
106-
// * @param right second tensoric to use
107-
// * @return Possibility to choose {@link ShapingStrategy}s
108-
// */
109-
// public Expression<Tensor<V>> elementTimes(Expression<Tensor<V>> right) {
110-
//
111-
// }
112-
113-
// public Expression<Tensor<V>> elementDividedBy(Expression<Tensor<V>>
114-
// right) {
115-
//
116-
// }
117-
// /**
118-
// * Calls multiplication for single value operation.
119-
// *
120-
// * @param value to be multiplied in first Tensoric
121-
// * @return multiplied tensoric result.
122-
// */
123-
// public Expression<Tensor<V>> elementTimes(V value) {
124-
//
125-
// }
126-
127112
private Expression<Tensor<V>> evaluate(Expression<Tensor<V>> right, BinaryOperation<V> operation) {
128113
return new BinaryOperationExpression<>(new ElementBinaryOperation<V>(operation, optionRegistry), left, right);
129114
}

src/java/org/tensorics/core/tensor/lang/OngoingQuantifiedTensorOperation.java

+15
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.tensorics.core.math.operations.BinaryOperation;
2828
import org.tensorics.core.quantity.QuantifiedValue;
2929
import org.tensorics.core.quantity.operations.QuantityOperationRepository;
30+
import org.tensorics.core.tensor.ImmutableScalar;
3031
import org.tensorics.core.tensor.Tensor;
3132
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3233

@@ -55,11 +56,23 @@ public Tensor<QuantifiedValue<S>> plus(Tensor<QuantifiedValue<S>> right) {
5556
return evaluate(right, operationRepository.addition());
5657
}
5758

59+
@Override
60+
public Tensor<QuantifiedValue<S>> plusV(QuantifiedValue<S> right) {
61+
return plus(ImmutableScalar.of(right));
62+
}
63+
64+
5865
@Override
5966
public Tensor<QuantifiedValue<S>> minus(Tensor<QuantifiedValue<S>> right) {
6067
return evaluate(right, operationRepository.subtraction());
6168
}
6269

70+
@Override
71+
public Tensor<QuantifiedValue<S>> minusV(QuantifiedValue<S> right) {
72+
return minus(ImmutableScalar.of(right));
73+
}
74+
75+
6376
@Override
6477
public Tensor<QuantifiedValue<S>> elementTimes(Tensor<QuantifiedValue<S>> right) {
6578
return evaluate(right, operationRepository.multiplication());
@@ -86,4 +99,6 @@ private Tensor<QuantifiedValue<S>> evaluate(Tensor<QuantifiedValue<S>> right,
8699
return new ElementBinaryOperation<>(operation, operationRepository.environment().options()).perform(left,
87100
right);
88101
}
102+
103+
89104
}

src/java/org/tensorics/core/tensor/lang/OngoingTensorOperation.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ public Tensor<V> plus(Tensor<V> right) {
6464
return evaluate(right, environment.field().addition());
6565
}
6666

67-
public Tensor<V> plus(V right) {
67+
@Override
68+
public Tensor<V> plusV(V right) {
6869
return plus(ImmutableScalar.of(right));
6970
}
7071

@@ -73,7 +74,8 @@ public Tensor<V> minus(Tensor<V> right) {
7374
return evaluate(right, environment.field().subtraction());
7475
}
7576

76-
public Tensor<V> minus(V right) {
77+
@Override
78+
public Tensor<V> minusV(V right) {
7779
return minus(ImmutableScalar.of(right));
7880
}
7981

src/java/org/tensorics/core/tensorbacked/lang/OngoingQuantifiedTensorBackedOperation.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.tensorics.core.math.operations.BinaryOperation;
3030
import org.tensorics.core.quantity.QuantifiedValue;
3131
import org.tensorics.core.quantity.operations.QuantityOperationRepository;
32+
import org.tensorics.core.tensor.ImmutableScalar;
3233
import org.tensorics.core.tensor.Tensor;
3334
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3435
import org.tensorics.core.tensorbacked.Tensorbacked;
@@ -55,12 +56,30 @@ public OngoingQuantifiedTensorBackedOperation(QuantityOperationRepository<S> pse
5556

5657
@Override
5758
public QTB plus(QTB right) {
58-
return evaluate(right.tensor(), pseudoField.addition());
59+
return plusQT(right.tensor());
60+
}
61+
62+
public QTB plusQT(Tensor<QuantifiedValue<S>> tensor) {
63+
return evaluate(tensor, pseudoField.addition());
64+
}
65+
66+
@Override
67+
public QTB plusV(QuantifiedValue<S> right) {
68+
return plusQT(ImmutableScalar.of(right));
5969
}
6070

6171
@Override
6272
public QTB minus(QTB right) {
63-
return evaluate(right.tensor(), pseudoField.subtraction());
73+
return minusQT(right.tensor());
74+
}
75+
76+
public QTB minusQT(Tensor<QuantifiedValue<S>> tensor) {
77+
return evaluate(tensor, pseudoField.subtraction());
78+
}
79+
80+
@Override
81+
public QTB minusV(QuantifiedValue<S> right) {
82+
return minusQT(ImmutableScalar.of(right));
6483
}
6584

6685
@Override

src/java/org/tensorics/core/tensorbacked/lang/OngoingTensorBackedOperation.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.tensorics.core.commons.options.Environment;
2929
import org.tensorics.core.lang.Tensorics;
3030
import org.tensorics.core.math.operations.BinaryOperation;
31+
import org.tensorics.core.tensor.ImmutableScalar;
3132
import org.tensorics.core.tensor.Tensor;
3233
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3334
import org.tensorics.core.tensorbacked.Tensorbacked;
@@ -63,12 +64,20 @@ public OngoingTensorBackedOperation(Environment<V> environment, TB left) {
6364

6465
@Override
6566
public TB plus(TB right) {
66-
return evaluate(right.tensor(), environment.field().addition());
67+
return plusT(right.tensor());
68+
}
69+
70+
public TB plusT(Tensor<V> tensor) {
71+
return evaluate(tensor, environment.field().addition());
6772
}
6873

6974
@Override
7075
public TB minus(TB right) {
71-
return evaluate(right.tensor(), environment.field().subtraction());
76+
return minusT(right.tensor());
77+
}
78+
79+
public TB minusT(Tensor<V> tensor) {
80+
return evaluate(tensor, environment.field().subtraction());
7281
}
7382

7483
/**
@@ -127,4 +136,14 @@ private TB evaluate(Tensor<V> right, BinaryOperation<V> operation) {
127136
return createBackedByTensor(TensorbackedInternals.classOf(left), result);
128137
}
129138

139+
@Override
140+
public TB plusV(V right) {
141+
return plusT(ImmutableScalar.of(right));
142+
}
143+
144+
@Override
145+
public TB minusV(V right) {
146+
return minusT(ImmutableScalar.of(right));
147+
}
148+
130149
}

0 commit comments

Comments
 (0)