Home | History | Annotate | Download | only in dfp

Lines Matching defs:dfp

18 package org.apache.commons.math.dfp;
26 public class DfpField implements Field<Dfp> {
107 /** A {@link Dfp} with value 0. */
108 private final Dfp zero;
110 /** A {@link Dfp} with value 1. */
111 private final Dfp one;
113 /** A {@link Dfp} with value 2. */
114 private final Dfp two;
116 /** A {@link Dfp} with value &radic;2. */
117 private final Dfp sqr2;
119 /** A two elements {@link Dfp} array with value &radic;2 split in two pieces. */
120 private final Dfp[] sqr2Split;
122 /** A {@link Dfp} with value &radic;2 / 2. */
123 private final Dfp sqr2Reciprocal;
125 /** A {@link Dfp} with value &radic;3. */
126 private final Dfp sqr3;
128 /** A {@link Dfp} with value &radic;3 / 3. */
129 private final Dfp sqr3Reciprocal;
131 /** A {@link Dfp} with value &pi;. */
132 private final Dfp pi;
134 /** A two elements {@link Dfp} array with value &pi; split in two pieces. */
135 private final Dfp[] piSplit;
137 /** A {@link Dfp} with value e. */
138 private final Dfp e;
140 /** A two elements {@link Dfp} array with value e split in two pieces. */
141 private final Dfp[] eSplit;
143 /** A {@link Dfp} with value ln(2). */
144 private final Dfp ln2;
146 /** A two elements {@link Dfp} array with value ln(2) split in two pieces. */
147 private final Dfp[] ln2Split;
149 /** A {@link Dfp} with value ln(5). */
150 private final Dfp ln5;
152 /** A two elements {@link Dfp} array with value ln(5) split in two pieces. */
153 private final Dfp[] ln5Split;
155 /** A {@link Dfp} with value ln(10). */
156 private final Dfp ln10;
166 * Note that since the {@link Dfp} class uses 10000 as its radix, each radix
179 * Note that since the {@link Dfp} class uses 10000 as its radix, each radix
193 this.zero = new Dfp(this, 0);
194 this.one = new Dfp(this, 1);
195 this.two = new Dfp(this, 2);
208 sqr2 = new Dfp(this, sqr2String);
210 sqr2Reciprocal = new Dfp(this, sqr2ReciprocalString);
211 sqr3 = new Dfp(this, sqr3String);
212 sqr3Reciprocal = new Dfp(this, sqr3ReciprocalString);
213 pi = new Dfp(this, piString);
215 e = new Dfp(this, eString);
217 ln2 = new Dfp(this, ln2String);
219 ln5 = new Dfp(this, ln5String);
221 ln10 = new Dfp(this, ln10String);
244 /** Get the number of radix digits of the {@link Dfp} instances built by this factory.
254 * Note that the rounding mode is common to all {@link Dfp} instances
331 /** Makes a {@link Dfp} with a value of 0.
332 * @return a new {@link Dfp} with a value of 0
334 public Dfp newDfp() {
335 return new Dfp(this);
340 * @return a new {@link Dfp} with the same value as x
342 public Dfp newDfp(final byte x) {
343 return new Dfp(this, x);
348 * @return a new {@link Dfp} with the same value as x
350 public Dfp newDfp(final int x) {
351 return new Dfp(this, x);
356 * @return a new {@link Dfp} with the same value as x
358 public Dfp newDfp(final long x) {
359 return new Dfp(this, x);
364 * @return a new {@link Dfp} with the same value as x
366 public Dfp newDfp(final double x) {
367 return new Dfp(this, x);
372 * @return a new {@link Dfp} with the same value as d
374 public Dfp newDfp(Dfp d) {
375 return new Dfp(d);
378 /** Create a {@link Dfp} given a String representation.
380 * @return a new {@link Dfp} parsed from specified string
382 public Dfp newDfp(final String s) {
383 return new Dfp(this, s);
386 /** Creates a {@link Dfp} with a non-finite value.
387 * @param sign sign of the Dfp to create
388 * @param nans code of the value, must be one of {@link Dfp#INFINITE},
389 * {@link Dfp#SNAN}, {@link Dfp#QNAN}
390 * @return a new {@link Dfp} with a non-finite value
392 public Dfp newDfp(final byte sign, final byte nans) {
393 return new Dfp(this, sign, nans);
397 * @return a {@link Dfp} with value 0
399 public Dfp getZero() {
404 * @return a {@link Dfp} with value 1
406 public Dfp getOne() {
411 * @return a {@link Dfp} with value 2
413 public Dfp getTwo() {
418 * @return a {@link Dfp} with value &radic;2
420 public Dfp getSqr2() {
425 * @return a {@link Dfp} with value &radic;2 split in two pieces
427 public Dfp[] getSqr2Split() {
432 * @return a {@link Dfp} with value &radic;2 / 2
434 public Dfp getSqr2Reciprocal() {
439 * @return a {@link Dfp} with value &radic;3
441 public Dfp getSqr3() {
446 * @return a {@link Dfp} with value &radic;3 / 3
448 public Dfp getSqr3Reciprocal() {
453 * @return a {@link Dfp} with value &pi;
455 public Dfp getPi() {
460 * @return a {@link Dfp} with value &pi; split in two pieces
462 public Dfp[] getPiSplit() {
467 * @return a {@link Dfp} with value e
469 public Dfp getE() {
474 * @return a {@link Dfp} with value e split in two pieces
476 public Dfp[] getESplit() {
481 * @return a {@link Dfp} with value ln(2)
483 public Dfp getLn2() {
488 * @return a {@link Dfp} with value ln(2) split in two pieces
490 public Dfp[] getLn2Split() {
495 * @return a {@link Dfp} with value ln(5)
497 public Dfp getLn5() {
502 * @return a {@link Dfp} with value ln(5) split in two pieces
504 public Dfp[] getLn5Split() {
509 * @return a {@link Dfp} with value ln(10)
511 public Dfp getLn10() {
515 /** Breaks a string representation up into two {@link Dfp}'s.
517 * but has higher precision than using a single Dfp.
519 Dfp Dfp} instances which sum equals a
521 private Dfp[] split(final String a) {
522 Dfp result[] = new Dfp[2];
551 result[0] = new Dfp(this, new String(buf, 0, sp));
560 result[1] = new Dfp(this, new String(buf));
574 final Dfp highPrecisionOne = new Dfp(highPrecisionField, 1);
575 final Dfp highPrecisionTwo = new Dfp(highPrecisionField, 2);
576 final Dfp highPrecisionThree = new Dfp(highPrecisionField, 3);
578 final Dfp highPrecisionSqr2 = highPrecisionTwo.sqrt();
582 final Dfp highPrecisionSqr3 = highPrecisionThree.sqrt();
589 ln5String = computeLn(new Dfp(highPrecisionField, 5), highPrecisionOne, highPrecisionTwo).toString();
590 ln10String = computeLn(new Dfp(highPrecisionField, 10), highPrecisionOne, highPrecisionTwo).toString();
601 private static Dfp computePi(final Dfp one, final Dfp two, final Dfp three) {
603 Dfp sqrt2 = two.sqrt();
604 Dfp yk = sqrt2.subtract(one);
605 Dfp four = two.add(two);
606 Dfp two2kp3 = two;
607 Dfp ak = two.multiply(three.subtract(two.multiply(sqrt2)));
616 final Dfp ykM1 = yk;
618 final Dfp y2 = yk.multiply(yk);
619 final Dfp oneMinusY4 = one.subtract(y2.multiply(y2));
620 final Dfp s = oneMinusY4.sqrt().sqrt();
625 final Dfp p = one.add(yk);
626 final Dfp p2 = p.multiply(p);
643 public static Dfp computeExp(final Dfp a, final Dfp one) {
645 Dfp y = new Dfp(one);
646 Dfp py = new Dfp(one);
647 Dfp f = new Dfp(one);
648 Dfp fi = new Dfp(one);
649 Dfp x = new Dfp(one);
659 py = new Dfp(y);
726 public static Dfp computeLn(final Dfp a, final Dfp one, final Dfp two) {
729 Dfp x = a.add(new Dfp(a.getField(), -1)).divide(a.add(one));
731 Dfp y = new Dfp(x);
732 Dfp num = new Dfp(x);
733 Dfp py = new Dfp(y);
738 Dfp t = num.divide(den);
743 py = new Dfp(y);