Package cc.redberry.core.number

Examples of cc.redberry.core.number.Complex


    @Override
    public Complex parse(String expression, NumberParser<Complex> parser) {
        if (expression.equals("I"))
            return Complex.IMAGINARY_UNIT;
        try {
            return new Complex(new BigInteger(expression));
        } catch (NumberFormatException ignored) {
        }
        try {
            return new Complex(Double.parseDouble(expression));
        } catch (NumberFormatException exception) {
            return null;
        }
    }
View Full Code Here


     * @param tensor tensor
     * @return split
     */
    public static Split splitIndexless(final Tensor tensor) {
        if (tensor.getIndices().size() == 0) {//case 2*a*b*c
            Complex complex;
            Tensor factor;
            if (tensor instanceof Product) {
                Product product = (Product) tensor;
                complex = product.factor;
                if (complex == Complex.ONE)//case a*b
 
View Full Code Here

    static Tensor power(Tensor argument, Tensor power) {
        //TODO improve Complex^Complex
        if (argument instanceof Complex && power instanceof Complex) {

            Complex a = (Complex) argument;
            Complex p = (Complex) power;
            Complex result = Exponentiation.exponentiateIfPossible(a, p);

            if (result != null)
                return result;
        }
        if (TensorUtils.isOne(power))
View Full Code Here

            return new DummyIndexMappingProvider(opu);
        if (!(from.get(1) instanceof Complex))
            return IndexMappingProvider.Util.EMPTY_PROVIDER;

        assert to.get(1) instanceof Complex;
        Complex exponent = (Complex) from.get(1);
        if (NumberUtils.isIntegerEven(exponent))
            return new DummyIndexMappingProvider(opu);
        if (NumberUtils.isIntegerOdd(exponent))
            return new MinusIndexMappingProvider(opu);
View Full Code Here

    private ParserNumber() {
    }

    @Override
    public ParseToken parseToken(String expression, cc.redberry.core.parser.Parser parser) {
        Complex value;
        try {
            value = NumberParser.COMPLEX_PARSER.parse(expression);
        } catch (NumberFormatException e) {
            return null;
        }
View Full Code Here

        Boolean compare = TensorUtils.compare1(old, tensor);
        if (compare == null)
            return super.set(i, tensor);

        Complex newFactor = factor;
        if (compare) {
            tensor = Tensors.negate(tensor);
            newFactor = factor.negate();
            newFactor = getDefaultReference(newFactor);
        }
View Full Code Here

        }
    }

    @Override
    protected Tensor remove1(int[] positions) {
        Complex newFactor = factor;
        if (factor != Complex.ONE) {
            if (positions[0] == 0) {
                newFactor = Complex.ONE;
                positions = Arrays.copyOfRange(positions, 1, positions.length);
            }
View Full Code Here

    }

    @Override
    protected Tensor select1(int[] positions) {
        int add = factor == Complex.ONE ? 0 : 1;
        Complex newFactor = Complex.ONE;
        List<Tensor> newIndexless = new ArrayList<>(), newData = new ArrayList<>();
        for (int position : positions) {
            position -= add;
            if (position == -1)
                newFactor = factor;
View Full Code Here

        StringBuilder sb = new StringBuilder();
        char operatorChar = format == OutputFormat.LaTeX ? ' ' : '*';

        if (factor.isReal() && factor.getReal().signum() < 0) {
            sb.append('-');
            Complex f = factor.abs();
            if (!f.isOne())
                sb.append(((Tensor) f).toString(format, Product.class)).append(operatorChar);
        } else if (factor != Complex.ONE)
            sb.append(((Tensor) factor).toString(format, Product.class)).append(operatorChar);

        int i = 0, size = factor == Complex.ONE ? size() : size() - 1;
View Full Code Here

                if (withCoefficients) {
                    coefficient = CC.generateNewSymbol();
                    coefficients.add((SimpleTensor) coefficient);
                } else coefficient = Complex.ONE;

                term = Tensors.multiply(coefficient, term, term instanceof Sum ? new Complex(new Rational(1, term.size())) : Complex.ONE);
            } else if (withCoefficients)
                term = FastTensors.multiplySumElementsOnFactors((Sum) term);
            result.put(term);
        }
        this.result = indices.getSymmetries().isTrivial() ? result.build() : symmetrize(result.build());
View Full Code Here

TOP

Related Classes of cc.redberry.core.number.Complex

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.