1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package com.nickokiss.investor.calc;
22
23 import java.math.BigDecimal;
24
25 import org.apache.commons.lang.builder.EqualsBuilder;
26 import org.apache.commons.lang.builder.HashCodeBuilder;
27
28 import com.nickokiss.investor.util.TkFinConstants;
29
30
31
32
33
34 public class MathCalc {
35 public BigDecimal ZERO = BigDecimal.ZERO;
36 public BigDecimal ONE = BigDecimal.ONE;
37 public BigDecimal TWO = new BigDecimal("2");
38 public BigDecimal TEN = BigDecimal.TEN;
39 public BigDecimal ONE_HUNDRED = new BigDecimal("100");
40
41 public BigDecimal getUnit(int scale) {
42 if (scale >= 0) {
43 return ONE.divide(TEN.pow(scale), scale + 1, BigDecimal.ROUND_HALF_UP);
44 } else {
45 return TEN.pow(scale * (-1));
46 }
47 }
48
49 public BigDecimal div(BigDecimal number, BigDecimal divisor) {
50 return number.divide(divisor, TkFinConstants.DEFAULT_SCALE, TkFinConstants.DEFAULT_ROUNDING_MODE);
51 }
52
53 public BigDecimal invert(BigDecimal number) {
54 return div(ONE, number);
55 }
56
57 public BigDecimal log(BigDecimal base, BigDecimal number) {
58
59 return div(log(number), log(base));
60 }
61
62 public BigDecimal log(BigDecimal number) {
63 return new BigDecimal(Math.log(number.doubleValue()));
64 }
65
66 public BigDecimal pow(BigDecimal base, BigDecimal exponent) {
67 return new BigDecimal(Math.pow(base.doubleValue(), exponent.doubleValue()));
68 }
69
70 public BigDecimal exp(BigDecimal number) {
71 return new BigDecimal(Math.exp(number.doubleValue()));
72 }
73
74 public int hashCode() {
75 return HashCodeBuilder.reflectionHashCode(this);
76 }
77
78 public boolean equals(Object obj) {
79 return EqualsBuilder.reflectionEquals(this, obj);
80 }
81
82 }