Example usage for org.apache.commons.math3.dfp DfpField getOne

List of usage examples for org.apache.commons.math3.dfp DfpField getOne

Introduction

In this page you can find the example usage for org.apache.commons.math3.dfp DfpField getOne.

Prototype

public Dfp getOne() 

Source Link

Document

Get the constant 1.

Usage

From source file:org.orekit.forces.gravity.AssociatedLegendreFunction.java

private Dfp[] getLegendrePolynomial(int n, DfpField dfpField) {

    // get (or create) the list of polynomials for the specified field
    List<Dfp[]> list = LEGENDRE_POLYNOMIALS.get(dfpField.getRadixDigits());
    if (list == null) {
        list = new ArrayList<Dfp[]>();
        list.add(new Dfp[] { dfpField.getOne() // P0(X) = 1
        });/*from w w w . j  a v  a 2 s .  com*/
        list.add(new Dfp[] { dfpField.getZero(), dfpField.getOne() // P1(X) = 0 + 1 * X
        });
    }

    while (list.size() <= n) {

        // build polynomial Pk+1 using recursion formula
        // (k+1) P<sub>k+1</sub>(X) = (2k+1) X P<sub>k</sub>(X) - k P<sub>k-1</sub>(X)
        int k = list.size() - 1;
        Dfp kDfp = dfpField.newDfp(k);
        Dfp kP1Dfp = kDfp.add(dfpField.getOne());
        Dfp ckDfp = kP1Dfp.add(kDfp).divide(kP1Dfp);
        Dfp[] pk = list.get(k);
        Dfp ckM1Dfp = kDfp.divide(kP1Dfp).negate();
        Dfp[] pkM1 = list.get(k - 1);

        Dfp[] pkP1 = new Dfp[k + 2];
        pkP1[0] = ckM1Dfp.multiply(pkM1[0]);
        for (int i = 0; i < k; ++i) {
            if ((k - i) % 2 == 1) {
                pkP1[i + 1] = dfpField.getZero();
            } else {
                pkP1[i + 1] = ckDfp.multiply(pk[i]).add(ckM1Dfp.multiply(pkM1[i + 1]));
            }
        }
        pkP1[k + 1] = ckDfp.multiply(pk[k]);

        list.add(pkP1);

    }

    // retrieve degree n polynomial
    return list.get(n);

}

From source file:org.orekit.forces.gravity.AssociatedLegendreFunction.java

public AssociatedLegendreFunction(boolean normalized, int n, int m, DfpField dfpField) {

    this.m = m;//w ww . j  a  va 2s  .c o  m

    // store mth derivative of the degree n Legendre polynomial
    polynomial = differentiateLegendrePolynomial(getLegendrePolynomial(n, dfpField), m, dfpField);

    if (normalized) {
        // compute normalization coefficient
        Dfp c = dfpField.newDfp(((m == 0) ? 1.0 : 2.0) * (2 * n + 1));
        for (int k = 0; k < m; ++k) {
            c = c.divide(dfpField.newDfp((n + 1 + k) * (n - k)));
        }
        this.normalization = c.sqrt();
    } else {
        this.normalization = dfpField.getOne();
    }

}