Package cc.redberry.core.tensor

Examples of cc.redberry.core.tensor.Sum


        return target;
    }

    private Tensor getDerivative(Tensor target, SimpleTensor var) {
        if (target instanceof Sum) {
            Sum sum = (Sum) target;
            TensorIterator it = sum.iterator();
            Tensor current, derivative;
            Sum res = new Sum();
            while (it.hasNext()) {
                current = it.next();
                derivative = getDerivative(current, var);
                if (derivative == null)
                    continue;//it.remove();
                else res.add(derivative);// if (derivative != current)
                    //it.set(derivative);
            }
            if (res.isEmpty())
                return null;
            return res.equivalent();
        } else if (target instanceof Product) {
            Product product = (Product) target;
            Tensor derivative;
            List<Tensor> resultProducts = new ArrayList<>();
            for (int i = 0; i < product.size(); ++i) {
                derivative = getDerivative(product.getElements().get(i), var);
                if (derivative == null)
                    continue;
                Product clone = (Product) product.clone();
                clone.getElements().remove(i);
                if (!isOne(derivative))
                    clone.add(derivative);
                resultProducts.add(clone.equivalent());
            }
            if (resultProducts.isEmpty())
                return null;
            if (resultProducts.size() == 1)
                return resultProducts.get(0);
            return new Sum(resultProducts);
        } else if (target.getClass() == SimpleTensor.class) {
            if (((SimpleTensor) target).getName() == var.getName())
                return TensorNumber.createONE();
            return null;
        } else if (target.getClass() == TensorField.class) {
View Full Code Here


                if (subs == null)
                    continue;
                Tensor target = integral.target();
                for (Transformation sub : subs)
                    target = sub.transform(target);
                current.setTarget(new Sum(current.target(), target));
                return;
            }
            integrals.add(integral);
        }
View Full Code Here

            }
            return subs;
        }

        Tensor result() {
            return new Sum(integrals);
        }
View Full Code Here

            return TensorNumber.createZERO();
        if (generatedTensors.size() == 1)
            return generatedTensors.get(0);
        if (multiplyFactorial) {
            TensorNumber num = new TensorNumber(new ComplexElement(new NumberFraction(1, generatedTensors.size()), RationalElement.ZERO));
            return new Product(num, new Sum(generatedTensors).equivalent());
        } else
            return new Sum(generatedTensors).equivalent();
    }
View Full Code Here

            break;
        }
    }

    public Tensor result() throws InterruptedException {
        Sum result = new Sum();
        FactorNode node;
        for (ConcurrentGrowingList<FactorNode> list : nodes.values()) {
            ConcurrentGrowingList<FactorNode>.GrowingIterator gi = list.iterator();
            while ((node = gi.next()) != null)
                result.add(new Product(node.cip.result(), node.factor));
        }
        return result.equivalent();
    }
View Full Code Here

    @Override
    public Tensor transform(Tensor tensor) {
        if (!(tensor instanceof Sum))
            return tensor;
        generateCollectedTermsList((Sum) tensor);
        Sum result = new Sum();
        Tensor temp;
        for (CollectedTerm collectedTerm : collectedTerms) {
            temp = collectedTerm.result();
            temp = Transformations.calculateNumbers(temp);
            result.add(temp.equivalent());
        }
        return result.equivalent();
    }
View Full Code Here

                    r.number.add(split.number);
                    continue OUT_FOR;
                }
            result.add(splitNumber(current));
        }
        Sum sum = new Sum();
        for (SplitNumber split : result)
            if (split.number.isOne())
                sum.add(split.nonNumber);
            else
                sum.add(new Product(split.number, split.nonNumber));
        return sum.equivalent();
    }
View Full Code Here

    @Override
    protected Tensor compile(List<Tensor> tensors) {
        if (tensors.isEmpty())
            throw new ParserException("Sum parser get zero size array in complile(List<Tensor> tensors).");
        Tensor result = new Sum(tensors);
        //consistent check
        result.getIndices();
        return result;
    }
View Full Code Here

    public Product nextProduct(int minProductSize) {
        return nextProduct(minProductSize, IndicesFactory.createSimple(nextIndices(nextNameDescriptor().getIndicesTypeStructure())));
    }

    public Sum nextSum(int sumSize, int averageProductSize, Indices indices) {//TODO introduce Poisson
        Sum sum = new Sum();
        for (int i = 0; i < sumSize; ++i)
            sum.add(nextProduct(averageProductSize, indices));
        return sum;
    }
View Full Code Here

TOP

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

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.