Package cc.redberry.core.tensor

Examples of cc.redberry.core.tensor.Sum$TensorWrapper


    private Fraction sumPair(Fraction f1, Tensor f2) {
        if (f2 instanceof Fraction) {
            Fraction f2_ = (Fraction) f2;
            Struct s = calcStruct(f1.getDenominator(), f2_.getDenominator());
            return new Fraction(
                    new Sum(
                    s.firstMultiplicand == null ? f1.getNumerator() : new Product(f1.getNumerator(), s.firstMultiplicand),
                    s.secondMultiplicand == null ? f2_.getNumerator() : new Product(f2_.getNumerator(), s.secondMultiplicand)),
                    s.denominator);
        }
        Tensor f = new Product(f1.getDenominator().clone(), f2);
        return new Fraction(new Sum(f1.getNumerator(), f), f1.getDenominator());
    }
View Full Code Here


        if (!(tensor instanceof Fraction))
            return tensor;
        Fraction fraction = (Fraction) tensor;
        if (!(fraction.getNumerator() instanceof Sum))
            return tensor;
        Sum numerator = (Sum) fraction.getNumerator();
        Sum result = new Sum();
        TensorIterator iterator = numerator.iterator();
        result.add(new Fraction(iterator.next(), fraction.getDenominator()));
        while (iterator.hasNext())
            result.add(new Fraction(iterator.next(), fraction.getDenominator().clone()));
        return result;
    }
View Full Code Here

                denominator.add(firstContent.get(j));
            }

        Tensor summond1 = new Product(firstProduct);
        Tensor summond2 = new Product(secondProduct);
        return new Fraction(new Sum(summond1, summond2), denominator);
    }
View Full Code Here

            } else
                denom.add(firstFracContent.get(i));
        Tensor denominator = is ? first.getDenominator() : new Product(denom.clone(), second.getDenominator());
        Tensor summand1 = is ? first.getNumerator() : new Product(first.getNumerator(), second.getDenominator());
        Tensor summand2 = new Product(second.getNumerator().clone(), denom);
        return new Fraction(new Sum(summand1, summand2), denominator);
    }
View Full Code Here

            boolean resultIsProduct = isProduct(resultFracD);
            boolean fIsProduct = isProduct(fD);

            if (!(resultIsProduct || fIsProduct))
                if (TTest.testParity(resultFracD, fD))
                    resultFrac = new Fraction(new Sum(resultFracN, fN), resultFracD);
                else {
                    Tensor summond1 = new Product(resultFracN, fD);
                    Tensor summond2 = new Product(fN, resultFracD.clone());

                    Tensor newNumerator = new Sum(summond1, summond2);
                    Tensor newDenumerator = new Product(resultFracD.clone(), fD);

                    resultFrac = new Fraction(newNumerator, newDenumerator);
                }
            else if (resultIsProduct ^ fIsProduct)
                if (resultIsProduct)
                    resultFrac = getSumWithProductAndSimpleDenominator(resultFrac, f);
                else
                    resultFrac = getSumWithProductAndSimpleDenominator(f, resultFrac);
            else
                if (((Product) resultFracD).size() >= ((Product) fD).size())
                    resultFrac = getSumWithProductDenominator(resultFrac, f);
                else
                    resultFrac = getSumWithProductDenominator(f, resultFrac);


        }

        if (!listTensor.isEmpty()) {
            Tensor simpleSum = new Sum(listTensor);
            Tensor summand1 = new Product(simpleSum, resultFrac.getDenominator().clone());
            Tensor summand2 = resultFrac.getNumerator();
            Tensor result = new Fraction(new Sum(summand1, summand2), resultFrac.getDenominator());
            return result;
        }
        return resultFrac;
    }
View Full Code Here

            return equals.result();
        if (!equals.initialized())
            return symbols.result();
        Tensor s1 = symbols.result();
        Tensor s2 = equals.result();
        return new Sum(s1, s2);
    }
View Full Code Here

        return closed;
    }

    @Override
    public final Tensor result() {
        Sum sum = new Sum();
        for (Split sp : collectedTerms)
            sum.add(sp.tensorEquvivalent());
        Tensor result = sum.equivalent();
        result.setParent(CC.getRootParentTensor());
        return result;
    }
View Full Code Here

        final Integral integral = (Integral) tensor;
        final Tensor target = integral.target();
        final SimpleTensor[] vars = integral.vars();
        if (!(target instanceof Sum))
            return tensor;
        Sum result = new Sum();
        for (Tensor summand : target)
            result.add(new Integral(summand.clone(), clone(vars)));
        return result;
    }
View Full Code Here

        ArrayList<Product> products = new ArrayList<>();
        ArrayList<Product> newProducts;
        products.add(new Product());
        Tensor t = null;
        int oldSize, i;
        Sum sum;
        boolean sumsExists = false;
        while (productIterator.hasNext()) {
            t = productIterator.next();
            if (t instanceof Sum && !except.is(t)) {
                sumsExists = true;
                sum = (Sum) t;
                oldSize = products.size();
                newProducts = new ArrayList<>(oldSize * sum.size());
                i = 0;
                for (Tensor sumElement : sum)
                    for (int j = 0; j < oldSize; ++j) {
                        newProducts.add((Product) products.get(j).clone());
                        newProducts.get(i++).add(sumElement.clone());
                    }
                products = newProducts;
            } else
                for (Product product : products)
                    product.add(t.clone());
        }
        if (sumsExists)
            return new Sum(products);
//            return new Sum(products).clone();
        return tensor;
    }
View Full Code Here

                equals.put(t);
        Tensor s1 = symbols.result();
        Tensor s2 = equals.result();
        symbols.put(null);
        equals.put(null);
        return new Sum(s1, s2);
    }
View Full Code Here

TOP

Related Classes of cc.redberry.core.tensor.Sum$TensorWrapper

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.